菜单

使用图灵机器人和api

2019年4月9日 - 注册免费送38元体验金

图灵机器人相关接口

图灵机器人是3个国语语境下的对电话机器人,免费的机器人每一日有陆仟次调用的,如若放在群聊中是全然够用的(假设唯有@的音信才使用机器人回复的)。图灵机器人也包涵一些简易的力量,比如讲笑话、传说大全、成语接龙、音讯资源信息等,我们将介绍怎样简单调用图灵机器人接口。

早先时代准备

  1. 前往注册图灵机器人,扩张1个机器人,并记下机器人的APIKey。具体注册格局可从前往图灵API翻开。(假使您认为很费力,
    也能够如今使用itchat提供的多少个key

  2. 安装Requests: HTTP for
    Humans

    # 从 pip 安装 ()
    pip install requests
    

    并在机器人中程导弹入Requests包(写在先后最初):

    import requests
    

调用接口

wxpy提供了图灵的接口,使用格局:

tuling = Tuling(api_key='Your API Key') # 刚才申请的key

@bot.register(my_friend) # 注册消息
def reply_my_friend(msg):
    tuling.do_reply(msg)

为了让我们理解HTTP协议在python中的使用方式,笔者接下去会介绍怎么着利用请求获取新闻。

本节中剧情一经未有例外提醒,都应写在你希望处理的某种注册了的新闻方法中以保险它的常规运行。

首先,将图灵API写入程序中:

TULING_TOKEN = 'Your API Key'

然后,定义接口链接和需求传输的数据:

url_api = 'http://www.tuling123.com/openapi/api'
data = {
    'key'    : TULING_TOKEN,
    'info'   : msg.text, # 收到消息的文字内容
}

基于文书档案,通过HTTP请求,我们将会博得3个json格式的公文。使用Requests包,大家能够大致的获得调用接口所再次回到的音信:

s = requests.post(url_api, data=data).json()
print s # 打印所获得的json查看如何使用
# {u'text': u'回复的内容', u'code': 100000}

大家发现经过请求,我们一般会获得三个字典内容,当中包罗text和code两项:text是图灵机器人回复的公文,而code是回到的号码。详细的回来数据格式也得以在图灵API中来看,除了文字类还有音讯类、图片类、链接类等回到类型。在那边大家以文字类为例,介绍怎么着处理:

if s['code'] == 100000:
        print s['text'] # 查看回复消息的内容,可省略
        msg.reply(s['text']) # 回复消息

假如需求复苏其余品类的音讯,也统统能够由此判断code明确新闻类型,再决定哪些回复。那里给出作者的还原方法供大家参考(也能够挑选不处理这一类内容):

if s['code'] == 200000: # 链接类:回复文字和链接
    msg.reply(s['text'] + s['url'])

至此,大家早已打响调用了图灵机器人的API接口进行复苏,完整程序如下:

# -*- coding: utf-8 -*-

from wxpy import *
import requests

TULING_TOKEN = 'Your API Key'
bot = Bot()

@bot.register(Group, TEXT) # 这里注册了群聊中的文字消息,测试时可以设置为自己(上篇中提到过)
def group_msg(msg):
    if msg.is_at:
        url_api = 'http://www.tuling123.com/openapi/api'
        data = {
            'key'    : TULING_TOKEN,
            'info'   : msg.text, # 收到消息的文字内容
        }

        s = requests.post(url_api, data=data).json()
        print s # 打印所获得的json查看如何使用

        if s['code'] == 100000:
            print s['text'] # 查看回复消息的内容,可省略
            msg.reply(s['text']) # 回复消息

embed()

以下内容尤其进阶,而文末有一些不难难点的解答。借使境遇任何难点,笔者也会在现在更新。

番外:使用上下文

wxpy给各类用户定义了二个相持平稳的靶子/用户id,为puid,能够平素被拿走到并有唯一的喜笑颜开(依据文书档案),大家能够使用那些id来作为userid传给图灵机器人,以利于识别机器人或航班/列成新闻的上下文。

bot.enable_puid() # puid 需要手动开启,请将这句话写在登陆登录之后

如此那般传送给接口的多寡也要同时修改为:

data = {
    'key'    : TULING_TOKEN,
    'info'   : msg.text, # 收到消息的文字内容
    'userid' : msg.member.puid, # 使用群聊中发送者的 puid 作为 userid 传送给图灵接口, 如果是私聊可以使用 msg.sender.puid
}

诸如此类做的补益是,图灵机器人能够遵照得userid来博取上下文音讯。例如你打探『天气』,它会卷土重来『亲爱的,悄悄地告知作者你在哪个城市?』。在那种意况下,借使您不采纳userid参数,你再一次苏醒城市,图灵机器人也不或许正确找到天气;假使您选择了这壹参数,且一次苏醒使用的userid相同,图灵机器人会为您回复你回复的都会的气候情状,落成那1会话。

使用api.ai

api.ai是一家被谷歌收购的人机交互系统,首要重视于对电话机器人的成本。图灵机器人纵然包含三个知识库,但其语义识别的能力较差。我所要求的机器人首要用于新生群,很多题目人与人之间会有优秀多分化的抒发,图灵机器人不可能满足自作者对此群聊机器人的渴求。因而,小编尝试运用api.ai实行恢复生机有针对性的壹部分难题。

要是你的塞尔维亚共和国语相对倒霉,小编不提出采纳api.ai。api.ai的计划大多须求使用塞尔维亚共和国语,即便接口简单,然则后台装置绝对复杂,假若未有英文背景不引入使用。

那一有的内容相对进阶,假设未有尤其须求,完全能够跳过不看。那里只作一个对api.ai使用格局上大致的牵线,希望能扶助大家探听这一网站。

初期准备

  1. 前往api.ai挂号,创造机器人,并获得APIkey。即便被谷歌(Google)收购,可是这些网址是不必要翻墙的哦!

  2. 设置api.ai官方提供的Python SDK

    pip install apiai
    
  3. 在文书底部出席(处理回来的新闻时行使)

    import json
    

调用接口

率先,我们须求设置api.ai的Token,

APIAI_TOKEN = 'Your API Key'

日后大家倡议一个最简易的请求,一下剧情都足以经过例子找到:

ai = apiai.ApiAI(APIAI_TOKEN)
request = ai.text_request()
request.lang = 'zh-CN' # 使用中文
request.session_id = msg.member.puid # api.ai 中用 session id 来区分对话对象,必须
request.query = msg.text # 消息文字内容

注册免费送38元体验金,接下来经过接口获得传回的json:

response = request.getresponse()
s = json.loads(response.read(), encoding='UTF-8') # 讲传回的json转换为python字典
print s
# {u'lang': u'zh-cn', u'status': {u'errorType': u'success', u'code': 200}, u'timestamp': u'20}

作者们发现,api.ai传回的json相对于图灵机器人越发扑朔迷离。参考api.ai的query文档,笔者对对那有的重操旧业举办了如下处理:

if s['result']['action'] == 'input.unknown': # 
    raise Exception('api.ai cannot reply this message') # 抛出异常:使用 try 语句捕捉后使用图灵机器人回复
if s['status']['code'] == 200:
    msg.reply(s['result']['fulfillment']['speech']) # 回复 api.ai 返回的内容

api.ai的装置和调节

在进入api.ai的机器人后,你将会看出左侧的五个菜单。

只要你只是不难的内需一定语句回复的成效,只需求创建并安装Intents就足以兑现。在User
Says1栏中填入消息或然是怎么,在凡间Response处填写恐怕复苏的情节,然后保留即可。

api.ai自带机器学习效果,它的参数能够在机器人安装中的ML
settings里找到。能够经过调整参数和艺术让你的机器人回复越来越准确。

在进入机器人后,api.ai的右边会冒出1个对话框。你能够运用它举办一些基础调节和测试。在上边输入你的新闻后,下方会交到机器人的死灰复燃,你能够因此这一个对话框来打听是或不是正确安装了机器人。(须要翻墙)

您大概会遇见的片段题材

报错:No handlers could be found for logger “wxpy.api.bot”

有报错可是不可能出示,能够选拔在代码底部加入:

import logging
logging.basicConfig()

音信处理:删除@内容

倘诺不删除音信中@部分的剧情,图灵机器人的死灰复燃恐怕会遭到小名内容的震慑,导致回复不准确,或是识别不出1些应该识别出的内容。我们得以用壹段简单的代码删除@到空格之间的始末并删除首尾多余的空格。

content = re.sub('@[^\s]*', '', unicodedata.normalize('NFKC', msg.text)).strip().encode('utf-8')

此地运用了正则表明式,相配@以及它未来全体不为空的字符。要是你的微信别名中从未空白字符,那条代码是实惠的。(须要在代码起头添加import re

机器人代码

本人的微信机器人的代码在GitHub托管,欢迎查看(づ ̄3 ̄)づ╭❤~

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图