Facebook中构建Messenger应用程序的异步框架

aiobook的Python项目详细描述


艾奥博克

aiobook it是用于在facebook中构建messenger应用程序的异步框架

安装

使用包管理器pip安装aiobook。

pip install aiobook

用法

Facebook处理程序

Facebook处理程序可以处理所有facebook webhook events

您可以使用装饰器:

fromaiobookimportFacebookHandlerhandler=FacebookHandler("<page_access_token","<verification_token>",skip_confirm_execution=True)@handler.handle_messageasyncdefhandle_message(event):print("receive your message {}".format(event.text))@handler.handle_postbackasyncdefhandle_postback(event):print("receive your postback with payload {}".format(event.postback))

或直接注册处理程序:

asyncdefhandle_message(event):print("receive your message {}".format(event.text))asyncdefhandle_postback(event):print("receive your postback with payload {}".format(event.postback))handler.set_webhook_handler("message",handle_message)handler.set_webhook_handler("postback",handle_postback)

要获取允许和定义的处理程序列表:

handler.get_allowed_handlers()handler.get_defined_handlers()

也可以在句柄之前和之后设置句柄。它将在处理事件之前(或之后)调用:

@handler.before_handleasyncdeflog_message(event):logging.info("{} handled.".format(event.name))@handler.after_handleasyncdeflog_message(event):logging.info("{} handled.".format(event.name))

要接收消息,您需要在http服务器中注册处理程序:

fromaiohttpimportwebfromaiobookimportFacebookHandlerhandler=FacebookHandler("<page_access_token","<verification_token>",skip_confirm_execution=True)app=web.Application()app.add_routes([web.get("<url_pattern>",handler.handle_get)])app.add_routes([web.post("<url_pattern>",handler.handle_post)])

信使

Messenger支持Send API method。 Messenger中包含Facebook处理程序。

fromaiobookimportMessengermessenger=Messenger("<page_access_token","<verification_token>",skip_confirm_execution=True)@messenger.handler.handle_messageasyncdefhandle_message(event):awaitmessenger.send(event.sender_id,"Your message: {}".format(event.text))@messenger.handler.handle_postbackasyncdefhandle_postback(event):awaitmessenger.send(event.sender_id,"Your press button: {}".format(event.postback))

信使。发送

允许发送文本或模板:

awaitmessenger.send(event.sender_id,message,quick_replies=None,messaging_type=None,metadata=None,notification_type=None,tag=None)

允许的Messenger.send类型

字符串消息和模板

支持的模板

buttonTemplate、genericTemplate、listTemplate、openGraphTemplate、mediateTemplate。

支持的按钮

callbutton、gameplaybutton、loginbutton、logoutbutton、postbackbutton、urlbutton

其他

quickreply、element、medialelement、opengraphelement

fromaiobook.core.facebookimportQuickReplyfromaiobook.core.facebookimportElement,MediaElement,OpenGraphElementfromaiobook.core.facebookimportButtonTemplate,GenericTemplate,ListTemplate,OpenGraphTemplate,MediaTemplatefromaiobook.core.facebookimportCallButton,GamePlayButton,LogInButton,LogOutButton,PostbackButton,UrlButtonawaitmessenger.send(event.sender_id,ButtonTemplate('Hi, press buttons',buttons=[PostbackButton('test','test_payload'),UrlButton(title='test_rl',url='https://www.messenger.com')]))awaitmessenger.send(event.sender_id,GenericTemplate([Element('test',buttons=[PostbackButton('test','test_payload'),UrlButton(title='test_rl',url='https://www.messenger.com')]),Element('test2',image_url,'test2',buttons=[PostbackButton('test','test_payload'),UrlButton(title='test_rl',url='https://www.messenger.com')])]))

Messenger.get_user_profile

允许您使用发件人ID检索用户配置文件信息:

response=awaitmessenger.get_user_profile(event.sender_id,fields=("first_name","last_name"))

下一个字段是supported

Messenger.获取页面信息

允许您检索页面信息:

response=awaitmessenger.get_page_info()

信使。模拟输入

修饰func以模拟在回答之前定义超时的键入。包括mark_seen,输入 并键入发件人操作。

@messenger.handler.handle_postback@messenger.imitate_typing(1)asyncdefhandle_postback(event):awaitmessenger.send(event.sender_id,"Your press button: {}".format(event.postback))

或者您可以单独使用发件人操作:

信使。马克看到了

将最后一封邮件标记为已读的发件人操作

awaitmessenger.mark_seen(event.sender_id)

信使。键入

打开键入指示器的发件人操作

awaitmessenger.typing_on(event.sender_id)

信使。键入“关闭”

关闭键入指示器的发件人操作

awaitmessenger.typing_off(event.sender_id)

aiobook应用程序

aiobook这是一个小型aiohttp包装器,可帮助管理和部署您的Messenger应用程序

fromaiobookimportAioBookAppfromaiobookimportMessengerapp=AioBookApp(port=3000)messenger=Messenger("<page_access_token","<verification_token>",skip_confirm_execution=True)app.register_messenger(messenger)app.start_bot()

许可证

MIT

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
对Java中的“this”操作符感到困惑   java更改Libgdx按钮外观   java返回到上一个开关案例   java返回带有可选对象的完全未来列表   java应该只在更新JPA中的整个实体时使用“合并”吗?   java如何将x个整数拆分为y个数组?   java HQL多where子句   java类“org.apache.activemq.jms.pool.PooledConnectionFactory”的哪个属性应该用于超时连接请求?   java运行servlet程序   JavaSpring数据JPA/REST更新子集合   eclipse工具,用于从源代码中提取java类层次结构和调用图(使用api)   java如何在Eclipse中打开Tomcat的自动重启?   java使用并发包中的同步器。FutureTask始终返回null   java Spring Boot@ExceptionHandler隐藏异常名称   java无法访问ActivityCompatApi23类文件   忙时无法将Java窗口置于最前面   java Play Framework 2.5.12从调用中获取方法