Событие бота диалогового окна MS Teams не запускается, когда сообщение отправляется извне бота Teams

Я отправляю сообщение о существующем разговоре своему чат-боту MS Teams извне, то есть приложению Windows Forms.

ChannelAccount userAccount = originalActivity.From; 
ChannelAccount botAccount = new ChannelAccount("GenerateReport", "AzureFunction");

var message = new Activity();//Microsoft.Bot.Schema.Activity.CreateEventActivity();
message.Type = ActivityTypes.Message;
message.From = originalActivity.Recipient; //new ChannelAccount("GenerateReport", "AzureFunction");//botAccount;
message.Value = originalActivity; 
((Activity)message).Text = "LongOperationResponse";
message.Recipient = originalActivity.From;// userAccount;
message.ChannelId = originalActivity.ChannelId;
message.Conversation = originalActivity.Conversation;

ResourceResponse response21= await connectorClient.Conversations.SendToConversationAsync((Activity)message);

Сообщение об активности отправлено успешно, и сообщение появляется в беседе с чат-ботом.

Я также хотел бы каким-то образом отловить событие, когда вышеуказанное сообщение получено чат-ботом ma team. Я добавил следующие обработчики событий в класс DialogBot, который наследуется от класса ActivityHandler.

  • OnMessageActivityAsync
  • OnEventActivityAsync
  • OnTurnAsync

Однако ни один из вышеперечисленных обработчиков событий не запускается, когда сообщение отправляется извне с использованием вышеуказанной логики.

Эти обработчики событий запускаются только тогда, когда пользователь набирает сообщение в чат-боте.

Какое событие должно запускаться, когда чат-бот команды получает внешнее сообщение, и как мне обработать это событие.

Пожалуйста помоги.

Спасибо гаган


person Gags    schedule 22.12.2020    source источник
comment
Вне команды значит бота? Как вы отправляете сообщение в беседу с ботом? Не могли бы вы подробнее объяснить свой сценарий?   -  person Nikitha-MSFT    schedule 23.12.2020
comment
@ Nikitha-MSFT Я использую следующую документацию docs.microsoft.com/en-us/azure/bot-service/. Здесь долго выполняющаяся задача отправляется в функцию Azure, которая отправляет боту сообщение Activity по завершении задачи.   -  person Gags    schedule 23.12.2020
comment
Итак, вы отправляете сообщение, используя код. Сообщение было отправлено с использованием кода бота. События будут срабатывать, только если сообщение отправлено пользователем, а не ботом. Это сделано намеренно.   -  person Nikitha-MSFT    schedule 23.12.2020
comment
@ Wajeed-MSFT Да, нужна помощь.   -  person Gags    schedule 31.12.2020
comment
@ Nikitha-MSFT Да, я отправляю сообщение, но не использую код бота, а код во внешнем приложении. Message.From устанавливается как бот, а Message.Recipient - это My Teams AadObjectID, то есть учетная запись My Teams. Я попытался отменить отправку и получателя, но результаты были те же, то есть сообщения появляются в окне чат-бота Teams, но в коде бота не запускается никаких событий.   -  person Gags    schedule 31.12.2020


Ответы (1)


Вопрос был немного неясным, но, читая комментарии сейчас, я думаю, что понимаю его лучше. Вы отправляете сообщения как бот, но извне бота (в основном проактивный обмен сообщениями). В результате ваш код бота вообще не будет получать уведомления, потому что с точки зрения Bot Framework, почему он сообщает вам, что вы отправляете сообщение - вы бы знали это уже, конечно. На практике вы будете получать только уведомления:

  1. когда сообщение отправлено вашему боту
  2. который дополнительно определяется в зависимости от типа разговора. При 1-1 вы будете получать ВСЕ сообщения своему боту. Для группового чата или разговора на канале Teams вы будете только получать сообщения, в которых ваш бот имеет @mentioned
person Hilton Giesenow    schedule 23.12.2020