我从外部(即 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 类中附加了以下事件处理程序。
但是,当使用上述逻辑从机器人外部发送消息时,上述事件处理程序都不会被触发。
仅当用户在聊天机器人中键入消息时才会触发这些事件处理程序。
当团队的聊天机器人收到外部消息时应该触发哪个事件以及我如何处理该事件。
请帮忙。
谢谢 加根
答案 0 :(得分:1)
这个问题有点不清楚,但现在阅读评论我想我更好地理解了。您正在作为机器人发送消息,但是从机器人外部(基本上是主动消息传递)。因此,您的机器人代码根本不会收到通知,因为从 Bot Framework 的角度来看,为什么它会告诉 youyou 正在发送消息 - 你会知道那已经,当然。实际上,您只会收到通知: