我正在构建一个团队聊天机器人,它可以查看当前聊天/频道中的信息历史,同时与用户进行对话。
我的bot已被授予它所需的所有RSC (特定资源内容)权限(见下图)。

下面是清单的相关部分:
{
"$schema": "https://developer.microsoft.com/en-us/json-schemas/teams/v1.11/MicrosoftTeams.schema.json",
"version": "1.0.0",
"manifestVersion": "1.11",
"id": "bd33f8b1-b593-433c-926e-44a27c1bd94a",
...
"permissions": [
"identity",
"messageTeamMembers"
],
...
"bots": [
{
"botId": "e6d93739-a8ab-412d-a4f6-b6f514a3451a",
"scopes": [
"team",
"personal",
"groupchat"
],
"isNotificationOnly": false,
"supportsFiles": true
}
],
"validDomains": [],
"webApplicationInfo": {
"id": "e6d93739-a8ab-412d-a4f6-b6f514a3451a",
"resource": "https://RscBasedStoreApp",
"applicationPermissions": [
"TeamSettings.Read.Group",
"ChannelMessage.Read.Group",
"TeamSettings.Edit.Group",
"ChannelSettings.ReadWrite.Group",
"Channel.Create.Group",
"Channel.Delete.Group",
"TeamsApp.Read.Group",
"TeamsTab.Read.Group",
"TeamsTab.Create.Group",
"TeamsTab.ReadWrite.Group",
"TeamsTab.Delete.Group",
"Member.Read.Group",
"Owner.Read.Group",
"ChatSettings.Read.Chat",
"ChatSettings.ReadWrite.Chat",
"ChatMessage.Read.Chat",
"ChatMember.Read.Chat",
"Chat.Manage.Chat",
"TeamsTab.Read.Chat",
"TeamsTab.Create.Chat",
"TeamsTab.Delete.Chat",
"TeamsTab.ReadWrite.Chat",
"TeamsAppInstallation.Read.Chat",
"OnlineMeeting.ReadBasic.Chat",
"Calls.AccessMedia.Chat",
"Calls.JoinGroupCalls.Chat",
"TeamsActivity.Send.Chat"
]
}
}备注:机器人拥有在聊天和通道中读取消息的权限。具体来说,我的问题影响的是聊天,而不是渠道(我可以很好地获取消息)。
为了做到这一点,我为bot帐户获得了一个JWT令牌,访问Graph,如下所示:
GraphServiceClient<?> gsc = GraphServiceClient.builder()
.authenticationProvider(u -> mac.getToken())
.buildClient();接下来,我将使用Graph来提取这些消息。对于通道中的消息,我可以:
gsc.teams("some group id")
.channels("team id")
.messages()
.buildRequest(Collections.emptyList()).get()));这个很好用。
对于聊天,我做的事情如下:
gsc.chats("29:13qY8hmfkJinH9-v7rYKjCNFHYFJXKbjqR-NyzyKzL694npelHJoq5HrVtqJLRYo79OYeHGQq-bhtJM5N-yKXyQ")
.messages()
.buildRequest().get()));但是,这一次我从Graph中得到了一个错误:
为了简洁起见,一些信息被截断,启用调试日志以获取更多详细信息-- com.microsoft.graph.http.GraphServiceException:错误代码:禁止的错误消息:在不使用资源特定的同意时,被调用的API需要仅在应用程序上下文中访问受保护的API。有关更多细节,请访问https://learn.microsoft.com/en-us/graph/teams-protected-apis。 获取https://graph.microsoft.com/v1.0/chats/29:13qY8hmfkJinH9-v7rYKjCNFHYFJXKbjqR-NyzyKzL694npelHJoq5HrVtqJLRYo79OYeHGQq-bhtJM5N-yKXyQ/messages SdkVersion :graph/v5.6.0
我无法解释为什么查询渠道工作良好,但查询聊天失败。
感谢您的帮助!
https://stackoverflow.com/questions/69942801
复制相似问题