Обработка встроенного запроса Telegram из Microsoft Bot Framework

#c# #botframework #telegram-bot

#c# #botframework #telegram-бот

Вопрос:

Я создал бота на C #, который использует Microsoft Bot Framework, и я пытаюсь обработать встроенный запрос из бота Telegram.

Поскольку встроенные запросы являются функциональностью, зависящей от канала (только для telegram), они не поддерживаются сразу из коробки. В документации Bot Framework говорится, что метод answerInlineQuery поддерживается. Это можно использовать для ответа на встроенный запрос.

Мой вопрос: как я могу обработать встроенный запрос из telegram?

До сих пор я использовал эту OnMessageActivityAsync функцию только для обработки входящих запросов. Эта функция не запускается, как только я запускаю встроенный запрос из telegram. Есть ли другая функция, которую я могу использовать для ее обработки?

Ответ №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?'
}
  

Все действия, которые содержат соответствующие типы действий (например, «сообщение», как показано ниже), могут быть записаны в обработчике действий с тем же именем. Если вы не видите «activity» в OnMessageActivityAsync , скорее всего, у вас неправильно настроен обработчик. Поскольку вы не опубликовали свой код обработчика активности, невозможно сказать, в чем может быть проблема.

Вы можете обратиться к BotBuilder-Samples для получения примеров того, как настроить свой файл ‘Bot’.cs, расположенный в папках ‘Bots’ каждого примера проекта.

Надеюсь на помощь!

Комментарии:

1. Спасибо за ваш ответ! Тем временем я поменял Microsoft Bot Framework на прямую реализацию telegram с github.com/TelegramBots/Telegram.Bot . Это упростило использование всех функций telegram 🙂