首页 > 解决方案 > 主动消息:服务器重新启动时“此请求的授权已被拒绝”

问题描述

我们正在使用 botframework 来增强 Microsoft Teams 中的聊天机器人体验。我们的许多用例都涉及主动向用户发送消息,我们密切关注文档,存储/检索对话引用并从检索到的引用中信任 serviceUrl,从而使我们能够成功发送主动消息。

我们注意到,每当我们重新启动机器人时,在尝试发送主动消息时都会收到以下错误:此请求的授权已被拒绝。

我们第一次遇到这个错误消息是在至少一天没有与机器人交互之后,通过更改以下语句并增加过期时间来解决这个问题serviceUrlMicrosoftAppCredentials.trustServiceUrl(conversationReference.serviceUrl, new Date(8640000000000000));

但是,我们现在每次重新启动机器人服务器时都会收到此消息,这通常是由于我们的 CI/CD 管道而发生的。

我们可以通过事先手动向机器人发送消息来快速解决这个问题,然后这将起作用,但是这非常麻烦,因为我们每天可以进行很多部署。

重现步骤

手动解决

附加上下文

环境:部署到 AWS 的 Node.js Docker 容器

标签: botframework

解决方案


您必须在机器人重新启动后信任 ServiceURL。通常,机器人框架会默默地为每个入站对话启用信任。我们保留了一系列从入站对话中遇到的唯一服务 URL,并且在重新启动我们的机器人时,我们会遍历此列表并在启动任何对话之前信任它们。

这里描述了一个类似的问题:https ://github.com/microsoft/BotBuilder-Samples/issues/2462


推荐阅读