我正在尝试实施以下解决方案:订阅所有 MS 团队聊天消息的 Web 应用程序。如果消息包含被禁止的文本,应用程序应该以某种方式警告用户(最好通过回复相同的消息,或者,如果不可能,启动与用户的对话)。
我能够接收所有聊天 webhook 并处理它们,但我找不到任何方法使用 Graph API(https://docs.microsoft.com/en- 中描述的操作)将消息发回 Teams 频道
应用程序权限不支持us/graph/api/channel-post-messagereply?view=graph-rest-beta&tabs=http - 只有不适合我们情况的委派权限)。
所以我正在尝试使用 Bot 框架发送主动消息,但是,bot 框架需要一个我没有的团队对话 ID(图形 API webhook 提供了团队、频道和用户 ID,但没有一个被接受Bot API)。
有谁知道我可以使用图形 API 提供的团队 ID 和频道 ID 检索团队对话 ID 的方法吗?
谢谢,丹
频道消息的 ConversationId 是 channelId 和 messageId 的组合,两者都可以在您收到webhook 通知的有效负载中找到。您可以使用以下方法通过构建 converstionId 来回复现有对话:
conversationId = $"{channelId};messageid={messageId}"
为了回复工作,您的 Bot 需要安装在团队中,并且应该在某个地方保存serviceURL以供参考。这是示例代码,显示了如何回复现有消息。
var serviceURL = "YOUR Service URL- You get this in each bot payload";
MicrosoftAppCredentials.TrustServiceUrl(serviceURL, DateTime.MaxValue);
using var connector = new ConnectorClient(new Uri(serviceURL, MicrosoftAppId, MicrosoftAppPassword);
var conversationId = $"{channelId};messageid={messageId}";
var replyActivity = MessageFactory.Text($"This is simple reply to existing conversation.");
replyActivity.Conversation = new ConversationAccount(id: conversationId);
var response = await connector.Conversations.SendToConversationAsync(conversationId, replyActivity);
对于 1:1 回复 - 请查看发送主动消息文档。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句