2016-08-12 5 views
0

Ich habe einen Bot, der lokal funktioniert, wenn Sie den Emulator verwenden, aber wenn ich versuche, den WebChat oder Skype zu verwenden. Es funktioniert nur in einer Richtung (das heißt, die Anfrage kommt von Webchat und Skype, aber die Antwort zurück zu ihnen geht nicht). Mein Code ist komplexer, aber ich bekomme die gleiche Antwort, wenn ich den Code unten verwende.BotFramework WebChat keine Nachrichten empfangen.

Ich verwende NGrok, um auf meine lokale Maschine zu zeigen und die Ngrok-URL als den Messaging-Endpunkt zu verwenden. Wie Sie sehen können, kommt der Test des Bot zurück als akzeptiert.

BotFramework Screen 1

I VSCode im Debug-Modus verwenden und Anbringen so, dass ich durch Schritt kann. Wenn ich aus dem Emulator laufen, es gefangen wird, kann ich durch debuggen und die „Hallo Welt“ vom

session.send("Hello World"); 

geschickt zurückerhalten, wenn ich von Skype oder Webchat Kanälen versuchen. Es trifft den Endpunkt und durchläuft den Code wie der Emulator. Aber die session.send gibt nichts zurück zu Skype oder dem Webchat (zumindest nichts zeigt sich)

Wenn ich auf den Verkehr schaue. Der Unterschied zwischen den beiden (Emulator vs andere) ist, dass

1) Ich bekomme sowohl eine 202 angenommen UND 100 Fortsetzung (Nein 100 von Skype oder WebChat fortsetzen) 2) Der Autorisierungsträger hat ein Token drin. Das Gleiche passiert, wenn ich es in Azur lege und es von dort aus starte.

jede Hilfe wäre willkommen.

enter image description here

Antwort

3

Nachdem wir das Problem bei the BotBuilder Gitter Channel durchgegangen sind, haben wir das Problem gelöst. Es stellte sich heraus, dass die Umgebungsvariablen MICROSOFT_APP_ID und MICROSOFT_APP_PASSWORD nicht richtig gesetzt waren.

Ich dachte, ich würde hier posten, da dies nützliche Informationen für andere sein könnte, die das gleiche Problem haben.

Die Tatsache, dass das BotBuilder SDK Sie nicht über diese fehlende Konfiguration informiert hat, ist ein Fehler, und ich arbeite an einem Fehlerbericht dafür.

+0

für Klarheit, ich mache einen Workshop, so wollte nicht jeder in den Workshop in die Cloud hochladen. Ich wollte es lokal ausführen, "als ob" es in der Cloud gehostet würde. Ich wollte auch debuggen. Ich setze Umgebungsvariablen, aber ich setze sie auf meinem Computer unter System Environment-Variablen.Während ich im --debug-Modus laufe, gehe ich davon aus, dass sie von dort nicht gelesen werden, also wurden sie zum Abschnitt "env" des Launch-Bereichs der Datei launch.json hinzugefügt. –

+0

Um noch einmal zu folgen. Der Grund dafür, dass ich sie nicht in meine Systemvariablen gesetzt habe, ist, dass ich meine Konsole nie neu gestartet habe, damit sie nicht angezeigt wurden. Wenn Sie dies vorübergehend auch auf dem Mac tun möchten, exportieren Sie einfach VARNAME = "my value" oder echo "NAME = VALUE; exportieren Sie NAME" >> ~/.profile, um sie zu speichern –

0

Zuerst würde ich sehr empfehlen Einhaken Azure App Insights für Ihren Bot in der Bot-Registrierung. Wir loggen viel dort und ich glaube, für die ersten 5 Millionen Datenpunkte pro Monat.

In unseren Protokollen werden Anrufe vom Bot zu Skype mit einer 403 zurückgewiesen. Wahrscheinlich sind Ihre MSAAppID und MSAAppPassword nicht richtig eingestellt und als Ergebnis werden Ihre Anfragen in den Dienst nicht richtig signiert.

Lassen Sie uns wissen, wenn Sie nichts in dieser Untersuchung finden.

+0

Danke Jim Es hat sich darauf bezogen. Ich hatte die Umgebungsvariablen auf meinem Rechner eingerichtet, aber nicht in der Datei launch.json. Sobald ich sie dem env-Abschnitt hinzugefügt habe, hat es funktioniert. Es scheint, dass das SDK die Fehler verschluckt hat und das Überprüfen der Uncaught Exception-Box half herauszufinden, was vor sich ging. Danke an jorenl https://github.com/jorenl vorbei an gitter mit mir durch zu gehen. –

Verwandte Themen