BotFramework 3.5で構築されたボットをWebAppとしてAzureでホストしています。私はボットがユーザーの入力に応答する必要があるシナリオの実装には何の問題も抱えていませんでした。しかし、いくつかのスケジュールで会話を始めるように彼に教える必要があります。 目標を達成するためには、基本的に単純なコンソールアプリであるWebJobを作成しました。ここではボットからユーザーへのメッセージを開始するのに使用されるコードです:BotFrameworkのボットからユーザへのメッセージの開始
var botAccount = new ChannelAccount(id: from);
var userAccount = new ChannelAccount(id: to);
var conversation = new ConversationAccount(false, conversationId);
var connector = new ConnectorClient(serviceUrl);
IMessageActivity message = Activity.CreateMessageActivity();
message.From = botAccount;
message.Recipient = userAccount;
message.Conversation = conversation;
message.Text = text;
message.Locale = locale;
await connector.Conversations.SendToConversationAsync((Activity)message);
from, to, serviceUrl, conversationId
- 前回の会話から取られているが、私は、彼らが有効である期待します。しかしSendToConversationAsync
例外にスローされます。
System.UnauthorizedAccessException: Authorization for Microsoft App ID 3a26a4d4-f75a-4feb-b3e0-37a7fa24e5fc failed with status code Unauthorized and reason phrase 'Unauthorized' ---> System.Net.Http.HttpRequestException: Response status code does not indicate success: 401 (Unauthorized)
app.configファイルには、APPIDとAppSecretを含む元ボットAPI、同じ値が含まれています。私は同じ話題についていくつかの質問をしましたが、回答を見つけることはできませんでした。
何か不足していますか?ボットに代わってメッセージをコンソールアプリケーションから送信する有効なアプローチですか?このように新しい会話を作成
は、あなたのWebアプリケーションの使用を認証、許可していますか? – Thomas
は、web.configで定義された3つの認証パラメータ(AppId、AppPassword、BotId)を使用します。コンソールアプリケーションに同じ値が注入される – Artem
認証が設定されているWebアプリケーションのコードを投稿できますか?あなたはどのようにWebアプリケーションを認証しますか?あなたはトークンを送っていますか? – Thomas