我正在尝试以编程方式向 Teams 频道发送消息。没有什么特别或奇特的事情发生。
有效负载(JSON 编码):
%{
"createdDateTime" => DateTime.utc_now(),
"from" => %{
"user" => %{
"id" => @user_id,
"displayName" => @display_name,
"userIdentityType" => "aadUser"
}
},
"body" => %{
"content" => message
}
}
我的请求网址:
https://graph.microsoft.com/v1.0/teams/<team_id>/channels/<channel_id>/messages
标头具有授权承载令牌,内容类型设置为 application/json
据我所知(我无法直接访问环境),我们将 api 权限设置为委托权限,而不是应用程序权限。该角色具有 ChannelMessage.Send 权限。我收到这样的回复:
error: %{
code: "Forbidden",
message: "InsufficientPrivileges",
innerError: %{
code: "1",
message: "MessageWritesBlocked-Thread is not marked for import",
date: "2024-03-27T16:55:18",
"request-id": "947c97a0-2bdb-4168-b18e-bdebf8de6c86",
"client-request-id": "947c97a0-2bdb-4168-b18e-bdebf8de6c86"
}
}
访问令牌中发回的角色如下:
"roles": [
"Chat.UpdatePolicyViolation.All",
"Teamwork.Migrate.All",
"Directory.ReadWrite.All",
"Team.Create",
"Group.ReadWrite.All",
"Chat.ReadWrite.WhereInstalled",
"Chat.Read.WhereInstalled",
"Chat.Read.All",
"Chat.ReadBasic.WhereInstalled",
"Chat.ReadWrite.All",
"Chat.ReadBasic.All",
"Chat.ManageDeletion.All",
"Chat.Create"
]
任何有关此错误的帮助,关于我可能缺少哪些权限/角色或其他帮助,将像往常一样受到赞赏。
您需要检查 API 权限并确保正确设置 Microsoft Graph API 权限 ChannelMessage.Send。要将消息发送到 Teams 频道,需要委派权限,但您可能还需要专门用于此任务的 ChannelMessage.Send。