定期触发Dialogflow事件

时间:2018-02-27 17:28:03

标签: bots dialogflow facebook-messenger-bot

我希望我的Dialogflow机器人通过Cronjob发送定期消息。我会通过/ query端点触发事件来做到这一点。但是,我不知道如何获得 sessionId 。如果我传递了最后使用的 sessionId ,则响应成功返回,但在对话中我没有收到任何消息。 API是否支持这种模式?我的所有sessionId都来自Facebook Messenger客户端的同一个实例

2 个答案:

答案 0 :(得分:0)

您绝对应该使用Facebook Messenger Broadcast API来实现此类功能。这会将您的消息广播给订阅该机器人的所有用户,您可以将其作为CRON作业执行。

会话ID发送有效,但是如果你在机器人上有很多用户的话,它会变得笨拙。

注意事项:

  1. 您必须申请此权限。 (pages_messaging和pages_messaging_subscriptions。大约1-2天,但是 可以在应用程序的管理员/测试用户上进行测试)
  2. 每次广播必须是单独的广播。 (例如,你不能将图像和文本一起发送,每个都必须是它自己的个人广播)。
  3. 也有某种取消订阅选项。即使您在机器人将发送更新的消息中明确说明,FB用户可能会认为您是垃圾邮件。
  4. 使用custom labels创建目标发送。因此,您可以细分您将针对特定问题发送更新的人员,或者只是在他们取消订阅您的广播时标记人员。
  5. 基本工作流程:

    1. 获得播放许可。
    2. 通过POST到端点
    3. 创建message_creative_id
    4. 使用message_creative_id发布broadcast_messages
    5. 成功发送后,您将收到broadcast_id

答案 1 :(得分:0)

Dialogflow目前不支持主动消息传递,会话ID由Dialogflow生成,并且仅在发送最后一条消息后20分钟处于活动状态。

主动向用户发送消息的唯一方法是使用您在Dialogflow中配置的相同的Facebook Messenger身份验证信息,向想要通知的用户发送Facebook消息。当用户响应时,请求将转到Dialogflow,而Dialogflow代理将响应并继续对话。