Risposte semplici (Dialogflow)

Esplora in Dialogflow

Fai clic su Continua per importare l'esempio delle risposte in Dialogflow. Quindi, segui questi passaggi per eseguire il deployment e testare l'esempio:

  1. Inserisci un nome di agente e crea un nuovo agente Dialogflow per l'esempio.
  2. Al termine dell'importazione, fai clic su Vai all'agente.
  3. Nel menu di navigazione principale, vai a Fulfillment.
  4. Attiva l'editor incorporato e fai clic su Esegui il deployment. L'editor contiene il codice campione.
  5. Nel menu di navigazione principale, vai a Integrazioni e fai clic su Assistente Google.
  6. Nella finestra modale visualizzata, attiva Anteprima automatica delle modifiche e fai clic su Test per aprire il simulatore di Actions.
  7. Nel simulatore, inserisci Talk to my test app per testare l'esempio.
Continua

Le risposte semplici assumono la forma di un fumetto di chat visivamente e utilizzano la sintesi vocale (TTS) o il linguaggio di markup di sintesi vocale (SSML) per l'audio.

Per impostazione predefinita, il testo della sintesi vocale viene utilizzato come contenuto del fumetto della chat. Se l'aspetto visivo di quel testo soddisfa le tue esigenze, non dovrai specificare il testo di visualizzazione per il fumetto della chat.

Puoi anche consultare le nostre linee guida per la progettazione delle conversazioni per scoprire come incorporare questi elementi visivi nell'azione.

Proprietà

Figura 1. Esempio di risposta semplice (smartphone)

Le risposte semplici hanno i seguenti requisiti e proprietà facoltative che puoi configurare:

  • Supportato sulle piattaforme con le funzionalità actions.capability.AUDIO_OUTPUT o actions.capability.SCREEN_OUTPUT.
  • Limite di 640 caratteri per fumetto della chat. Le stringhe più lunghe del limite vengono troncate alla prima interruzione di parola (o spazio vuoto) prima di 640 caratteri.

  • I contenuti delle bolle di chat devono essere un sottoinsieme fonetico o una trascrizione completa dell'output TTS/SSML. In questo modo, gli utenti possono capire meglio ciò che dici e aumentare la comprensione in varie condizioni.

  • Massimo due bolle per chat.

  • L'intestazione della chat (logo) che invii a Google deve essere di 192 x 192 pixel e non può essere animata.

Figura 2. Esempio di risposta semplice (smart display)

Codice campione

Node.js

app.intent('Simple Response', (conv) => {
  conv.ask(new SimpleResponse({
    speech: `Here's an example of a simple response. ` +
      `Which type of response would you like to see next?`,
    text: `Here's a simple response. ` +
      `Which response would you like to see next?`,
  }));
});

Java

@ForIntent("Simple Response")
public ActionResponse welcome(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  responseBuilder.add(
      new SimpleResponse()
          .setTextToSpeech(
              "Here's an example of a simple response. "
                  + "Which type of response would you like to see next?")
          .setDisplayText(
              "Here's a simple response. Which response would you like to see next?"));
  return responseBuilder.build();
}

Node.js

conv.ask(new SimpleResponse({
  speech: `Here's an example of a simple response. ` +
    `Which type of response would you like to see next?`,
  text: `Here's a simple response. ` +
    `Which response would you like to see next?`,
}));

Java

ResponseBuilder responseBuilder = getResponseBuilder(request);
responseBuilder.add(
    new SimpleResponse()
        .setTextToSpeech(
            "Here's an example of a simple response. "
                + "Which type of response would you like to see next?")
        .setDisplayText(
            "Here's a simple response. Which response would you like to see next?"));
return responseBuilder.build();

JSON

Tieni presente che il codice JSON seguente descrive una risposta webhook.

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "Here's an example of a simple response. Which type of response would you like to see next?",
              "displayText": "Here's a simple response. Which response would you like to see next?"
            }
          }
        ]
      }
    }
  }
}

