Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Dialogfeld ist die Interaktion zwischen Benutzerabfragen und einer Anwendung. Die Dialogverwaltung ist der Prozess, der das automatische Verhalten definiert, das für unterschiedliche Kundeninteraktionen auftreten soll. Während das Verständnis von Unterhaltungssprachen Absichten klassifizieren und Informationen über Entitäten extrahieren kann, kann das Bot Framework SDK die angewendete Logik für die von ihr zurückgegebenen Antworten konfigurieren.
In diesem Lernprogramm wird erläutert, wie Sie Ihr eigenes Sprachverständnisprojekt (CLU) für ein Flight-Buchungsprojekt im Bot Framework SDK integrieren, das drei Absichten enthält: Flight buchen, Wetter abrufen und keine.
Voraussetzungen
- Erstellen einer Sprachressource im Azure-Portal, um Ihren Schlüssel und Endpunkt abzurufen. Wählen Sie nach Abschluss der Bereitstellung Zu Ressource wechseln aus.
- Sie benötigen den Schlüssel und Endpunkt der von Ihnen erstellten Ressource, um eine Verbindung mit der API herstellen zu können. Der Schlüssel und der Endpunkt werden weiter unten im Tutorial in den Code eingefügt.
- Laden Sie das CoreBotWithCLU-Beispiel herunter.
- Klonen Sie das gesamte Beispiel-Repository, um Zugriff auf diese Lösung zu erhalten.
Importieren eines Projekts in unterhaltungssprachlichem Verständnis
Laden Sie die Datei "FlightBooking.json " im Core Bot mit CLU-Beispiel im Ordner "Kognitive Modelle " herunter.
Melden Sie sich bei Language Studio an, und wählen Sie Ihre Sprachressource aus.
Navigieren Sie zu Conversational Language Understanding, und wählen Sie den Dienst aus. Dadurch werden Sie die Seite "Projekte" weitergeleitet. Wählen Sie die Schaltfläche „Importieren“ neben der Schaltfläche „Neues Projekt erstellen“ aus. Importieren Sie die Datei "FlightBooking.json" mit dem Projektnamen als FlightBooking. Dadurch wird das CLU-Projekt automatisch mit allen Absichten, Entitäten und Ausdrücken importiert.
Nachdem das Projekt geladen wurde, wählen Sie auf der linken Seite Trainingsaufträge aus. Drücken Sie auf "Schulungsauftrag starten", geben Sie den Modellnamen v1 an, und drücken Sie "Train". Alle anderen Einstellungen wie "Standardschulung" und die Auswertungseinstellungen können wie folgt verlassen werden.
Sobald das Training abgeschlossen ist, klicken Sie links auf Bereitstellen eines Modells. Wählen Sie „Bereitstellung hinzufügen“ aus, und erstellen Sie eine neue Bereitstellung mit dem Namen Testen, und weisen Sie der Bereitstellung das Modell v1 zu.
Aktualisieren der Einstellungsdatei
Nachdem Ihr CLU-Projekt bereitgestellt und bereit ist, aktualisieren Sie die Einstellungen, die eine Verbindung mit der Bereitstellung herstellen.
Aktualisieren Sie im Core Bot-Beispiel Ihre appsettings.json mit den entsprechenden Werten.
- Der CluProjectName ist FlightBooking.
- Der CluDeploymentName ist Test
- Der CluAPIKey kann eine der Schlüssel im Abschnitt "Schlüssel" und "Endpunkt" für Ihre Sprachressource im Azure-Portal sein. Sie können ihre Taste auch aus der Registerkarte Project Einstellungen in CLU kopieren.
- Der CluAPIHostName ist der Endpunkt im Abschnitt "Schlüssel und Endpunkt" für Ihre Sprachressource im Azure-Portal. Beachten Sie, dass das Format
<Language_Resource_Name>.cognitiveservices.azure.com
ohnehttps://
.
{
"MicrosoftAppId": "",
"MicrosoftAppPassword": "",
"CluProjectName": "",
"CluDeploymentName": "",
"CluAPIKey": "",
"CluAPIHostName": ""
}
Identifizieren von Integrationspunkten
Im Core Bot-Beispiel können Sie die Datei "FlightBookingRecognizer.cs" auschecken. Hier wird der CLU-API-Aufruf an den bereitgestellten Endpunkt vorgenommen, um die CLU-Vorhersage für Absichten und Entitäten abzurufen.
public FlightBookingRecognizer(IConfiguration configuration)
{
var cluIsConfigured = !string.IsNullOrEmpty(configuration["CluProjectName"]) && !string.IsNullOrEmpty(configuration["CluDeploymentName"]) && !string.IsNullOrEmpty(configuration["CluAPIKey"]) && !string.IsNullOrEmpty(configuration["CluAPIHostName"]);
if (cluIsConfigured)
{
var cluApplication = new CluApplication(
configuration["CluProjectName"],
configuration["CluDeploymentName"],
configuration["CluAPIKey"],
"https://" + configuration["CluAPIHostName"]);
// Set the recognizer options depending on which endpoint version you want to use.
var recognizerOptions = new CluOptions(cluApplication)
{
Language = "en"
};
_recognizer = new CluRecognizer(recognizerOptions);
}
Suchen Sie im Ordner "Dialogfelder" nach dem MainDialog, der folgendes verwendet, um eine CLU-Vorhersage zu erstellen.
var cluResult = await _cluRecognizer.RecognizeAsync<FlightBooking>(stepContext.Context, cancellationToken);
Die Logik, die bestimmt, was mit dem CLU-Ergebnis zu tun ist, folgt dem Ergebnis.
switch (cluResult.TopIntent().intent)
{
case FlightBooking.Intent.BookFlight:
// Initialize BookingDetails with any entities we may have found in the response.
var bookingDetails = new BookingDetails()
{
Destination = cluResult.Entities.toCity,
Origin = cluResult.Entities.fromCity,
TravelDate = cluResult.Entities.flightDate,
};
// Run the BookingDialog giving it whatever details we have from the CLU call, it will fill out the remainder.
return await stepContext.BeginDialogAsync(nameof(BookingDialog), bookingDetails, cancellationToken);
case FlightBooking.Intent.GetWeather:
// We haven't implemented the GetWeatherDialog so we just display a TODO message.
var getWeatherMessageText = "TODO: get weather flow here";
var getWeatherMessage = MessageFactory.Text(getWeatherMessageText, getWeatherMessageText, InputHints.IgnoringInput);
await stepContext.Context.SendActivityAsync(getWeatherMessage, cancellationToken);
break;
default:
// Catch all for unhandled intents
var didntUnderstandMessageText = $"Sorry, I didn't get that. Please try asking in a different way (intent was {cluResult.TopIntent().intent})";
var didntUnderstandMessage = MessageFactory.Text(didntUnderstandMessageText, didntUnderstandMessageText, InputHints.IgnoringInput);
await stepContext.Context.SendActivityAsync(didntUnderstandMessage, cancellationToken);
break;
}
Ausführen des Bots lokal
Führen Sie das Beispiel lokal auf Ihrem Computer aus oder führen Sie den Bot von einem Terminal oder von Visual Studio aus:
Ausführen des Bots über ein Terminal
Navigieren Sie von einem Terminal zum cognitive-service-language-samples/CoreBotWithCLU
-Ordner.
Führen Sie dann den folgenden Befehl aus
# run the bot
dotnet run
Ausführen des Bots aus Visual Studio
- Starten von Visual Studio
- Wählen Sie im oberen Navigationsmenü "Datei", "Öffnen" und dann Project/Lösung aus.
- Navigieren Sie zum Ordner
cognitive-service-language-samples/CoreBotWithCLU
. - Wählen Sie die Datei
CoreBotCLU.csproj
aus. - Drücken Sie die
F5
, um das Projekt auszuführen.
Testen des Bots mit Bot Framework-Emulator
Bot Framework Emulator ist eine Desktopanwendung, mit der Botentwickler ihre Bots auf „localhost“ oder per Remoteausführung über einen Tunnel testen und debuggen können.
- Installieren Sie den neuesten Bot Framework-Emulator.
Herstellen einer Verbindung mit dem Bot über Bot Framework Emulator
- Starten Sie Bot Framework Emulator.
- Wählen Sie "Datei" und dann "Bot öffnen" aus.
- Geben Sie eine Bot-URL ein
http://localhost:3978/api/messages
, und drücken Sie Verbinden, und warten Sie, bis sie geladen wird. - Sie können jetzt verschiedene Beispiele wie "Reisen von Kairo nach Paris" abfragen und die Ergebnisse beobachten.
Wenn die oberste Absicht, die von CLU zurückgegeben wurde, in "Flight buchen" aufgelöst wird. Ihr Bot wird weitere Fragen stellen, bis er genügend Informationen gespeichert hat, um eine Reisebuchung zu erstellen. An diesem Punkt werden die vorliegenden Buchungsinformationen an den Benutzer zurückgegeben.
Nächste Schritte
Erfahren Sie mehr über das Bot Framework SDK.