Guida rapida: evasione degli ordini

Questa guida mostra come integrare l'agente con i servizi utilizzando fulfillment. L'integrazione del servizio ti consente di eseguire azioni basate sulle espressioni dell'utente finale e inviare risposte dinamiche all'utente finale.

Prima di iniziare

Se non prevedi di utilizzare il fulfillment, puoi saltare questa guida rapida.

Questi passaggi utilizzano Cloud Functions e presuppongono una conoscenza di base di Node.js. Se vuoi creare il fulfillment utilizzando il tuo server o un'altra lingua, consulta la documentazione più dettagliata relativa al fulfillment.

Prima di leggere questa guida, effettua le seguenti operazioni:

  1. Leggi le nozioni di base di Dialogflow.
  2. Esegui la procedura di configurazione.
  3. Esegui i passaggi nella guida rapida Creazione di un agente. I passaggi riportati di seguito continuano a funzionare per lo stesso agente. Se non disponi più dell'agente, puoi scaricare build-agent-quickstart.zip e importare il file.

L'editor incorporato

La console di Dialogflow dispone di un editor di codice integrato, chiamato editor in linea, che puoi utilizzare per creare il codice di fulfillment ed eseguire il deployment del codice in Cloud Functions. Cloud Functions prevede addebiti associati, ma il servizio è disponibile senza costi fino a un numero significativo di chiamate mensili. Tieni presente che devi comunque registrarti e fornire un account di fatturazione valido. Puoi annullare in qualsiasi momento.

Quando abiliti per la prima volta l'editor in linea, il codice di fulfillment Node.js viene precompilato con i gestori predefiniti per gli intent predefiniti inclusi per tutti gli agenti. Il codice ha anche commentato le istruzioni per l'aggiunta di gestori per gli intent definiti dallo sviluppatore.

L'editor incorporato è pensato per i test e la prototipazione semplici dei fulfillment. Quando è tutto pronto per creare un'applicazione di produzione, devi creare un servizio webhook.

Abilita ed esegui il deployment del fulfillment con l'editor incorporato

Per abilitare ed eseguire il deployment del codice di fulfillment predefinito utilizzando l'editor incorporato:

  1. Fai clic su Fulfillment nel menu della barra laterale sinistra.
  2. Imposta l'Editor incorporato su Attivato.
  3. Se non hai abilitato la fatturazione nei passaggi di configurazione, ti verrà chiesto di abilitarla ora. Cloud Functions prevede addebiti associati, ma il servizio è disponibile senza costi fino a un numero significativo di chiamate mensili. Tieni presente che devi comunque registrarti e fornire un account di fatturazione. Puoi annullare in qualsiasi momento.
  4. Fai clic su Esegui il deployment nella parte inferiore del modulo e attendi che le finestre di dialogo indichino che il deployment è stato eseguito.

Devi abilitare il fulfillment per ogni intent che richiede il fulfillment. Per abilitare il fulfillment per l'intent di benvenuto predefinito:

  1. Fai clic su Intent nel menu della barra laterale sinistra.
  2. Fai clic su Intent di benvenuto predefinito.
  3. Scorri verso il basso fino alla sezione Fulfillment e attiva Abilita chiamata webhook per questo intent.

  4. Fai clic sul pulsante Salva e attendi fino a quando la finestra di dialogo Addestramento agente indica che l'addestramento è stato completato.

Ora puoi verificare l'evasione degli ordini nel simulatore. Inserisci Hi nel simulatore e il dispositivo risponde con Welcome to my agent!. Questa risposta viene inviata dal webhook di fulfillment di cui hai appena eseguito il deployment. In particolare, la risposta proviene da questo codice:

function welcome(agent) {
  agent.add(`Welcome to my agent!`);
}

Crea un gestore di fulfillment personalizzato

I passaggi precedenti utilizzano un gestore fornito dal codice dell'editor incorporato predefinito. Per creare un gestore personalizzato:

  1. Attiva il fulfillment per l'intent get-agent-name che hai creato nei passaggi precedenti.
  2. Fai clic su Fulfillment nel menu della barra laterale a sinistra ed esamina il codice nell'editor incorporato.
  3. Trova questa riga:

    exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
    

    La funzione onRequest gestisce tutte le richieste da Dialogflow. Nel corpo di questa funzione vengono definite funzioni specifiche del gestore. Queste funzioni gestore vengono richiamate in caso di corrispondenza degli intent associati. Ad esempio, la funzione utilizzata nella sezione precedente è function welcome(agent).

  4. Sotto i gestori esistenti, aggiungi questa funzione per l'intent get-agent-name:

    function getAgentNameHandler(agent) {
      agent.add('From fulfillment: My name is Dialogflow!');
    }
    
  5. Sotto le definizioni della funzione gestore, sono presenti intentMap.set() chiamate. Queste chiamate associano gestori specifici agli intent in base al nome. Ad esempio, intentMap.set('Default Welcome Intent', welcome) associa il gestore welcome all'intent denominato Default Welcome Intent.

  6. Sotto le chiamate intentMap.set esistenti, aggiungi questa riga per l'intent get-agent-name:

    intentMap.set('get-agent-name', getAgentNameHandler);
    
  7. Fai clic su Esegui il deployment nella parte inferiore del modulo.

  8. Inserisci What's your name? nel simulatore. La risposta From fulfillment: My name is Dialogflow! viene inviata dal nuovo gestore.

Accedi ai valori dei parametri

Nei passaggi precedenti, hai creato un intent set-language per identificare linguaggi umani e linguaggi di programmazione. L'intent utilizza i parametri language e language-programming. In questa sezione, accedi ai valori di questi parametri nel gestore di fulfillment.

Per aggiungere il gestore:

  1. Abilita il fulfillment per l'intent set-language.
  2. Fai clic su Fulfillment nel menu della barra laterale sinistra.
  3. Analogamente ai passaggi precedenti, aggiungi il seguente gestore e la chiamata intentMap:

    function languageHandler(agent) {
        const language = agent.parameters.language;
        const programmingLanguage = agent.parameters['language-programming'];
        if (language) {
            agent.add(`From fulfillment: Wow! I didn't know you knew ${language}`);
        } else if (programmingLanguage) {
            agent.add(`From fulfillment: ${programmingLanguage} is cool`);
        } else {
            agent.add(`From fulfillment: What language do you know?`);
        }
    }
    
    intentMap.set('set-language', languageHandler);
    
  4. Fai clic su Esegui il deployment.

Questo gestore recupera i parametri language e language-programming e li archivia in variabili. Recupera questi valori dall'attributo agent.parameters, un oggetto che contiene tutti i nomi e i valori dei parametri che gli utenti finali specificano nelle loro richieste.

Per fare una prova, inserisci I know how to speak German nel simulatore.