使用 Microsoft Graph API 或 BOT API 发送 MS Teams 消息
Sending an MS Teams message using the Microsoft Graph API or BOT API
我正在尝试实施以下解决方案:一个订阅所有 MS 团队聊天消息的 Web 应用程序。如果消息包含禁止的文本,应用程序应该以某种方式警告用户(理想情况下通过回复相同的消息,或者,如果不可能,发起与用户的对话)。
我能够接收所有聊天 webhook 并处理它们,但我找不到任何方法来使用 Graph API post 将消息返回到 Teams 频道(描述的操作在 https://docs.microsoft.com/en-us/graph/api/channel-post-messagereply?view=graph-rest-beta&tabs=http
应用程序权限不支持 - 只有不适合我们案例的委托)。
所以我正在尝试使用 Bot 框架发送主动消息,但是,bot 框架需要一个我没有的团队对话 ID(图表 API webhook 提供团队、频道和用户 ID,none 被机器人接受 API).
有人知道我可以使用图表 API 提供的团队 ID 和频道 ID 检索团队对话 ID 的方法吗?
谢谢,
旦
频道消息的 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 文档。
我正在尝试实施以下解决方案:一个订阅所有 MS 团队聊天消息的 Web 应用程序。如果消息包含禁止的文本,应用程序应该以某种方式警告用户(理想情况下通过回复相同的消息,或者,如果不可能,发起与用户的对话)。
我能够接收所有聊天 webhook 并处理它们,但我找不到任何方法来使用 Graph API post 将消息返回到 Teams 频道(描述的操作在 https://docs.microsoft.com/en-us/graph/api/channel-post-messagereply?view=graph-rest-beta&tabs=http
应用程序权限不支持 - 只有不适合我们案例的委托)。
所以我正在尝试使用 Bot 框架发送主动消息,但是,bot 框架需要一个我没有的团队对话 ID(图表 API webhook 提供团队、频道和用户 ID,none 被机器人接受 API).
有人知道我可以使用图表 API 提供的团队 ID 和频道 ID 检索团队对话 ID 的方法吗?
谢谢, 旦
频道消息的 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 文档。