C# Microsoft Botframework:与Bot频道的直接对话

C# Microsoft Botframework:与Bot频道的直接对话,c#,botframework,C#,Botframework,我一直在努力将c#控制台应用程序的直接消息发送到Azure中托管的skype bot,我不断收到错误:操作返回了无效的状态代码“Unauthorized”,但我提供了以下凭据: Web.Config文件 <appSettings> <add key="BotId" value="myBotId" /> <add key="MicrosoftAppId" value="AppId" /> <add key="MicrosoftA

我一直在努力将c#控制台应用程序的直接消息发送到Azure中托管的skype bot,我不断收到错误:操作返回了无效的状态代码“Unauthorized”,但我提供了以下凭据:

Web.Config文件

  <appSettings>
    <add key="BotId" value="myBotId" />
    <add key="MicrosoftAppId" value="AppId" />
    <add key="MicrosoftAppPassword" value="Password" />
  </appSettings>
这是我用来处理bot仿真器的代码

以前有人这样做过吗?请注意,我可以使用以下示例发送消息:

但这是机器人本身使用的代码,我不想在机器人之外使用它


谢谢

找到了解决方案,如果您使用代码在bot外部发送消息,只需添加这一行即可。
MicrosoftAppCredentials.TrustServiceUrl(URL)

在发送此邮件之前,用户是否至少与bot聊天过一次?是的,我有收件人的ChannelAccount id和名称以及发件人地址。找到解决方案,如果您使用代码在bot外部发送邮件,只需添加此行。MicrosoftAppCredentials.TrustServiceUrl(URL);
var userAccount = new ChannelAccount(name: "User", id: "default-user");
var botAccount = new ChannelAccount(name: "Bot", id: "id");
var connector = new ConnectorClient(new Uri("https://f2d92691.ngrok.io"));

IMessageActivity message = Activity.CreateMessageActivity();

if (!string.IsNullOrEmpty(conversationId) && !string.IsNullOrEmpty(channelId))
{
    message.ChannelId = channelId;
}
else
{
    conversationId = (await connector.Conversations.CreateDirectConversationAsync(botAccount, userAccount)).Id;
}

message.From = botAccount;
message.Recipient = userAccount;
message.Conversation = new ConversationAccount(id: conversationId);
message.Text = messageText;
message.Locale = "en-Us";

await connector.Conversations.SendToConversationAsync((Activity)message);