python轻松实现与图灵机器人的人机交互
要实现与图灵机器人的交互,首先就要调用图灵机器人的API接口,我们首先创建一个机器人,步骤如下:
- 到图灵机器人官网,登陆注册成为用户。
- 登陆后点击创建机器人,每个用户可免费申请5个机器人,创建成功后如图所示:点击机器人可以进入机器人设置页面。但现在我们不必关心机器人的设置。
下一步就是调用机器人的API接口,首先可以查看机器人的API文档,其中编码、接口、请求方式都是特别重要的:请求示例如下:
{"reqType":0,"perception": {"inputText": {"text": "附近的酒店"},"inputImage": {"url": "imageUrl"},"selfInfo": {"location": {"city": "北京","province": "北京","street": "信息路"}}},"userInfo": {"apiKey": "","userId": ""}
}
我们可以看到请求参数是JSON类型,其中perception和userInfo是必填参数,如图:perception里包含了用户输入信息,在这里我们只需要关心inputText字段,里面包含了用户发送的文字信息;userInfo里面包含了用户参数,其中apiKey是指定每个机器人的唯一参数,相当于机器人ID,我们可以在机器人管理页面将apiKey复制下来:userId可以随意指定,它用来保存用户会话。
接下来我们看看返回值,这是官方文档的返回示例:
{"intent": {"code": 10004,"intentName": "","actionName": "","parameters": {"nearby_place": "酒店"}},"results": [{"groupType": 1,"resultType": "url","values": {"url": "http://m.elong.com/hotel/0101/nlist/#indate=2016-12-10&outdate=2016-12-11&keywords=%E4%BF%A1%E6%81%AF%E8%B7%AF"}},{"groupType": 1,"resultType": "text","values": {"text": "亲,已帮你找到相关酒店信息"}}]
}
其中比较重要的字段就是code和text字段,code是响应状态码,text是返回值,更多信息可以查看图灵机器人官方的API文档。
要实现与机器人的交互,首先就要定义好接口,我们可以将调用接口的函数封装在一个类里面,这样在后续使用这个接口的时候将会非常方便。但是在那之前,我们需要先测试接口的可行性,可以编写如下代码:
import requests
import jsonurl = 'http://openapi.tuling123.com/openapi/api/v2'
def send_msg(userid, msg):'''向机器人发送消息,并返回结果'''base_data = { #构造一个字典参数"perception": {"inputText": {"text": msg}},"userInfo": {"apiKey": '这里改为自己的apikey',"userId": userid}}headers = { #构造一个请求头,其中定义了传输格式'content-type': 'application/json'}data = json.dumps(base_data).encode('utf8')#将字典对象转化为JSON对象,再编码为uft-8resp = requests.post(url, data=data)#发送请求print(resp.text)#输出结果if __name__ == '__main__':send_msg('jude', '你是谁')
在这里我们做了一个简单的示例,然后再看看输出结果:需要注意的是,返回结果是一个str类型对象,意味着如果我们要解析结果,可以用json()方法将其转化为字典。
接下来我们将其封装成一个类,其中包含发送请求方法和解析返回值的方法,如下所示:
import requests
import jsonclass Robot():def __init__(self):'''先初始化请求URL和apikey'''self.url = 'http://openapi.tuling123.com/openapi/api/v2'self.apikey = '这里换成自己的apikey'def send_msg(self, userid, msg):'''向机器人发送消息,并返回结果'''base_data = { #构造一个字典参数"perception": {"inputText": {"text": msg}},"userInfo": {"apiKey": self.apikey,"userId": userid}}headers = { #构造一个请求头,其中定义了传输格式'content-type': 'application/json'}data = json.dumps(base_data).encode('utf8')#将字典对象转化为JSON对象,再编码为uft-8resp = requests.post(self.url, data=data)#发送请求self.msg_analysis(resp)#解析结果def msg_analysis(self, resp):'''解析返回结果'''resp_dic = resp.json()#将结果转化为字典类型,方便解析if resp_dic['intent']['code'] == 10004:#如果返回成功状态码,才进行下列操作self.result_type = resp_dic['results'][0]['resultType']self.result_text = resp_dic['results'][0]['values']['text']#将解析的结果保存为对象属性
经过封装之后,就可以方便地调用了,从而实现人机交互:
if __name__ == '__main__':robot = Robot()#先创建一个接口对象while True:msg = input('我:')#控制台输入robot.send_msg('jude', msg)#发送数据并解析结果print('图灵机器人:' + robot.result_text + '\n' + robot.result_type)#打印结果
程序运行结果如下:
我:你是谁啊
图灵机器人:我是图灵机器人,就是那位人见人爱花见花开的图灵机器人。
text
我:你好
图灵机器人:啦啦啦,每天都是好心情
text
我:
这样就实现了简单的人机交互,如果想要了解更多的功能,请查看图灵机器人官方文档。
如果你觉得文章对你有帮助,可以关注微信公众号“机器图腾”,里面有免费的网络爬虫教程以及python学习资源,每周不定时更新一些有趣的python小项目。你也可以继续浏览我的另一篇相似文章python如何在个人QQ后端部署图灵机器人。有趣的事,python从不缺席。
python轻松实现与图灵机器人的人机交互相关推荐
- python编程控制机器人_基于Python开发的微信图灵机器人
在过去的几个月中,由于在新生群中回答问题费时费力,同时又有许多重复而又有固定答案的回答,我受到一些知乎文章的启发,维护了一个基于itchat的群聊机器人.从刚开始接入图灵机器人时只会尬聊的机器人,之后 ...
- Python免费快速接入图灵机器人接口
图灵机器人相信大家并不陌生.通过图灵机器人,开发者和厂商能够以高效的方式创建专属的聊天机器人.客服机器人.领域对话问答机器人.儿童/服务机器人等.下面给大家见到那介绍如何通过Python(2.7版本) ...
- Python使用微信接入图灵机器人
1.wxpy库介绍 wxpy 在 itchat 的基础上,通过大量接口优化提升了模块的易用性,并进行丰富的功能扩展. 文档地址:https://wxpy.readthedocs.io 从 PYPI 官 ...
- Python 技术篇 - 微信调用图灵机器人的api接口实现自动回复实例演示。图灵机器人的注册与使用
这是一个把接收的消息传给图灵机器人,再把图灵机器人回复的消息传回来的函数. def get_response(msg):apiUrl = 'http://www.tuling123.com/opena ...
- python 最简单的图灵机器人
机器人自己聊天 import requestsKEY = '21b28d8092b346c7a4308a6a2c142fd9' #请自己重新注册一个.def get_response(msgtext) ...
- python如何在个人QQ后端部署图灵机器人
因为腾讯官方加强了各方面的检查,目前许多QQAPI接口库都已经不能用了,但最近想写一个QQ机器人,查找了很多资料,却不得要领.今天终于找到了一个神奇的插件–酷Q,它可以将qq信息转成http形式.发送 ...
- 图灵机器人之Python实现
学python也有一段时间了,最初也是被python简洁的理念所吸引入了这坑.所以每次用python写程序都是以解决问题为目标,不怎么喜欢做封装,感觉解决一件小事,十分钟的事非要花半小时封装个类反而违 ...
- Python|Python引用图灵机器人api
欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 欢迎加入团队圈子!与作者面对面!直接点击! 1.引入 在现在这 ...
- 机器人编程语言python-个人微信接入图灵机器人(基于Python)
开发环境:Ubuntu14.04 编程语言:Python2.7 1.在图灵机器人官网(http://www.tuling123.com)注册账号,创建机器人,如果只是学习的话,可以使用免费版,一个账号 ...
最新文章
- mysql安装文件瘦身_MySQL瘦身
- Android运行时权限
- 服务端统一时间戳 boost::date_time UTC
- [转]【Android】9-patch图片以及例子说明
- 洛谷 P2765 魔术球问题 (dinic求最大流,最小边覆盖)
- 建立a8 linux开发环境,Fedora 14下建立 omap3530 开发环境 - 交叉编译器
- MQTT 控制报文类型、功能及格式(报文结构) - 第2章
- shell脚本实例(随堂笔记)
- What are your list of must know programming proverbs ?
- .java中jar_java中的jar
- Linux C 语言内联汇编
- 伯努利贝叶斯分类算法
- 1.1Vue安装以及使用(node安装)
- Warning from https://repo.packagist.org: Support for Composer 1 is deprecate
- 【手把手教你】搭建自己的量化分析数据库
- python闰年统计_利用Python写一个闰年计算器和每月天数计算器
- 探店视频批量剪辑神器,批量生成音画同步探店视频,好物视频和团购达人视频
- RL论文阅读【一】Playing Atari with Deep Reinforcement Learning
- 10个Python图像免费处理工具,非常全了
- 厚基础Linux——第二周作业
热门文章
- 【调剂】2021年南昌航空大学无损检测技术教育部重点实验室卢超教授团队招优秀调剂研究生...
- 对于pytorch中nn.CrossEntropyLoss()与nn.BCELoss()的理解和使用
- 指尖江湖鸿蒙抽奖,剑网3指尖江湖鸿蒙始清活动怎么玩
- ELK 收集不同来源的日志并做区分
- php特性之intval学习小记
- html中正确给table加边框
- Application.java启动项位置不对报错
- iText实现HTML页面导出PDF
- python开发之Socket网络编程
- 2021深育杯MISC超详细WP