python+微信+腾讯智能闲聊

继上一篇调用图灵机器人的玩法后,不满于每天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",上图最重要:
python+微信+腾讯智能闲聊_第1张图片
腾讯智能闲聊的智能化程度也挺高,日常闲聊也没有太大问题,有些回答甚至比图灵机器人还要讨喜,各有千秋吧。最关键的是免费!不限额!
尽管wxpy功能很强大,但是部分用户无法登陆微信网页版,也就无法体验wxpy的服务了,可以说是很可惜了!

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

你可能感兴趣的:(python+微信+腾讯智能闲聊)