我正在尝试实现以下解决方案:订阅所有MS团队聊天消息的Web应用程序。如果消息中包含禁止的文本,则应用程序应以某种方式警告用户(理想情况下,应回复同一条消息,或者,如果不可能的话,请与用户进行对话)。
我能够接收并处理所有聊天Webhook,但是我找不到任何使用Graph API将消息发布回Teams频道的方法(https://docs.microsoft.com/en-us/graph/api/channel-post-messagereply?view=graph-rest-beta&tabs=http中的操作
不支持“应用程序”权限-仅适合不适合我们情况的委托权限)。
因此,我尝试使用Bot框架发送主动消息,但是,该bot框架需要一个我没有的团队对话ID(图形API Webhook提供了团队ID,渠道ID和用户ID,但这些ID都不为人所接受Bot API)。
有人知道我可以使用图形API提供的团队ID和渠道ID来检索团队对话ID吗?
谢谢, 丹
答案 0 :(得分:0)
ConversationId是channelId和messageId的组合,都可以在您获得webhook notification的有效载荷中找到。您可以通过以下方式通过构建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的答复,请查看Sending Proactive Message文档。