C# 创建对话时未经授权的Bot框架

C# 创建对话时未经授权的Bot框架,c#,botframework,C#,Botframework,我正试图恢复一个机器人和一个Web作业用户之间的对话,但遇到了一个未经授权的异常。 我可以成功回复MessagesController类中的对话,但当我尝试在Web作业中运行以下代码时,出现以下异常: private static async Task SendAlertToUser(ChannelAccount botAccount, LipSenseUser user, AlertFlags alert, string extra) { Console.Wri

我正试图恢复一个机器人和一个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);
    }
例外情况是:

Exception:System.UnauthorizedAccessException
Authorization for Microsoft App ID 58c04dd1-1234-5678-9123-456789012345 failed with status code Unauthorized and reason phrase 'Unauthorized'
当我检查连接器的凭据时,我发现一切都是正确的。我在MessagesController中设置了一个断点,并从此处检查了连接器的凭据,所有内容都是相同的

此外,当我查看IntelliTrace时,我看到以下消息:

我的user.ChannelUri是“”,当用户初始化对话时,我从用户身上取下了它。这不是正确的Uri吗

我还需要做什么来发送消息?我的App.config appSettings如下所示:


    
    
    
    

来自不同渠道的Bot框架团队的回答:

您需要将呼叫添加到:

MicrosoftAppCredentials.TrustServiceUrl(serviceUrl)

这是在您回复邮件时自动完成的,但对于 您需要从另一个进程发送主动消息来执行此操作


谢谢你的横渡海峡的帖子。我通常发现多通道通信效果最好!
<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>