主动消息引发操作返回无效状态代码'Unauthorized'



我正在尝试存储用户和我们的机器人之间聊天的会话引用,并使用该聊天引用稍后发送其他消息。我正在我们的数据库中保存以下实体:

string UserAadObjectId { get; set; }
string UserId { get; set; }
string UserName { get; set; }
string ConversationId { get; set; }
string ConversationType { get; set; }
string ConversationTenantId { get; set; }
string ChannelId { get; set; }
string ActivityId { get; set; }
string BotId { get; set; }
string BotName { get; set; }
string ConversationReference { get; set; }
string ServiceUrl { get; set; }

在为特定用户获取这些实体后,我将创建一个会话引用,如下所示:(其中chatReference是上面实体的sql数据库(

var user = new ChannelAccount(chatReference.UserId, chatReference.UserName, null, chatReference.UserAadObjectId);
var bot = new ChannelAccount(chatReference.BotId, chatReference.BotName);
var conversationAccount = new ConversationAccount(conversationType: chatReference.ConversationType, id: chatReference.ConversationId, tenantId: chatReference.ConversationTenantId);
var convReference = new ConversationReference(activityId: chatReference.ActivityId, user: user, bot: bot, conversation: conversationAccount, channelId: chatReference.ChannelId, serviceUrl: chatReference.ServiceUrl);

运行时:

await turnContext.SendActivityAsync(messageActivity);

我从Bot连接器得到以下错误,我认为:

操作返回无效状态代码"未授权">

{"消息":"此请求的授权已被拒绝。"}

为什么会发生这种情况?知道CCD_ 1和CCD_ 2是正确的。

要避免出现错误,需要执行一系列步骤。

1.禁用安全性并在localhost上测试

检查配置文件中的应用程序ID和密码,并删除用于测试的ID和密码

"MicrosoftAppId": "",
"MicrosoftAppPassword": ""

当您使用核心.Net框架时。添加或编辑appsettings.json中的设置

2.检查机器人的应用程序ID和密码

现在需要检查应用程序ID和密码是否匹配。

这些说明和程序包括CURL使用

要验证您的机器人程序的应用程序ID和密码是否有效,请使用cURL发出以下请求,将app_IDapp_password[/em>替换为您的机器人的应用程序ID

curl -k -X POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token -d "grant_type=client_credentials&client_id=APP_ID&client_secret=APP_PASSWORD&scope=https%3A%2F%2Fapi.botframework.com%2F.default"

此请求尝试将您的机器人的应用程序ID和密码交换为访问令牌。如果请求成功,您将收到一个JSON负载,其中包含access_token属性等。

{"token_type":"Bearer","expires_in":3599,"ext_expires_in":0,"access_token":"eyJ0eXAJKV1Q..."}

3.在localhost上启用安全和测试

<appSettings>
<add key="MicrosoftAppId" value="APP_ID" />
<add key="MicrosoftAppPassword" value="PASSWORD" />
</appSettings>

如果您使用的是.NET的bot框架SDK,请使用上面的代码块

用于程序的完整参考。检查

相关内容

  • 没有找到相关文章

最新更新