event-handling - 从 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 类中附加了以下事件处理程序。
- OnMessageActivityAsync
- OnEventActivityAsync
- OnTurnAsync
但是,当使用上述逻辑从机器人外部发送消息时,不会触发上述事件处理程序。
只有当用户在聊天机器人中键入消息时,才会触发这些事件处理程序。
当团队的聊天机器人收到外部消息时应该触发哪个事件以及如何处理该事件。
请帮忙。
谢谢加根
解决方案
这个问题有点不清楚,但现在阅读评论我想我更好地理解它。您作为机器人发送消息,但来自机器人外部(基本上是主动消息传递)。结果,您的机器人代码根本不会收到通知,因为从 Bot Framework 的角度来看,它为什么会告诉您您正在发送消息 - 当然,您已经知道了。在实践中,您只会收到通知:
- 当消息发送到您的机器人时
- 根据对话类型进一步定义。对于 1-1,您将收到所有消息到您的机器人。对于群聊或 Teams 频道对话,您只会收到@提及您的 bot 的消息
推荐阅读
- python-3.x - 是否还创建了内置模块的 pyc 文件?
- google-tag-manager - 可以在gtm脚本上方定义dataLayer,然后将数据推送到gtm脚本下方的dataLayer吗?
- r - 按基于条件创建的组汇总列值
- angular - 是否可以从角度的应用程序代码中强制进行硬应用程序更新(Ctrl + F5 浏览器模拟)?
- python - Python:表达式返回不同的响应 a=a+1 vs a+=1
- python-3.x - 漂亮的汤不解析嵌套表数据
- c# - 如何修复循环的结果
- python-3.x - 计算一组数据点的标准差
- c# - 如何在 C# 中全局声明 XDocument 命名空间?
- c# - 当前上下文中不存在名称“item”