1

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 チャット コントロールの使用で、これをどのように機能させたかについてブログに書きました。

4

1 に答える 1