我正在用 Telegram 和 Google Dialogflow 构建一个聊天机器人。当我通过 Dialogflow“集成”选项卡将 Dialogflow 集成到 Telegram 时,Dialogflow 注册为 Webbhook 服务以拦截所有收到的 Telegram 消息。不幸的是,我无法对贴纸、图像和 Telegram 付款结账消息等非短信消息采取行动。
我希望 Dialogflow 将所有收到的消息转发到我的自定义实现 webhook 中的后备意图。在我的 webhook 中,我将能够解析收到的正文并相应地处理不受支持的电报消息。
我知道 Dialogflow 中有一个 FACEBOOK_MEDIA 事件。当通过 Facebook 信使将图像发送到 Dialogflow 时会触发此事件。是否有类似 TELEGRAM_MEDIA 甚至 TELEGRAM_UNSUPPORTED 事件可用?
我真的希望能够在 Dialogflow 中处理的不仅仅是短信。
我是否需要在 Telegram 和 Dialogflow 之间添加另一层才能对所有 Telegram 消息采取行动?
到目前为止我分析的内容:
我将所有 Google Dialogflow 交互日志转发到 Google Cloud stackdriver。Dialogflow 似乎完全忽略了非文本消息。当我向我的电报机器人发送非文本消息时,我根本看不到任何日志条目。另一方面,当我发送文本时,日志及其 JSON 有效负载会立即出现在堆栈驱动程序中。
我在 Dialogflow 中创建了一个后备意图,并在 Fulfillment 部分启用了“为此意图启用 webhook 调用”。不幸的是,我的履行功能不会触发任何非文本事件。Dialogflow 首先阻止它。