跳转到主要内容

Facebook消息机器人框架

项目描述

简介

koslab.messengerbot通过提供一个处理和抽象Bots API的框架,使编写Facebook消息机器人变得更容易。它最初是使用Morepath作为网络请求处理器开发的,默认中心实现是在morepath上,但这个库应该可以与任何Python网络框架一起使用

示例:编写Echo Bot

让我们安装koslab.messengerbot

pip install koslab.messengerbot

现在让我们在echobot.py中编写我们的EchoBot

from koslab.messengerbot.bot import BaseMessengerBot

# bot implementation
class EchoBot(BaseMessengerBot):

   GREETING_TEXT = 'Hello!. EchoBot, at your service!'
   STARTUP_MESSAGE = {'text': 'Hi!, lets get started!' }

   def message_hook(self, event):
       text = event['message'].get('text', '')
       self.send(recipient=event['sender'], message={'text': text})

现在让我们编写一个中心配置文件,config.yml

webhook: webhook
use_message_queue: false
message_queue: amqp://guest:guest@localhost:5672//
hub_verify_token: <MY-VERIFY-TOKEN>
bots:
  - page_id: <PAGE-ID>
    title: EchoBot
    class: echobot:EchoBot
    access_token: <PAGE-ACCESS-TOKEN>

启动机器人

messengerbot_hub config.yml

最后,按照消息平台入门指南进行操作,以配置和注册您的机器人到Facebook。

机器人配置

POSTBACK_HANDLERS

将有效负载映射到处理有效负载的对象方法名称的字典。默认值是

POSTBACK_HANDLERS = {}

示例

POSTBACK_HANDLERS = {
   'mypostback': 'mypostback_hook'
}

def mypostback_hook(self, event):
    ...
GREETING_TEXT

问候文本用于新线程。默认值是

GREETING_TEXT = 'Hello World!'
STARTUP_MESSAGE

当点击开始菜单时发送的消息对象。默认值是

STARTUP_MESSAGE = { 'text' : 'Hello World!' }
PERSISTENT_MENU

持久菜单 call_for_action按钮配置。默认值是

PERSISTENT_MENU = [{
   'type': 'postback',
   'title': 'Get Started',
   'payload': 'messengerbot.get_started'
}]

机器人钩子

以下是可以在机器人上实现的钩子列表

消息钩子

处理消息接收消息回声事件。

回退钩子

处理回退接收事件。此钩子有一个默认实现,根据有效负载值触发方法。要定义映射,请配置POSTBACK_HANDLERS类变量。

身份验证钩子

处理身份验证事件。

账户链接钩子

处理账户链接事件。

消息送达钩子

处理消息送达事件。

消息已读钩子

处理消息已读事件。

发送API

BaseMessengerBot类提供了一个send方法,用于向Facebook Messenger Bot服务发送响应。参数包括

接收者

接收者对象。例如:{ 'id': '12345678'}

消息

消息对象。请参考Facebook Send API参考了解支持的消息类型

发送者操作

发送者操作。支持的值:mark_seen(标记已读)、typing_on(正在输入)、typing_off(停止输入)

注意:如果定义了message,则将忽略sender_action值。

可以使用便捷方法reply来发送响应。参数包括

事件

事件对象

消息

接受字符串、可调用或消息对象。字符串将被自动转换为消息对象。可调用将使用事件对象作为参数调用。

Postback有效负载

回退值可以是JSON对象或字符串。如果是JSON对象格式的回退,则需要一个event键,以便通过postback_hook将回退路由到正确的处理程序。对于字符串回退值,整个字符串被视为事件键。

会话

会话管理通过围绕Beaker Cache的薄包装提供。可以通过BaseMessengerBot类上的get_session方法获取当前会话变量。会话对象类似于字典,可以按字典处理。

def message_hook(self, event):
    session = self.get_session(event)

带有AMQP的消息机器人

Hub进程支持AMQP队列。要使用它,在config.yml中只需将use_message_queue设置为true,并在message_queue设置中配置消息队列的传输URI。队列使用Kombu实现,因此您也可以使用Kombu支持的其他传输。

use_message_queue: true
message_queue: amqp://guest:guest@localhost:5672//

对话API

注意:这是一个草稿规范。尚未实现。欢迎提出意见。

规范

conversation: myconversation
steps:
   - message: What is your name?
     type: text
     store: name
   - message: Please share your photo
     type: image-attachment
     store: photo
   - message: Please share your location
     type: location-attachment
     store: location
   - message:
       - type: generic-template
         elements:
            - title: Summary
              subtitle: Summary
              image_url: ${data['photo']['url']}
              buttons:
                  - type: postback
                    title: Save
                    payload: myconversation.save

贡献者

注意:在此文件中列出为此软件包做出贡献的地点名称和人员的角色

每行一个,如下所示

  • Mohd Izhar Firdaus Bin Ismail,原始作者

变更日志

1.0b5 (2016-08-09)

  • 重新排列事件处理程序的优先级,以便快速回复回退被捕获 [Izhar Firdaus]

1.0b4 (2016-08-08)

  • 启动Hub时忽略CLI [Izhar Firdaus]

1.0b3 (2016-08-08)

  • 确保在父进程终止时杀死所有子进程 [Izhar Firdaus]

1.0b2 (2016-07-13)

  • page_id映射存在错误。确保它现在作为字符串读取,而不是整数 [Izhar Firdaus]

1.0b1 (2016-07-13)

  • 初代完整功能机器人框架,包含中心节点实现 [Izhar Firdaus]

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。

源代码分布

koslab.messengerbot-1.0b5.tar.gz (11.3 kB 查看哈希值)

上传时间 源代码

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面