如何从Messenger检测待机事件?

时间:2018-02-28 19:37:09

标签: messenger dialogflow

使用Messenger切换协议当用户请求与人交谈时,我可以将控件传递到收件箱。我希望机器人在待机状态下监听,以便在用户请求时恢复控制权。问题似乎是机器人没有在待机状态下听。 我的Facebook页面订阅了Standby事件,并在我的Messenger应用程序中启用了Webhooks集成。在DialogFlow中设置了Facebook Messenger集成。在履行代码中,在将会话线程控制权移交给收件箱后,我不会收到请求。 请帮忙!

1 个答案:

答案 0 :(得分:0)

我对此有个想法,但实际上我不确定它是否会起作用,我将其发布以查看是否有人尝试过。

我认为您应该创建一个自己的Webhook,它将在Facebook Developers Portal中的Facebook App Messenger Webhook中进行订阅。
您将必须设置此Webhook才能接收来自Facebook的所有相应事件,例如“消息”,“待机”,“ messaging_handovers”等(当前,“ messaging”事件用于发送用户的消息,而“ messaging_handovers”和“待机”用于将控制从机器人(在您的情况下为DialogFlow)切换到另一个应用(可能是收件箱页面)。
然后,您将必须根据收到的回调来设置Webhook,如下所示:
 -如果发送了request_thread_control回调:网络钩子应将pass_thread_control发送到第二个接收器
-您将必须设置一个协议来激活take_thread_control,以将对话的所有权返回给漫游器
-在任何其他回调中(假设其余都是用于发送给bot的消息),webhook应该使用webhook中的客户端将它们发送到Dialogflow,评估该bot是会话的所有权还是另一个应用程序拥有(同样可以是其他应用或收件箱)

正如我所说,这只是一个主意,我不确定是否会奏效。希望对您有所帮助!
参考文献:
https://developers.facebook.com/docs/messenger-platform/handover-protocol/pass-thread-control(将线程控制传递到页面收件箱(实时聊天))
https://developers.facebook.com/docs/messenger-platform/handover-protocol/request-thread-control#page_inbox(从页面收件箱中请求线程控制)

*这是使所有权传递避免创建意图的意图。特别是如果您想在漫游器页面和收件箱页面之间切换,只需将对话从“完成”移至“收件箱”,或从“收件箱”移至“完成”