【发布时间】:2017-08-01 19:27:04
【问题描述】:
我正在使用 Api.ai 制作一个用于提供健康建议的聊天机器人。
我想每天向用户发送推荐的锻炼计划。但是 Api.ai 中的意图只能在用户说话时做出响应。
我应该通过使用事件来做到这一点吗?但是我怎样才能触发一个事件,让它每天或每 n 小时向用户发送消息呢?或者有没有其他解决方案?
谢谢!!
【问题讨论】:
标签: chatbot messenger dialogflow-es
我正在使用 Api.ai 制作一个用于提供健康建议的聊天机器人。
我想每天向用户发送推荐的锻炼计划。但是 Api.ai 中的意图只能在用户说话时做出响应。
我应该通过使用事件来做到这一点吗?但是我怎样才能触发一个事件,让它每天或每 n 小时向用户发送消息呢?或者有没有其他解决方案?
谢谢!!
【问题讨论】:
标签: chatbot messenger dialogflow-es
Facebook 去年通过标准消息传递权限扼杀了这种能力。您现在拥有24hrs to respond 到用户发起的消息。有几个例外,包括:
Facebook 似乎推出了订阅消息功能,这需要额外的 Facebook 权限,需要将其添加到您的应用程序review submission。
此外,API.ai 会话过期。
默认情况下,上下文在 5 个请求或 10 分钟后过期 从它们被激活的那一刻起。更新上下文的意图将 重置计数器和时钟以提供额外的五个请求和 十分钟。
您可以在每个上下文的设置中更改上下文生命周期。
虽然改变生命周期可能只会增加它所支持的请求数量,因为没有提到增加时间。
TL;DR:两个平台的限制和限制意味着这可能是不可能的。
【讨论】:
这通常取决于您为 API.AI 启用的集成类型。据我所知,API.AI 中没有任何内容可以允许某种 cron 作业发送一些通知。
在我们的场景中,我们使用 Slack + API.AI 并且 Slack 提供传入的 Webhook 通知来通知整个频道或特定用户。但同样,此通知代码在 API.AI 之外运行
【讨论】:
您需要为用户提供订阅和取消订阅推送消息的功能,并符合 Facebook 提供的三个类别之一以获得 Messaging_subscription 批准。
如果您只是想测试,是否已完成批准。您将设置以下内容:
API.AI 通过指定的操作订阅和取消订阅意图
该操作将使用 FBID 更新表格,以便您知道谁想要接收消息,谁不想接收。
高级别的,您将使用您应用的页面令牌创建一个使用某种异步任务\作业队列向用户广播的服务。我们使用https://www.npmjs.com/package/node-celery
【讨论】: