【问题标题】:Handle Telegram inline query from Microsoft Bot Framework处理来自 Microsoft Bot Framework 的 Telegram 内联查询
【发布时间】:2021-02-09 02:07:32
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# botframework telegram-bot


    【解决方案1】:

    当一个活动从 Telegram 发送到您的机器人时,相关数据包含在传入活动的 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?'
    }
    

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

    您可以参考BotBuilder-Samples,了解如何设置“Bot”.cs 文件的示例,该文件位于每个示例项目的“Bots”文件夹中。

    希望有帮助!

    【讨论】:

    • 感谢您的回复!与此同时,我用github.com/TelegramBots/Telegram.Bot 换取了 Microsoft Bot Framework 的直接电报实现。这使得使用所有电报功能变得更加容易:)
    猜你喜欢
    • 2018-10-16
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2017-06-18
    相关资源
    最近更新 更多