Python “图灵机器人”对话交互

 

1、创建图灵机器人账户

注册图灵机器人账号并创建一个机器人服务:

http://www.tuling123.com/

2、添加微信授权公众号,微信扫描生成的二维码:

3、微信关注图灵机器人公众号; 根据提供的API接入的apikey,就可以通过Python来关联微信与图灵机器人, 进行人机交互了;

4、完成下面程序,并执行再扫码登录微信,此时你的微信就可以自动回复所有消息;

demo1:图灵机器人,自动回复所有微信好友和群消息

注:wxpy一个根据网页版微信的接口封装的库,如果没有库,可直接pip安装

# 实例1:微信回复所有好友包括群消息
#注册图灵机器人,然后微信关注公众号,授权,然后运行这个代码会自动回复微信信息;
from wxpy import *
#扫码登陆
bot = Bot()
# 初始化图灵机器人
tuling = Tuling(api_key='你申请的key')
# 自动回复所有文字消息
@bot.register(msg_types=TEXT)
def auto_reply_all(msg):
    tuling.do_reply(msg)
# 开始运行
bot.join()

demo2:查找好友列表,回复指定好友消息

# 实例2:微信回复指定好友信息
#注册图灵机器人,然后微信关注公众号,授权,然后运行这个代码会自动回复微信信息;
from wxpy import *
#扫码登陆
bot = Bot()
# 初始化图灵机器人
tuling = Tuling(api_key='你申请的key')
# 获取好友
dear = bot.friends().search('石头')[0]#模糊查询石头好友

# 使用图灵机器人自动与指定好友聊天
@bot.register(dear)
def reply_my_friend(msg):
    print(msg)
    tuling.do_reply(msg)

embed()
# 开始运行
bot.join():

 demo3:控制台与图灵机器人直接对话

了解图灵机器人的API接口,注意这里是免费注册后测试用的,api官网没直接提供,如果是花钱注册的商用的,则系统会提供API,这里仅供参考

 

 注意:请求数据和响应数据分别要编码和解码

#! /usr/bin/python3.4
#实例3:图灵机器人直接交互(控制台输入)
# _*_ encode:utf-8_*_

import json
from urllib.request import urlopen,Request
from urllib.error import URLError
from urllib.parse import urlencode

class TuringChatMode(object):
    #初始化API请求地址
    def __init__(self):
        # API接口地址
        self.turing_url = 'http://www.tuling123.com/openapi/api?'

     #定义人机交互方法
    def botInteraction (self,text):
      
        url_data = dict(
            key = '你的key',
            info = text,
            userid = 'zyg',
        )
      
        self.request = Request(self.turing_url + urlencode(url_data))#设置并实例化Request

        try:
            w_data = urlopen(self.request)#发送请求
        except URLError:
            raise Exception("No internet connection available to transfer txt data")
            #断言了请求URL异常
        except:
            raise KeyError("Server wouldn't respond (invalid key or quota has been maxed out)")
            # 其他情况断言提示服务相应次数已经达到上限

        response_text = w_data.read().decode('utf-8')
        #print(response_text)

        json_result = json.loads(response_text)#将json格式进行解析

        return json_result['text']

if __name__ == '__main__':
    
    turing = TuringChatMode()
    while True:
        msg = input("\n我要说话:")
        if msg == 'quit':
            exit("您已经退出了对话!")         # 设定输入quit,退出聊天。
        else:
            botMsg = turing.botInteraction(msg)
            print("图灵BOT回复我:",botMsg)

 

demo4:可以根据tkinter进行GUI布局,结合上面demo3实现聊天界面数据交互,此处略;

 

posted @ 2018-09-27 14:41  zyg_100  阅读(1367)  评论(0编辑  收藏  举报