首页 > 解决方案 > 从 Teams Bot 外部发送消息时未触发 MS Teams Dialog Bot 事件

问题描述

我正在从外部(即 Windows 窗体应用程序)向我的 MS Teams 聊天机器人发送关于现有对话的消息。

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 团队聊天机器人收到上述消息时,我还想以某种方式捕获事件。我在继承自 ActivityHandler 类的 DialogBot 类中附加了以下事件处理程序。

但是,当使用上述逻辑从机器人外部发送消息时,不会触发上述事件处理程序。

只有当用户在聊天机器人中键入消息时,才会触发这些事件处理程序。

当团队的聊天机器人收到外部消息时应该触发哪个事件以及如何处理该事件。

请帮忙。

谢谢加根

标签: event-handlingbotsmicrosoft-teamsbotframework

解决方案


这个问题有点不清楚,但现在阅读评论我想我更好地理解它。您作为机器人发送消息,但来自机器人外部基本上是主动消息传递)。结果,您的机器人代码根本不会收到通知,因为从 Bot Framework 的角度来看,它为什么会告诉您正在发送消息 - 当然,您已经知道了。在实践中,您只会收到通知:

  1. 当消息发送您的机器人时
  2. 根据对话类型进一步定义。对于 1-1,您将收到所有消息到您的机器人。对于群聊或 Teams 频道对话,您只会收到@提及您的 bot 的消息

推荐阅读