我正在尝试从 Web 作业恢复机器人和用户之间的对话,但我收到了未经授权的异常。我可以在 MessagesController 类中成功回复对话,但是当我尝试在 Web 作业中运行以下代码时,出现以下异常:
private static async Task SendAlertToUser(ChannelAccount botAccount, LipSenseUser user, AlertFlags alert, string extra)
{
Console.WriteLine($"Sending alert to user: {user.Name}");
var sb = new StringBuilder(GetTextFromAlert(alert));
if (!string.IsNullOrEmpty(extra))
{
sb.AppendLine();
sb.Append(extra);
}
var userAccount = new ChannelAccount(user.ChannelId, user.Name);
var connector = new ConnectorClient(new Uri(user.ChannelUri));
var message = Activity.CreateMessageActivity();
message.From = botAccount;
message.Recipient = userAccount;
var conversation = await connector.Conversations.CreateDirectConversationAsync(botAccount, userAccount);
message.Conversation = new ConversationAccount(id: conversation.Id);
message.Locale = "en-Us";
message.Text = sb.ToString();
await connector.Conversations.SendToConversationAsync((Activity)message);
}
Run Code Online (Sandbox Code Playgroud)
例外是:
Exception:System.UnauthorizedAccessException
Authorization for Microsoft App ID 58c04dd1-1234-5678-9123-456789012345 failed with status code Unauthorized and reason phrase 'Unauthorized'
Run Code Online (Sandbox Code Playgroud)
当我检查连接器的凭据时,我发现一切都是正确的。我在 MessagesController 中设置了一个断点,并从那里检查了连接器的凭据,一切都相同。
此外,当我查看 IntelliTrace 时,我看到以下消息:
我的 user.ChannelUri 是“ https://facebook.botframework.com ”,当他们初始化对话时我从用户那里拉下来。这不是正确的 Uri 吗?
我还需要做些什么来发送消息吗?我的 App.config appSettings 看起来像这样:
<appSettings>
<add key="BotId" value="MyBotName" />
<add key="MicrosoftAppId" value="58c04dd1-1234-5678-9123-456789012345" />
<add key="MicrosoftAppPassword" value="5xyadfasdfaweraeFAKEasdfad" />
<add key="AzureWebJobsStorage" value="DefaultEndpointsProtocol=https;AccountName=BLAH;AccountKey=THIS IS A KEY" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
Bot Framework Team 在不同频道上的回答:
您需要添加对以下内容的调用:
MicrosoftAppCredentials.TrustServiceUrl(serviceUrl);
这是在您回复消息时自动完成的,但对于来自另一个进程的主动消息,您需要这样做。
归档时间: |
|
查看次数: |
321 次 |
最近记录: |