2016-04-08 2 views
1

Das Bot Framework WebChat-Steuerelement funktioniert nicht mit dem Token-Protokoll, wie in der Embed the Chat Control Dokumente beschrieben. Hier ist der Code, den ich Mühe, mich mit:Bot-Framework Web-Chat-Token-Protokoll funktioniert nicht

 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>"; 

die WebChatTokenResponse ist

public class WebChatTokenResponse 
{ 
    public string ConversationID { get; set; } 

    public string Token { get; set; } 
} 

Wenn ich debuggen und prallte gegen einen Haltepunkt, ich habe ein ConversationId und einen Token. Es werden keine Ausnahmen ausgelöst.

Wenn ich das Geheimnis nur, wie diese (anstelle der obigen Code, alles funktioniert:

 string webChatSecret = ConfigurationManager.AppSettings["WebChatSecret"]; 
     return $"<iframe width='400px' height='400px' src='https://webchat.botframework.com/embed/PigLatinBotJoeMayo?s={webChatSecret}'></iframe>"; 

Hier sind die Fehlermeldungen ich mit F12-Tools bin zu sehen:

Ich bin einen 500 Internal Server error auf

Anforderungs-URL zu sehen: https://webchat.botframework.com/api/conversations

mit der Fehlermeldung:

{ "message": "Ein Fehler ist aufgetreten" }

Wenn ich geben Sie eine 'hallo' Nachricht an:

Anforderungs-URL: https://webchat.botframework.com/api/conversations/null/messages

Ich erhalte eine 403 Forbidden Nachricht mit der Antwort:

{ "message": "Invalid Token oder geheimen" }

aktualisieren

ich darüber gebloggt, wie ich bei Using the Bot Framework Chat Control diese Arbeit bekam.

Antwort

2

Dies ist ein Bug, den wir vor kurzem eingeführt haben und jetzt beheben.

Wir haben auch einen Doc-Bug - es gibt zwei Möglichkeiten, um ein Token zu erhalten und die andere Möglichkeit wird besser funktionieren, wenn sie mit unserem Web-Chat-Embed verwendet wird. Anstatt POST an/api/conversations zu senden, was eine Konversation erzeugt und ein Token erhält, können Sie einfach GET/api/tokens (mit Ihrem Geheimnis in der Kopfzeile wie zuvor) und Sie werden ein Token erhalten, aber keine Konversation starten . Das Web-Chat-Steuerelement erledigt die Arbeit, die Konversation selbst zu starten. Dies verhindert, dass wir Konversationen vom Bot starten, falls das Steuerelement nicht wirklich geladen ist. Der Aufruf/api/tokens wird wahrscheinlich später am Tag funktionieren.

+0

Danke Dan, das funktioniert jetzt. Die einzige Beobachtung, die ich habe, ist, dass das Token von Anführungszeichen umgeben ist. z.B. "". Ich bereinigte das mit 'token = token.Replace (" \ "", ""); ' –