【代码】微信自动回复机器人

apiai机器人参考从零开始微信机器人(二):使用图灵机器人和api.ai相关接口

import requests
import apiai
from wxpy import Bot
import json
import time

def apiai_reply(msg_content, user_id):
    print("try APIAI reply...")
    # 用的是client TOCKEN,
    APIAI_TOKEN = 'e737462200a64c3fb29f204358e407fb'
    # APIAI_TOKEN = 'fa5303d038e34077ae992c60d9aff90c'
    ai = apiai.ApiAI(APIAI_TOKEN)
    request = ai.text_request()
    request.lang = 'zh-CN'
    request.session_id = user_id
    request.query = msg_content
    print('-----------')
    response = request.getresponse()
    print(response)
    s = json.loads(response.read().decode('utf-8'))
    print(s)
    if s['result']['action'] == 'input.unknown':
        raise Exception('api.ai cannot reply this message')
    if s['status']['code'] == 200:
        print("use APIAI reply")
        print('return code: ' + str(s['status']['code']))
        return s['result']['fulfillment']['speech']


bot = Bot()
# 使用puid
bot.enable_puid('wxpy_puid.pkl')
my_friend = bot.friends().search('appium')[0]


@bot.register(my_friend)
def reply(msg):
    print(msg.text)
    print(my_friend.puid)
    if msg.text == '1':
        return 'I\'m Still Alive!! ' + time.strftime('%y/%m/%d-%H:%M:%S', time.localtime())
    else:
        return apiai_reply(msg.text, my_friend.puid)


bot.join()

程序阻塞到request = ai.text_request()原因不明,啥错都不报,妈,改成图灵就很简单了:

from wxpy import Bot, embed
import requests


TULING_TOKEN = '540fcc683f664962998f8b3cb92eb721'

# 登录
bot = Bot(cache_path=True)
# 使用uid,获取自己的uid
bot.enable_puid('wxpy_puid.pkl')
me = bot.friends().search('人间乐园')[0]
print(me.puid)


# wxpy内置的图灵接口 Tuling不能用,tuling.do_reply(msg)
# 只回复自己的消息,但是似乎看不到回复的结果
@bot.register(bot.self, except_self=False)
def rely_self(msg):
    if msg.text:
        url_api = 'http://www.tuling123.com/openapi/api'
        data = {
            'key': TULING_TOKEN,
            'info': msg.text,  # 收到消息的文字内容
            'userid': me.puid  # 似乎不能获取上下文
        }
        s = requests.post(url_api, data=data).json()
        if s['code'] == 100000:
            print(s['text'])  # 查看回复消息的内容
            # msg.reply(s['text'])  # 回复消息似乎失败,改为return
            return 'tuling reply'+s['text']
        else:
            # 显示错误码
            print(s['code'])


embed()

你可能感兴趣的:(【代码】微信自动回复机器人)