热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python微信集成_python+微信+腾讯智能闲聊

继上一篇调用图灵机器人的玩法后,不满于每天100条的限额,于是!!!又找到了腾讯云产品-智能闲聊,

继上一篇调用图灵机器人的玩法后,不满于每天100条的限额,于是!!!又找到了腾讯云产品-智能闲聊,免费!无限额!

申请智能闲聊

1.构建调用api文件:

由于wxpy库没有集成腾讯智能闲聊的api,我们需要自己配置接口,所以会比调用图灵机器人显得麻烦。上python,下面是api.py的内容,主要用于向腾讯云发送请求,并获取回复内容,相当于一个调用api。如下api.py:

###api.py###

import hashlib

import time

import requests

import random

import string

from urllib.parse import quote

def curlmd5(src):

m = hashlib.md5(src.encode('UTF-8'))

return m.hexdigest().upper() # 将得到的MD5值所有字符转换成大写

def get_params(plus_item): #用于返回request需要的data内容

global params

t = time.time() #请求时间戳(秒级),(保证签名5分钟有效)

time_stamp=str(int(t))

nonce_str = ''.join(random.sample(string.ascii_letters + string.digits, 10)) # 请求随机字符串,用于保证签名不可预测

app_id='2135462408' # 修改成自己的id

app_key='w3Lv6zsb95T89fay' # 修改成自己的key

params = {'app_id':app_id,

'question':plus_item,

'time_stamp':time_stamp,

'nonce_str':nonce_str,

'session':'10000'

}

sign_before = ''

for key in sorted(params): #要对key排序再拼接

sign_before += '{}={}&'.format(key,quote(params[key], safe='')) # 拼接过程需要使用quote函数形成URL编码

sign_before += 'app_key={}'.format(app_key) # 将app_key拼接到sign_before后

sign = curlmd5(sign_before)

params['sign'] = sign # 对sign_before进行MD5运算

return params #得到request需要的data内容

def get_content(plus_item):

global payload,r

url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat" # 聊天的API地址

plus_item = plus_item.encode('utf-8')

payload = get_params(plus_item)

r = requests.post(url,data=payload) #带参请求api地址

result=r.json()["data"]["answer"]

return result #获得返回内容

2.与智能闲聊进行聊天

终于将前提基础工作完成了,调用api构建好后,调用智能闲聊也就很简单了,调用wxpy库,初始化和构建自动发送、回复函数和上一章都一样。为了简化工作,本例中只实现自动回复功能,也是最常用的功能。依然上ai.py的代码,用于聊天。ai.py如下:

from wxpy import *

from ai import * #导入上一步构建的ai.py文件

bot = Bot()

friend = bot.friends().search('AIbot')[0]

@bot.register(friend)

def auto_reply(msg):

a=msg.text

answer=get_content(a)

if answer=='': #防止返回内容为空

for i in range(2):

time.sleep(2)

answer=get_content(a)

if answer!='' and answer!="emmmm,我不是很懂你的意思":

break

else:

answer="emmmm,我不是很懂你的意思"

return '[Stephen] {} '.format(answer)

bot.join()

由于访问腾讯api的时候,偶尔会返回空内容,为了避免这种情况,当返回空时,隔2s再请求一次,这般重复3次,如果依然返回空,则自动将返回值设为"emmmm,我不是很懂你的意思"。

3.效果展示:

ps:我已将智能闲聊的名字设为了"Stephen",上图最重要:

腾讯智能闲聊的智能化程度也挺高,日常闲聊也没有太大问题,有些回答甚至比图灵机器人还要讨喜,各有千秋吧。最关键的是免费!不限额!

尽管wxpy功能很强大,但是部分用户无法登陆微信网页版,也就无法体验wxpy的服务了,可以说是很可惜了!

如有错误或建议,请在评论处指出!



推荐阅读
author-avatar
港乄漫天地
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有