Virtueller Assistent und Skill von TypeScript
Typoskript
Beim Authentifizierungsversuch wird der folgende Fehler ausgegeben
Fehler: DialogContext.beginDialog(): Ein Dialog mit der ID 'AuthPrompt' wurde nicht gefunden.
bei WasserfallStepContext.
bei Generator.nächste (
unter D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:7:71
bei neuem Versprechen (
at __awaiter (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:3:12)
at WaterfallStepContext.beginDialog (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:119:16)
at MultiProviderAuthDialog.firstStep (D:\home\site\wwwroot\node_modules\bot-solutions\lib\authentication\multiProviderAuthDialog.js:75:34)
bei WasserfallDialog.
bei Generator.nächste (
unter D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\waterfallDialog.js:7:71
Stellen Sie virtuellen Assistenten und Fähigkeiten bereit. Aktivieren Sie den MultiProviderAuthDialog im Skill
Verwenden Sie den Authentifizierungsdialog, um sich bei Azure Active Directory v2 zu authentifizieren
Erhalten Sie eine Login-Karte, um sich anzumelden
Fehler: DialogContext.beginDialog(): Ein Dialog mit der ID 'AuthPrompt' wurde nicht gefunden.
bei WasserfallStepContext.
bei Generator.nächste (
unter D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:7:71
bei neuem Versprechen (
at __awaiter (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:3:12)
at WaterfallStepContext.beginDialog (D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\dialogContext.js:119:16)
at MultiProviderAuthDialog.firstStep (D:\home\site\wwwroot\node_modules\bot-solutions\lib\authentication\multiProviderAuthDialog.js:75:34)
bei WasserfallDialog.
bei Generator.nächste (
unter D:\home\site\wwwroot\node_modules\botbuilder-dialogs\lib\waterfallDialog.js:7:71
Danke @tomSauret847 für die Meldung dieses Problems! Sobald wir ein Update haben, melden wir uns wieder .
Hallo @tomSauret847 - Entschuldigung für die Verzögerung. Wir haben das Problem mit dem TypeScript-Skill erfolgreich reproduziert , indem wir die folgenden Schritte ausführen:
OAuthPromptSettings
Array an den MultiProviderAuthDialog
Konstruktorappsettings.oauthConnections
zu den Eigenschaften von botSettings
Add AADv2
Verbindung hinzuAADv2
Verbindung zur Registrierung in Azure einSobald wir ein Update haben, melden wir uns wieder .
Hallo @tomSauret847 - wir haben dieses Problem in diesem Commit behoben .
Dies war tatsächlich ein Problem in der Bibliothek bot-solutions
, und wir haben geplant, dass der Fix mit der Version 1.0 der Bibliothek veröffentlicht wird.
Wenn Sie die Fehlerbehebung in der Zwischenzeit selbst testen möchten, können Sie die folgenden Schritte ausführen :
npm install
, um die Abhängigkeiten zu installieren.npm run build
, um die Lösung zu erstellen.npm pack
, um eine .tgz
Datei zu generieren. Es sollte am selben Ort eine Datei namens bot-solutions-version.tgz erstellen"bot-solutions": "^1.0.0"
zu "bot-solutions": "<PATH_TO_TGZ>"
Wir werden auf Ihre Antworten aufmerksam sein 😊.
Vielen Dank, dass Sie sich mit diesem @Batta32 befasst haben. Ich
Fehler: Verbindungseinstellung mit dem Namen {Verbindungsname} konnte nicht gefunden werden
Ich richte die Verbindung wie hier beschrieben ein , um das SSO für einen Skill einzurichten.
Benötigen wir weiterhin eine Authentifizierungsverbindung in jedem Skill mit den Typoskript-Skills?
Oder können wir das einzelne SSO verwenden, wie es für die C#-Kenntnisse beschrieben ist?
Wenn ich die Verbindung zum Skill hinzufüge, erhalte ich die Anmeldeaufforderung wie Sie, aber ich erhalte das Token nach Abschluss der Anmeldung nicht zurück. Wenn Sie klären könnten, ob wir eine einzelne Verbindung in der VA einrichten müssen oder wenn Wir müssen Verbindungen in jedem der Skills einrichten, die eine Authentifizierung erfordern.
Danke @tomSauret847 für deine Antwort. Sobald wir ein Update haben, melden wir uns wieder !
Hallo @tomSauret847 - wir haben das Problem erfolgreich reproduziert . Das liegt daran, dass sich die Eigenschaft name
in oauthConnections
von appsettings.json
von der Eigenschaft connectionName
in OAuthPromptSettings
Sie verwenden.
Wir werden dies weiterhin überprüfen und die von Ihnen oben genannten Fragen analysieren. Sobald wir ein Update haben, melden wir uns wieder .
Die Schritte, die wir befolgten, um das Problem zu reproduzieren, waren:
name
in oauthConnections
von appsettings.json
von der Eigenschaft connectionName
in OAuthPromptSettings
Sie verwenden_Wenn Verbindungsname und Name unterschiedlich sind, wird das Problem reproduziert_
_Problem reproduziert_
Hallo @tomSauret847
Benötigen wir weiterhin eine Authentifizierungsverbindung in jedem Skill mit den Typoskript-Skills?
Sie benötigen in jedem TypeScript-Skill eine Authentifizierungsverbindung, bis die Version 1.0 des TypeScript-Skills veröffentlicht wird.
Oder können wir das einzelne SSO verwenden, wie es für die C#-Kenntnisse beschrieben ist?
SSO für TypeScript kann nicht verwendet werden, wie es für die C#-Kenntnisse beschrieben ist, da die Version 1.0 von TypeScript noch nicht veröffentlicht wurde.
Lass uns wissen, ob dir diese weiterhelfen 😊.
@tomSauret847 - Der Fehler Error: Could not find Connection Setting with name {connection name}
liegt daran, dass sich die Eigenschaft name
in oauthConnections
von appsettings
von der Eigenschaft connectionName
in OAuthPromptSettings
Sie verwenden.
Um dies zu lösen, müssen Sie überprüfen, ob beide Eigenschaften gleich sind .
Für weitere Informationen können Sie den Kommentar oben überprüfen.
Danke @Batta32, dass du dir das
Wird dieser Fix für die Authentifizierung vor der Version 1.0 in NPM veröffentlicht?
Für unsere Produktionsumgebung benötigen wir veröffentlichte NPM-Pakete, daher müssen wir diesen Fix veröffentlichen, bevor wir diese VA in die Produktion verschieben können. Ich werde auf Ihre Antwort aufmerksam sein.
@tomSauret847 - Danke für deine Antwort! Wir fügen diese Fixes in die PRs von TypeScript Version 1.0 ein:
[TypeScript][Bot-Solutions] Implement changes in Bot-Solutions to 1.0 release
[TypeScript][Virtual Assistant] Implement changes in Virtual Assistant to 1.0 release
[TypeScript][Skill] Implement changes in Skill to 1.0 release
Wir werden Sie informieren, sobald wir dazu ein Update haben. In der Zwischenzeit arbeiten wir daran, den Authentifizierungsprozess in TypeScript zu validieren.
@tomSauret847 - Wir haben ein weiteres Problem festgestellt, dass die Skill State- Variable während des Authentifizierungsprozesses _undefined_ war.
Wir haben uns den PR #3561 als Richtlinie genommen, der einen Standardwert für den Skill State-Accessor festlegt, den wir in dieses Commit integriert haben .
Nach dem Anwenden dieser Änderungen funktioniert der Authentifizierungsprozess ordnungsgemäß. Dieses Problem wird behoben, sobald TypeScript v1.0 zusammengeführt wird.
Dies ist unsere Umgebung, die diesen Zweig verwendet : feature/southworks/test-fix-auth-skill
:
Wenn Sie den Fix in der Zwischenzeit selbst testen möchten, können Sie die folgenden Schritte ausführen:
npm install
, um die Abhängigkeiten zu installieren.npm run build
, um die Lösung zu erstellen.npm pack
, um eine .tgz-Datei zu generieren. Es sollte am selben Ort eine Datei namens bot-solutions-version.tgz erstellen"bot-solutions": "^1.0.0"
zu "bot-solutions": "<PATH_TO_TGZ>"
npm install
, um die Abhängigkeiten zu installieren.npm run build
, um die Lösung zu erstellen.Wir sind aufmerksam auf Ihre Antwort. 😊
_SkillState-Variable erhält einen undefinierten Wert_
_Authentifizierungsprozess funktioniert korrekt_
Nochmals vielen Dank @Batta32! Ich habe das 1.0- Paket zum Testen verwendet. Ich muss immer noch eine Verbindungseinstellung im Skill beibehalten, aber ich kann die Authentifizierung zum Laufen bringen. Ich konnte sehen, wo die VA die Token-Antwort empfängt und diese zur Verarbeitung an den Skill weiterleitet.
@Batta32 Wir haben die Authentifizierung in 2 unserer Fähigkeiten eingerichtet und sie funktioniert im Teams-Kanal gut. Der Direktleitungskanal kommt an der Authentifizierungsaufforderung nicht vorbei. Der Skill erhält das Token nach erfolgreicher Anmeldung nicht zurück. Dieses Problem tritt nur in unserem Direktverbindungskanal auf. Wir verwenden den bereitgestellten Beispiel-Direktverbindungsclient und aktivierten die erweiterten Authentifizierungsoptionen, sodass wir den "Magischen Code" nicht eingeben. Es funktionierte vor dem Hinzufügen der erweiterten Authentifizierung, aber nach dem Hinzufügen dieser Funktion erhält der Skill die Token-Antwort nicht mehr zurück. Wenn wir den Skill abbrechen und in diesen Dialog zurückkehren, ist das Token vorhanden und wir können den Dialog abschließen. Lassen Sie es mich wissen, wenn Sie eine Idee haben, woran das liegen könnte.
Danke @tomSauret847 , wir werden dieses Szenario überprüfen und uns so schnell wie möglich bei Ihnen
Um das Szenario zu überprüfen:
Nochmals vielen Dank angeschaut haben. Wir verwenden das Direct Line-Beispiel aus dem Botbuilder-Solutions-Repository, das sich hier befindet
Der "magische Code" wird in dieser Stack-Überlauf-Frage hier etwas erklärt
Es ist nur der Code, den der Bot-Benutzer nach erfolgreicher Authentifizierung kopieren und wieder in die Konversation einfügen muss. Durch die Implementierung der erweiterten Authentifizierung entfällt dieser Schritt für den Bot-Benutzer, sodass er sich nur noch authentifizieren muss und die Konversation voranschreitet, während das Token im Hintergrund an den Bot zurückgegeben wird.
Vielen Dank @tomSauret847 , wir werden dies überprüfen und Sie hier über Updates informieren 😊!
Hallo @tomSauret847 , wir konnten dieses Problem
Wir haben uns einige Fragen für Sie ausgedacht:
Dies ist das Setup, das wir verwendet haben:
{
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"AllowedHosts": "*",
"BotName": "skillbot-name",
"DirectLineSecret": "XXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"EnableDirectLineEnhancedAuthentication": true,
"SpeechServiceRegionIdentifier": "",
"SpeechServiceSubscriptionKey": ""
}
Die Schritte, die wir befolgt haben, sind:
Wir werden auf Ihre Antwort aufmerksam sein.
Vielen Dank @matiasroldan6, dass Sie sich das angesehen haben. Um deine Fragen zu beantworten
Wir haben die Benutzer-ID im Direktverbindungsclient auf "dl_xxxx" gesetzt
Wir haben die Azure AD v2 Authentifizierung in der Verbindung auf dem Skill und VA
Wir haben die appsettings.json des Direktverbindungsclients genauso eingestellt wie oben
Wir können den Direktleitungskanal nicht für die Fertigkeit verwenden und verwenden ihn nur für die VA
Wir können die Authentifizierung im Teams-Kanal verwenden, wobei das einzige Problem darin besteht, dass die Dialognachrichten nicht in Ordnung sind. Die erste stepContext.context.sendActivity('message') kann erst eine Minute später in der Konvertierung gesendet werden. Dies geschieht nur in Dialogfeldern, in denen die Authentifizierung enthalten ist, und nur im Teams-Kanal.
Wir verwenden die Bot-Lösungen 1.0, die sich hier befindet
Bitte lassen Sie es mich wissen, wenn Sie weitere Informationen zum Skill und zur VA benötigen
Hallo @tomSauret847 , wir konnten ein Auftreten dieses Problems
In unserem Szenario waren die vertrauenswürdigen Ursprungsadressen im Directline-Kanal das Problem. Zum Beispiel müssen die Direct Popup besagt , dass der Ursprung
Um zu überprüfen, ob dies auch Ihr Problem ist, können Sie versuchen, als vertrauenswürdige Ursprünge festzulegen:
Ihre Bot-Adresse (entweder https://xxxxx.azurewebsites.net oder https://xxxx.ngrok.io, wenn Sie lokal debuggen)
Ihr localhost, wenn Sie ihn brauchen, als http://localhost
Die Einstellung, um dies zu reproduzieren, war:
Unsere Reproschritte waren:
Bitte lassen Sie es uns wissen, wenn dies hilfreich ist. Wir werden auf Ihre Antworten aufmerksam sein.
Vielen Dank @matiasroldan6, dass Sie sich das angesehen haben. Die oben angezeigten Einstellungen sind die gleichen, die wir verwenden. Wir haben die localhost-Route entfernt und haben nur die Bot-Adresse in den vertrauenswürdigen Ursprüngen für den Direktleitungskanal (https://xxxxx.azurewebsites.net). Der Skill reagiert nach der Anmeldeaufforderung immer noch nicht und wenn wir die Konversation abbrechen und den Skill erneut aufrufen, erhält er das Token und setzt den Dialog fort. Wir können den Skill immer noch nicht abrufen, um das Token zu erhalten, nachdem sich der Benutzer angemeldet hat.
Danke für deine Antwort @tomSauret847 - wir werden weiter daran arbeiten, um die Lösung für dieses Problem zu finden 😊.
Wir haben Fragen, um zu verstehen, wie Sie den azurewebsites.net
Endpunkt unter Berücksichtigung der Version 1.0 der Bot-Lösungen (PR #3583) verwenden:
Messaging endpoint
Ihres veröffentlichten Web App Bot (Virtual Assistant)?.tgz
der Bibliothek verwendet haben. Ist das richtig?Danke @Batta32
Danke @tomSauret847 , wir werden dieses Problem mit diesen neuen Informationen, die Sie bereitgestellt
Hallo @tomSauret847 , wir haben ein Vorkommen dieses Problems erfolgreich reproduziert.
Bei Ihren vorherigen Antworten ist uns aufgefallen, dass Sie Ihre Bot-URL als vertrauenswürdigen Ursprung verwenden.
Laut diesem Kommentar und dieser Dokumentation sollten Sie die URL Ihres Chat-Clients haben.
Unsere Aufstellung war:
Schritte:
Wir werden dieses Problem weiterhin überprüfen, da wir bestätigt haben und wie Sie erwähnt haben, dass dies in Microsoft Teams und Emulator funktioniert.
Hallo @tomSauret847 , wir haben den Authentifizierungsprozess mit Enhanced Authentication erfolgreich ausgeführt.
Wir haben uns einige Fragen ausgedacht, damit Sie auf unserer Seite nachsehen können:
<WEB_APP_BOT_NAME>
durch den Namen Ihrer Bot-Ressource ersetzen? Überprüfen Sie, ob Sie node_modules
, lib
und den Rest der Ordner haben.Das ist unsere Umgebung :
Wir sind diesen Schritten gefolgt:
.tgz
Datei in beiden Beispielen zu speichern"bot-solutions": ".//TGZ//bot-solutions-1.0.0.tgz"
der Botsdeploy.ps1
publish.ps1
Skriptrun sample dialog
Last but not least haben wir bestätigt , die gleichen Schritte C # Bots verwenden und prüfen, richtig zu arbeiten.
Wir werden auf Ihre Antwort aufmerksam sein 😊
_Konfiguration der erweiterten Authentifizierung_
_Erfolgreiche Kommunikation mit Enhanced Authentication und TypeScript-Bots_
_Erfolgreiche Kommunikation mit Enhanced Authentication und C#-Bots_
Danke @VictorGrycuk. Wir entschuldigen uns für die späte Antwort, die wir zum Einrichten einer Testinstanz zur Überprüfung des Fixes benötigt haben. Wir konnten die Authentifizierung in der Testinstanz zum Laufen bringen und das Problem eingrenzen.
Für unsere Instanz der VA /Skills haben wir sie hinter einem App-Gateway mit einer Firewall. Dies scheint der Grund zu sein, warum die erweiterte Authentifizierung nicht funktioniert. Wenn wir dies auf einer VA und einem Skill außerhalb dieser Konfiguration implementieren, funktioniert es ordnungsgemäß. Das App-Gateway fügt einen anderen Host in die Mischung ein und wir denken, dass dies das Token blockiert. Wir haben also folgende Frage,
Gibt es eine Möglichkeit, die erweiterte Authentifizierung mit einem Bot hinter einem App Gateway zum Laufen zu bringen?
Großartig @tomSauret847! Wir werden eine Recherche und einige Tests durchführen, um einen Weg zu überprüfen, wie die erweiterte Authentifizierung mit einem Bot hinter einem App-Gateway funktioniert.
Sobald wir dazu ein Update haben, geben wir hier Bescheid 😊.
Hallo @tomSauret847 , wir haben ein wenig recherchiert und sind auf einige Fragen gekommen .
Wir werden auf Ihre Antwort aufmerksam sein 🙂
Vielen Dank, dass Sie @VictorGrycuk geantwortet haben. Hier sind die Antworten auf unsere Fragen.
Wir testen mit den Bots, die in Azure bereitgestellt werden. Wir können keinen Tunnel erstellen, um lokal zu testen.
Ja, wir verwenden ein Azure-Anwendungsgateway mit einer WAF, wie in Ihrem Link beschrieben
Dies sind TypeScript-Bots (VA und 2 Skills mit Authentifizierung). Wir verwenden nur 1 C#-Skill, um das Problem mit der synchronen Schleife zu
Hallo @tomSauret847 , entschuldigen Sie die Verzögerung - wir denken, dass es möglich sein sollte , Enhanced Authentication mit einem Azure App Gateway mit den Bots dahinter zu verwenden.
Ein paar zusätzliche Fragen :
Komponenten :
Konfiguration :
Wir werden daran arbeiten, dieses Szenario zu replizieren.
Danke @VictorGrycuk Die Antworten auf deine Fragen sind
Können Sie mit einem Emulator über die öffentliche IP des Gateways eine Verbindung zum Virtual Assistant herstellen? In unseren Tests haben wir bestätigt, dass dies möglich ist
Können Sie sich über die VA ohne erweiterte Kommunikation mit einem Skill verbinden und mit ihm kommunizieren?
Hallo @tomSauret847 , wir können bestätigen, dass die erweiterte Authentifizierung mit den Bots hinter einem Azure Application Gateway funktioniert .
Wir haben die PR #3694 erstellt , die eine neue Dokumentation zum Konfigurieren eines Azure Application Gateway mit einem bereitgestellten Bot enthält.
Wir haben unseren Test mit diesen Schritten durchgeführt :
Da dies ein Konfigurationsproblem von Azure Application Gateway zu sein scheint, empfehle ich Ihnen, unter https://stackoverflow.com/questions/tagged/botframework nach Vorschlägen zu fragen. und wenn Sie in Ordnung sind, können wir dieses Problem schließen 🙂.
Danke @VictorGrycuk Wir werden die von Ihnen geposteten Informationen Link defekt ist.
Danke @tomSauret847 , dieser Link führt zum Konfigurieren der Integritätsprüfung eines Gateways mit einem TypeScript-Bot (sowie dieses Bild ), sobald die Dokumente in den master
Zweig zusammengeführt wurden, da die Dokumentation {{site.baseurl}}
um die URLs generieren.
@peterinnesmsft - wir können das Problem aufgrund von Inaktivität schließen. @tomSauret847 Wenn weiterhin Probleme auftreten, können Sie sie
Wenn Sie Fragen haben, wenden Sie sich bitte an https://stackoverflow.com/questions/tagged/botframework.
Der gesamte Authentifizierungsprozess wird gelöst, sobald die folgenden PRs für TypeScript Version 1.0 zusammengeführt werden:
[TypeScript][Bot-Solutions] Implement changes in Bot-Solutions to 1.0 release
[TypeScript][Virtual Assistant] Implement changes in Virtual Assistant to 1.0 release
[TypeScript][Skill] Implement changes in Skill to 1.0 release
Danke @Batta32 für deine Hilfe dabei. Wir müssen diesen Abschnitt vorerst pausieren, daher werde ich diese Ausgabe schließen und bei Problemen erneut öffnen, wenn wir sie wieder aufnehmen.
@Batta32 Wir haben eine
Hallo @tomSauret847 , SSO ist derzeit für TypeScript nicht verfügbar, da es in Version 1.0 eingeführt wird. Die PRs von TypeScript Version 1.0 sollten genehmigt und zusammengeführt werden, um eine neue Version mit dieser Funktion zu veröffentlichen.
Wir werden Sie informieren, sobald wir ein Update haben 😊.
Hilfreichster Kommentar
Nochmals vielen Dank @Batta32! Ich habe das 1.0- Paket zum Testen verwendet. Ich muss immer noch eine Verbindungseinstellung im Skill beibehalten, aber ich kann die Authentifizierung zum Laufen bringen. Ich konnte sehen, wo die VA die Token-Antwort empfängt und diese zur Verarbeitung an den Skill weiterleitet.