Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un dialogo è l'interazione che si verifica tra le query utente e un'applicazione. La gestione dei dialoghi è il processo che definisce il comportamento automatico che dovrebbe avvenire per le diverse interazioni con i clienti. Anche se la comprensione del linguaggio di conversazione può classificare le finalità ed estrarre informazioni tramite entità, Bot Framework SDK consente di configurare la logica applicata per le risposte restituite.
Questa esercitazione illustra come integrare il proprio progetto CLU (Conversational Language Understanding) per un progetto di prenotazione dei voli in Bot Framework SDK che include tre finalità: Prenota volo, Vedi meteoe Nessuno.
Prerequisiti
- Creare una risorsa di Linguaggio nel portale di Azure per ottenere la chiave e l'endpoint. Al termine della distribuzione, fare clic su Vai alla risorsa.
- La chiave e l'endpoint della risorsa creata sono necessari per connettere il bot all'API. La chiave e l'endpoint verranno incollati nel codice riportato di seguito nell'esercitazione.
- Scaricare l'esempio di CoreBotWithCLU.
- Clonare l'intero repository di esempi per ottenere l'accesso a questa soluzione.
Importare un progetto nella comprensione del linguaggio di conversazione
Scaricare il file di FlightBooking.json nell'esempio di Core Bot con CLU, nella cartella di Modelli cognitivi.
Accedere a Language Studio e selezionare la risorsa Lingua.
Passare a Conversational Language Understanding e selezionare il servizio. Si accede così alla pagina dei progetti. Selezionare il pulsante Importa accanto al pulsante Crea nuovo progetto. Importare il file di FlightBooking.json con il nome del progetto come FlightBooking. Questo importerà automaticamente il progetto CLU con tutte le finalità, le entità e le espressioni.
Dopo aver caricato il progetto, selezionare Processi di training a sinistra. Premere Avvia un processo di training, specificare il nome del modello v1 e premere Esegui training. Tutte le altre impostazioni, ad esempio Training standard e le impostazioni di valutazione possono essere lasciate così come sono.
Al termine del training, fare clic su Distribuzione di un modello a sinistra. Selezionare Aggiungi distribuzione e creare una nuova distribuzione con il nome Testing e assegnare il modello v1 alla distribuzione.
Aggiornare il file di impostazioni
Ora che il progetto CLU è stato distribuito ed è pronto, aggiornare le impostazioni che si connetteranno alla distribuzione.
Nell'esempio Core Bot aggiornare il appsettings.json con i valori appropriati.
- Il CluProjectName è FlightBooking.
- Il CluDeploymentName è Testing
- CluAPIKey può essere una delle chiavi nella sezione Chiavi ed Endpoint per la Risorsa della lingua nel portale di Azure. È anche possibile copiare la chiave dalla scheda Impostazioni progetto in CLU.
- CluAPIHostName è l'endpoint disponibile nella sezione Chiavi ed Endpoint per la Risorsa della lingua nel portale di Azure. Notare che il formato deve essere
<Language_Resource_Name>.cognitiveservices.azure.com
senzahttps://
.
{
"MicrosoftAppId": "",
"MicrosoftAppPassword": "",
"CluProjectName": "",
"CluDeploymentName": "",
"CluAPIKey": "",
"CluAPIHostName": ""
}
Identificare i punti di integrazione
Nell'esempio Core Bot è possibile controllare il file FlightBookingRecognizer.cs. È qui che viene eseguita la chiamata API CLU all'endpoint distribuito per recuperare la stima CLU per finalità ed entità.
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);
}
Nella cartella Dialoghi individuare il MainDialog che usa quanto segue per eseguire una stima CLU.
var cluResult = await _cluRecognizer.RecognizeAsync<FlightBooking>(stepContext.Context, cancellationToken);
Segue la logica che determina le operazioni da eseguire con il risultato del CLU.
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;
}
Eseguire il bot nell’ambiente locale
Eseguire l'esempio in locale nel computer OPPURE eseguire il bot da un terminale o da Visual Studio:
Eseguire il bot da un terminale
Da un terminale passare alla cartella cognitive-service-language-samples/CoreBotWithCLU
.
Quindi eseguire il comando seguente
# run the bot
dotnet run
Eseguire il bot in Visual Studio
- Avviare Visual Studio
- Nel menu di spostamento superiore selezionare File, Apri, quindi Progetto/Soluzione
- Passare alla cartella
cognitive-service-language-samples/CoreBotWithCLU
- Selezionare il file
CoreBotCLU.csproj
- Premere
F5
per eseguire il progetto
Testare il bot usando Bot Framework Emulator
Bot Framework Emulator è un'applicazione desktop che consente agli sviluppatori di bot di eseguire il test e il debug dei bot in localhost o in remoto tramite un tunnel.
- Installare l'ultima versione di Bot Framework Emulator.
Connettersi al bot usando Bot Framework Emulator
- Avviare Bot Framework Emulator
- Selezionare File, quindi Apri
- Immettere un URL Bot di
http://localhost:3978/api/messages
, premere Connetti e attendere il caricamento - È ora possibile eseguire una query per esempi diversi, ad esempio "Viaggio dal Cairo a Parigi" e osservare i risultati
Se la finalità superiore restituita da CLU viene risolta in "Prenotazione volo". Il bot chiederà altre domande fino ad archiviare le informazioni necessarie per creare una prenotazione di viaggio. A quel punto, restituirà le informazioni su questa prenotazione all'utente.
Passaggi successivi
Altre informazioni sul Bot Framework SDK.