Warm tip: This article is reproduced from serverfault.com, please click

javascript-通过Graph Api向团队发送聊天/频道消息

(javascript - Sending chat / channel message to Teams via Graph Api)

发布于 2020-12-03 15:25:53

我有一个SPA,我正尝试通过-POST https://graph.microsoft.com/v1.0/teams/{teamid}/channel/{channelid}/messages代表团队中的用户发送消息

通过相同的。

但我不断收到此错误-

{

"error": {
    "code": "Unauthorized",
    "message": "Unauthorized",
    "innerError": {
        "date": "2020-12-03T06:09:02",
        "request-id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "client-request-id": "xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
    }
}

}

SPA使用Azure AD应用程序注册进行构建,并且已向该应用程序授予以下API权限:ChannelMessage.Send(Delegate),Chat.ReadWrite(Delegate),ChatMessage.Send(Delegate)。

从Microsoft Graph Explorer浏览器门户进行调用时,上述API可以工作。

我还比较了来自Graph Explorer和My Azure AD应用程序在jwt.io上的访问令牌,它们都具有作用域-[ChannelMessage.Send],这是将消息发送到通道所必需的

如果我错过了一些东西或做错了什么,在这方面需要帮助。

Questioner
Abhishek Sharma
Viewed
0
Trinetra-MSFT 2020-12-04 16:22:22

使用发送通道消息图API将消息发布到通道需要ChannelMessage.Send Group.ReadWrite.All权限

这是用于将消息发送到Channel的代码片段,你需要实现authProvider来传递它graphClient,我已经为我的租户对其进行了测试,并且能够在Channel中成功发送消息。 在此处输入图片说明 以下是代码段

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var chatMessage = new ChatMessage
{
    Body = new ItemBody
    {
        Content = "Hello World"
    }
};

await graphClient.Teams["{TeamId}"].Channels["{ChannelId}"].Messages
    .Request()
    .AddAsync(chatMessage);