#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 🙂