dan*_*304 6 microsoft-teams microsoft-graph-teams microsoft-graph-api
我正在尝试实现以下解决方案:订阅所有 MS 团队聊天消息的 Web 应用程序。如果消息包含禁止文本,应用程序应以某种方式警告用户(最好是回复同一消息,或者如果不可能,则发起与用户的对话)。
我能够接收所有聊天 Webhook 并处理它们,但我找不到任何方法使用 Graph API 将消息发布回 Teams 频道(https://learn.microsoft.com/en-中描述的操作) us/graph/api/channel-post-messagereply?view=graph-rest-beta&tabs=http
中描述的操作)
应用程序权限不支持
因此,我尝试使用 Bot 框架发送主动消息,但是,Bot 框架需要一个我没有的团队对话 ID(图形 API Webhook 提供团队、频道和用户 ID,但这些 ID 都不被 Bot 接受)机器人 API)。
有谁知道我可以使用图形 API 提供的团队 ID 和频道 ID 检索团队对话 ID 的方法吗?
谢谢,丹
通道消息的 ConversationId 是 channelId 和 messageId 的组合,两者都可以在您获得Webhook 通知的有效负载中找到。您可以通过构建 conversionId 来回复现有对话,如下所示:
conversationId = $"{channelId};messageid={messageId}"
Run Code Online (Sandbox Code Playgroud)
为了回复工作,您的机器人需要安装在团队中,并且应该将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);
Run Code Online (Sandbox Code Playgroud)
对于 1:1 回复 - 请查看发送主动消息文档。
| 归档时间: |
|
| 查看次数: |
1947 次 |
| 最近记录: |