【问题标题】:How to detect standby event from Messenger?如何从 Messenger 检测待机事件?
【发布时间】:2018-02-28 19:37:09
【问题描述】:

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

【问题讨论】:

  • 您是否在遵循教程或一组说明?
  • 无教程。我正在查看 dialogflow 和 messenger SDK 中的文档。
  • 问题是没有任何关于这个特定用例的教程。看来 DialogFlow 根本不听那些事件。我目前正在尝试解决同样的问题,如果我能找到任何有用的东西,我会更新你!
  • 我们有解决这个问题的办法吗?

标签: messenger dialogflow-es


【解决方案1】:

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

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

正如我所说,这只是一个想法,我不确定它是否会奏效。希望它可以帮助某人!
参考:
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(从页面收件箱请求线程控制)

*这是一个避免传递所有权的想法,以创建这样做的意图。特别是如果您想在机器人和收件箱页面之间切换,只需将对话从完成移动到收件箱或从收件箱移动到完成

【讨论】:

  • 感谢您的想法,它的派生工作。我的解决方案是像你说的那样创建另一个机器人,订阅 webhook,在页面设置中的“切换协议的辅助接收器”下将其分配为辅助机器人,然后调用一些指定的关键字,如“bot back”将 pass_thread_control 发布到主要(对话流)机器人。然而,这是不必要的复杂,如果 dialogflow 支持 facebook 待机或一般待机直到它被回调,那将是理想的。我很想知道是否还有其他解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 2020-11-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
相关资源
最近更新 更多