Bot Framework の WebChat コントロールは、チャット コントロールの埋め込みに関するドキュメントで説明されているように、Token プロトコルでは機能しません。これが私が問題を抱えているコードです:
string webChatSecret = ConfigurationManager.AppSettings["WebChatSecret"];
var request = new HttpRequestMessage(HttpMethod.Post, "https://webchat.botframework.com/api/conversations");
request.Headers.Add("Authorization", "BOTCONNECTOR " + webChatSecret);
HttpResponseMessage response = await new HttpClient().SendAsync(request);
string responseJson = await response.Content.ReadAsStringAsync();
WebChatTokenResponse webChatResponse = JsonConvert.DeserializeObject<WebChatTokenResponse>(responseJson);
return $"<iframe width='400px' height='400px' src='https://webchat.botframework.com/embed/PigLatinBotJoeMayo?t={webChatResponse.Token}'></iframe>";
WebChatTokenResponse は
public class WebChatTokenResponse
{
public string ConversationID { get; set; }
public string Token { get; set; }
}
デバッグしてブレークポイントにヒットすると、ConversationID と Token があります。例外はスローされていません。
このようにシークレットを使用するだけの場合 (上記のコードの代わりに、すべてが機能します:
string webChatSecret = ConfigurationManager.AppSettings["WebChatSecret"];
return $"<iframe width='400px' height='400px' src='https://webchat.botframework.com/embed/PigLatinBotJoeMayo?s={webChatSecret}'></iframe>";
F12 ツールで表示されるエラー メッセージは次のとおりです。
500 内部サーバー エラーが表示されます
リクエスト URL: https://webchat.botframework.com/api/conversations
エラーメッセージとともに:
{ "メッセージ": "エラーが発生しました。" }
「こんにちは」メッセージを入力すると:
リクエスト URL: https://webchat.botframework.com/api/conversations/null/messages
応答とともに 403 Forbidden メッセージを受け取ります。
{ "メッセージ": "トークンまたはシークレットが無効です" }
アップデート
Bot Framework チャット コントロールの使用で、これをどのように機能させたかについてブログに書きました。