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' }]
机器人钩子
以下是可以在机器人上实现的钩子列表
发送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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f17ff64d959a8d9273c706d3af96fa204fd14a3a9e6eca5f7e85c6094c1a4548 |
|
MD5 | 790ecb1a2f6aebeba42bc00f1a1a98c7 |
|
BLAKE2b-256 | 3b4d8b441b72ac39eb3f7657337b088f9429a149b154c5121515590ab3cfcaed |