首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用RSC访问聊天消息

用RSC访问聊天消息
EN

Stack Overflow用户
提问于 2021-11-12 12:15:25
回答 1查看 361关注 0票数 0

我正在构建一个团队聊天机器人,它可以查看当前聊天/频道中的信息历史,同时与用户进行对话。

我的bot已被授予它所需的所有RSC (特定资源内容)权限(见下图)。

下面是清单的相关部分:

代码语言:javascript
复制
{
    "$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,如下所示:

代码语言:javascript
复制
GraphServiceClient<?> gsc = GraphServiceClient.builder()
            .authenticationProvider(u -> mac.getToken())
            .buildClient();

接下来,我将使用Graph来提取这些消息。对于通道中的消息,我可以:

代码语言:javascript
复制
gsc.teams("some group id")
            .channels("team id")
            .messages()
            .buildRequest(Collections.emptyList()).get()));

这个很好用。

对于聊天,我做的事情如下:

代码语言:javascript
复制
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

我无法解释为什么查询渠道工作良好,但查询聊天失败。

感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-16 21:22:50

这是一个受保护的API,为了使用它,您首先需要向MicrosoftGraph发出正式请求,请求在没有任何用户交互的情况下使用API的权限

这是受保护API的列表。您需要填充这个表格才能获得所需的权限。

若要请求对这些受保护API的访问,请完成以下请求书。我们每周三审查访问申请,并在每个星期五部署批准,但在美国的主要假日周除外。在这几周提交的申请将在接下来的非假日周处理。

另一种选择是使用委托流。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69942801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档