JSON

Tieni presente che il codice JSON seguente descrive una risposta webhook.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "Here's an example of a simple response. Which type of response would you like to see next?",
                "displayText": "Here's a simple response. Which response would you like to see next?"
              }
            }
          ]
        }
      }
    }
  ]
}

SSML e suoni

L'utilizzo di SSML e di suoni nelle risposte conferisce un'esperienza più migliorata e migliora l'esperienza utente. I seguenti snippet di codice mostrano come creare una risposta che utilizza SSML:

Node.js

app.intent('SSML', (conv) => {
  conv.ask(`<speak>` +
    `Here are <say-as interpet-as="characters">SSML</say-as> examples.` +
    `Here is a buzzing fly ` +
    `<audio src="https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg"></audio>` +
    `and here's a short pause <break time="800ms"/>` +
    `</speak>`);
  conv.ask('Which response would you like to see next?');
});

Java

@ForIntent("SSML")
public ActionResponse ssml(ActionRequest request) {
  ResponseBuilder responseBuilder = getResponseBuilder(request);
  responseBuilder.add(
      "<speak>"
          + "Here are <say-as interpet-as=\"characters\">SSML</say-as> examples."
          + "Here is a buzzing fly "
          + "<audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>"
          + "and here's a short pause <break time=\"800ms\"/>"
          + "</speak>");
  return responseBuilder.build();
}

Node.js

conv.ask(`<speak>` +
  `Here are <say-as interpet-as="characters">SSML</say-as> examples.` +
  `Here is a buzzing fly ` +
  `<audio src="https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg"></audio>` +
  `and here's a short pause <break time="800ms"/>` +
  `</speak>`);
conv.ask('Which response would you like to see next?');

Java

ResponseBuilder responseBuilder = getResponseBuilder(request);
responseBuilder.add(
    "<speak>"
        + "Here are <say-as interpet-as=\"characters\">SSML</say-as> examples."
        + "Here is a buzzing fly "
        + "<audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>"
        + "and here's a short pause <break time=\"800ms\"/>"
        + "</speak>");
return responseBuilder.build();

JSON

Tieni presente che il codice JSON seguente descrive una risposta webhook.

{
  "payload": {
    "google": {
      "expectUserResponse": true,
      "richResponse": {
        "items": [
          {
            "simpleResponse": {
              "textToSpeech": "<speak>Here are <say-as interpet-as=\"characters\">SSML</say-as> examples.Here is a buzzing fly <audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>and here's a short pause <break time=\"800ms\"/></speak>"
            }
          },
          {
            "simpleResponse": {
              "textToSpeech": "Which response would you like to see next?"
            }
          }
        ]
      }
    }
  }
}

JSON

Tieni presente che il codice JSON seguente descrive una risposta webhook.

{
  "expectUserResponse": true,
  "expectedInputs": [
    {
      "possibleIntents": [
        {
          "intent": "actions.intent.TEXT"
        }
      ],
      "inputPrompt": {
        "richInitialPrompt": {
          "items": [
            {
              "simpleResponse": {
                "textToSpeech": "<speak>Here are <say-as interpet-as=\"characters\">SSML</say-as> examples.Here is a buzzing fly <audio src=\"https://actions.google.com/sounds/v1/animals/buzzing_fly.ogg\"></audio>and here's a short pause <break time=\"800ms\"/></speak>"
              }
            },
            {
              "simpleResponse": {
                "textToSpeech": "Which response would you like to see next?"
              }
            }
          ]
        }
      }
    }
  ]
}

Per saperne di più, consulta la documentazione di riferimento SSML.

Raccolta audio

Nella nostra raccolta di suoni puoi trovare una serie di suoni brevi e senza costi. Questi suoni sono ospitati per te, quindi devi solo includerli nel tuo SSML.