处理来自 Microsoft Bot Framework 的电报内联查询

Handle Telegram inline query from Microsoft Bot Framework

我在 C# 中创建了一个使用 Microsoft Bot Framework 的机器人,我正在尝试处理来自 inline query电报机器人.

由于内联查询是特定于渠道(仅限电报)的功能,因此不立即支持它们。支持 Bot Framework Documentation says the answerInlineQuery 方法。这可用于回答内联查询。

我的问题是:如何处理来自电报的内联查询?

到目前为止,我只使用了 OnMessageActivityAsync 函数来处理传入的请求。一旦我从电报开始内联查询,这个功能就不会被触发。我可以使用其他函数来处理它吗?

当 activity 从 Telegram 发送到您的机器人时,相关数据包含在传入 activity 的 ChannelData 属性 中。例如,

{
  type: 'message',
  id: '3451493078542633497',
  timestamp: 2020-11-12T01:53:42.890Z,
  serviceUrl: 'https://telegram.botframework.com/',  channelId: 'telegram',
  from: { id: '803***355', name: 'jdoe', role: 
'user' },
  conversation: { },
  recipient: { id: 'SomeBot', name: 'SomeBotName' },
  channelData: {
    update_id: 424***655,
    inline_query: {
      id: '345*************497',
      from: {
        id: 803613355,
        is_bot: false,
        first_name: 'John',
        last_name: 'Doe',
        username: 'jdoe',
        language_code: 'en'
      }
    },
    query: 'how do you do?',
    offset: ''
  }
},
  rawTimestamp: '2020-11-12T01:53:42.8907123Z',    
  callerId: 'urn:botframework:azure',
  text: 'how do you do?'
}

所有包含相关 activity 类型(例如“消息”,如下所示)的活动都可以在同名的 activity 处理程序中捕获。如果您没有在 OnMessageActivityAsync 中看到“activity”,则可能是您没有正确配置处理程序。由于您尚未发布 activity 处理程序代码,因此无法说明问题所在。

您可以参考 BotBuilder-Samples 以获取有关如何设置 'Bot'.cs 文件的示例,该文件位于每个示例项目的 'Bots' 文件夹中。

希望得到帮助!