郭晋兵 guojb@cloudbin.cn
前言
最近网上有很多微信聊天机器人咋骗的新闻,和AI在人机对话中的不靠谱分析。就很有兴趣做个聊天机器人试试看。先从最简单的机器人开始把。
安装步骤
1. 图灵机器人api的申请
首先前往图灵机器人官网http://www.tuling123.com/注册一个账号
注册完成后登陆进入一个如下界面:
然后点击创建机器人,可以选择如下选项(也可以根据自己的需求选择选项):
这样就创建成功啦,然后进入以下页面,我们所需要关注的是那个apikey:
这里我就没有对api进行打码了,如果有不想申请的 只是测试的可以拿着我这个api去进行测试,但是友情提醒,每天的回复量是有限的,请不要滥用。
2. Python环境安装:
需要python3的版本,Linux用户的python2版本可能太低了,编译会有问题。
https://www.python.org/downloads/
需要注意一点的就是记得将python安装路径加入环境变量
3. 安装itchat库
如果是通过管理员权限运行,直接输入以下代码:
pip install itchat
pip install requests
默认自动从网上下载安装包,自行安装。
4. 聊天代码实现
打开任何编辑器,黏贴以下代码,保存为xxx.py文件。
细节的参数修改,请参见注释。
#-*- coding:utf-8 -*- import requests import itchat KEY = ’80e0f82fea294cd9bee730cbec88eddb’ #可以到图灵机器人官网申请一个,免费的 def get_response(msg): # 构造了要发送给服务器的数据 apiUrl = ‘http://www.tuling123.com/openapi/api’ data = { ‘key’ : KEY, ‘info’ : msg, ‘userid’ : ‘wechat-robot’, } try: r = requests.post(apiUrl, data=data).json() # 字典的get方法在字典没有’text’值的时候会返回None而不会抛出异常 return r.get(‘text’) # 为了防止服务器没有正常响应导致程序异常退出,这里用try-except捕获了异常 except: # 如果服务器没能正常交互(返回非json或无法连接),那么就会进入下面的return return # 将会返回一个None #注册获取别人发来的信息方法 @itchat.msg_register([‘Text’,’Map’, ‘Card’, ‘Note’, ‘Sharing’, ‘Picture’]) def tuling_reply(msg): print(msg.User[‘NickName’] +”:”+ msg[‘Text’]) #这里输出给你发微信的人的名字和他发送的内容 reply = get_response(msg[‘Text’]) #调取图灵机器人获取回复 print(reply+”\n”) #打印机器人回复的消息 return reply @itchat.msg_register([itchat.content.TEXT], isGroupChat=True) #群消息的处理 def print_content(msg): if msg.User[“NickName”]==’你希望自动回复群的名字’or msg.User[“NickName”]==’另外一个你希望自动回复群的名字’: #这里可以在后面加更多的or msg.User[“NickName”]==’你希望自动回复群的名字’ print(msg.User[‘NickName’] +”:”+ msg[‘Text’]) #打印哪个群给你发了什么消息 print(get_response(msg[‘Text’])+”\n”) #打印机器人回复的消息 return get_response(msg[‘Text’]) else: #其他群聊直接忽略 pass itchat.auto_login(hotReload=True) itchat.run() |
5. 编译代码运行
Windows用户,如果关联了python执行环境,可以双击xxx.py文件,或者在CMD环境运行python xxx.py,然后有一个二维码弹出,用机器人微信账号扫码登陆。
Linux 用户,运行python xxx.py, 如果想后台运行,执行
#nohup python3 WXCS.py >weixin.log 2>&1 &
如果linux没有xWindow, 那么二维码如何弹出来呢,然后查看weixin.log日志发现,还有个模块没下载,这个模块xdg-open是用来打开文件的,所以我们先下载yum install xdg-utils,下载完成后麻烦一点,重新运行程序,然后将二维码图片通过scp命令下载下来,然后手机扫码,就可以了。
举例: