javascript - 通过 Graph Api 向 Teams 发送聊天/频道消息
问题描述
我有一个 SPA,我正在尝试通过 - POST https://graph.microsoft.com/v1.0/teams/{teamid}/channel/{channelid}/messages代表 Teams 中的用户发送消息
通过同样的。
但我不断收到这个错误 -
{
"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 资源管理器门户调用时,上述 API 有效。
我还比较了来自 Graph Explorer 和 My Azure AD 应用程序的 jwt.io 上的访问令牌,它们都有范围 - [ ChannelMessage.Send ],这是向通道发送消息所必需的
如果我错过了什么或者我做错了什么,需要帮助。
解决方案
使用Send Channel Message Graph API 将消息发布到通道需要ChannelMessage.Send
Group.ReadWrite.All
权限
这是向频道发送消息的代码片段,您需要实现authProvider来传递它graphClient
,我为我的租户测试了它,我成功地能够在频道中发送消息。
下面是代码片段
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);
推荐阅读
- date - 如何使用 GREL (OpenRefine) 将日期字符串转换回 unix 时间
- sql-server - 如何在 SQL Server 中授予外部数据源的执行权限
- c++ - 找到对称矩阵的最大元素的最有效算法是什么
- jquery - 如何在列表jquery中的第二个'li'之后添加
- python - 对于 MariaDB,是否有必要在我使用的每个函数上创建和关闭连接?
- sql - 存储过程 oracle 11g 中的 TEMP 表
- css - bootstrap 4 登录模板没有响应。你能明白为什么吗?
- sql - 在 SELECT 语句中将 SQL 列分成它们自己的行
- linux - 如何在单行 sftp put 命令中传递变量和文件名
- json - 如何使用 groovy 反序列化 json