rrh4869

开发工具

python3.7

itchat

 

原理讲解

做一个能够与人交流的机器人有很多种方法,最简单的莫过于使用他人提供的接口。

我们这里以图灵机器人为例,演示这一功能。

图灵机器人简单而言就是以一定的规则给图灵的服务器发送数据包(包含你对他说的话)

图灵的服务器会以一定的规则给你返回数据包(包含他回复你的话),图灵机器人的Tyling Key的获取的帮助文档http://www.tuling123.com/help/h_cent_webapi.jhtml

你需要一个Tuling Key来告诉图灵服务器你有权和他对话,我这里免费提供一些:

8edce3ce905a4c1dbb965e6b35c3834d
eb720a8970964f3f855d863d24406576
1107d5601866433dba9599fac1bc0083
71f28bf79c820df10d39b4074345ef8c

下面我做一个配置图灵机器人的简单介绍

请求方式

HTTP POST

请求参数

请求参数格式为 json

 

发送的规则简而言之是这样的:

{
	"reqType":0,
    "perception": {
        "inputText": {
            "text": msg,
        }
    },
    "userInfo": {
        "apiKey": KEY,
        "userId": uid,
    }
}

其中userId是用户的标志,让机器人知道你是你。(也就是一个Tuling Key可以有多个用户)

而返回的内容基本是这样的:

{
\'intent\': {\'code\': xxx}, 
\'results\': [{\'groupType\': 0, \'resultType\': \'text\', \'values\': {\'text\': \'xxx\'}}]
}

我们需要的内容就在values键的text键里面。

这里我们使用requests包完成整个操作(已经包含在itchat包的安装中了)。

最后值得一提的就是这是一个post请求,那么直接上代码应该比我絮絮叨叨的说要直观很多。

# -*- coding: utf-8 -*-
import json
import time
import requests
import itchat

#Turling_key
KEY = \'54d7869f48ff4f1f8d856d52d3c7cdf2\'

def get_response(msg):
    \'\'\'
    发送数据包给图灵服务器
    \'\'\'
    apiUrl = \'http://openapi.tuling123.com/openapi/api/v2\'
    #动态生成userid
    uid = \'rrh\'
    #字典转json
    data ={
    "reqType":0,
    "perception": {
        "inputText": {
            "text": msg,
        }
    },
    "userInfo": {
        "apiKey": KEY,
        "userId": uid,
    }
}
    
    try:
        data_json = json.dumps(data)
        response = requests.post(apiUrl,data=data_json).json()
        print(response)
        return response[\'results\'][0][\'values\'][\'text\']
    except:
        return

#处理消息并自动回复
@itchat.msg_register(itchat.content.TEXT)
def tuling_reply(msg):
    #默认回复
    defaultReply = \'【{}】,这句话俺听不懂啦\'.format(msg[\'Text\'])
    FromUserName = msg[\'FromUserName\']
    reply = get_response(msg[\'Text\'])

    if reply:
        itchat.send(reply,toUserName=FromUserName)
    else:
        itchat.send(defaultReply,toUserName=FromUserName)


if __name__ == \'__main__\':
    itchat.auto_login(hotReload=True)
    itchat.run()

分类:

技术点:

相关文章:

  • 2021-10-16
  • 2021-07-07
  • 2021-10-18
  • 2021-05-24
  • 2021-04-11
  • 2021-12-14
  • 2021-10-24
猜你喜欢
  • 2021-11-17
  • 2021-12-14
  • 2021-08-27
  • 2021-11-30
  • 2021-11-30
相关资源
相似解决方案