Proste odpowiedzi (Dialogflow)

Przeglądaj w Dialogflow

Kliknij Dalej, aby zaimportować przykładowe odpowiedzi w Dialogflow. Następnie wykonaj poniższe czynności, aby wdrożyć i przetestować przykład:

  1. Wpisz nazwę agenta i utwórz nowego agenta Dialogflow na potrzeby przykładu.
  2. Po zakończeniu importowania agenta kliknij Otwórz agenta.
  3. W głównym menu nawigacyjnym kliknij Fulfillment (Realizacja).
  4. Włącz Edytor wbudowany, a potem kliknij Wdróż. Edytor zawiera przykładowy kod.
  5. W głównym menu nawigacyjnym kliknij Integracje, a następnie Asystent Google.
  6. W wyświetlonym oknie modalnym włącz Automatyczny podgląd zmian i kliknij Przetestuj, aby otworzyć symulator Actions.
  7. W symulatorze wpisz Talk to my test app, aby przetestować próbkę.
Dalej

Proste odpowiedzi mają postać dymka czatu i wykorzystują dźwięk do zamiany tekstu na mowę (TTS) lub SSML (Speech Synthesis Markup Language).

Tekst TTS jest domyślnie używany jako treść dymka czatu. Jeśli aspekt wizualny tego tekstu odpowiada Twoim potrzebom, nie musisz określać żadnego wyświetlanego tekstu dymka czatu.

Możesz też zapoznać się z naszymi wskazówkami dotyczącymi projektowania rozmów, aby dowiedzieć się, jak uwzględnić te elementy wizualne w akcji.

Właściwości

Rysunek 1. Przykład prostej odpowiedzi (smartfon)

Proste odpowiedzi mają te wymagania i opcjonalne właściwości, które możesz skonfigurować:

  • Obsługiwane na platformach z funkcjami actions.capability.AUDIO_OUTPUT lub actions.capability.SCREEN_OUTPUT.
  • Dymek na czacie ma limit 640 znaków. Ciągi przekraczające limit są obcinane w pierwszej kolejności (lub odstępach) przed 640 znakami.

  • Treść dymków czatu musi być podzbiorem fonetycznym lub pełną transkrypcją danych wyjściowych TT/SSML. Pomaga to użytkownikom w określeniu, co mówisz, i poprawia ich zrozumienie w różnych warunkach.

  • Maksymalnie 2 dymki na zmianę.

  • Przesyłający do Google nagłówek czatu (logo) musi mieć rozmiar 192 x 192 piksele i nie może być animowany.

Rysunek 2. Przykład prostej odpowiedzi (inteligentny ekran)

Przykładowy kod

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

Pamiętaj, że poniższy kod JSON opisuje odpowiedź webhooka.

{
  "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

Pamiętaj, że poniższy kod JSON opisuje odpowiedź webhooka.

{
  "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 i dźwięki

Użycie SSML i dźwięków w odpowiedziach sprawia, że są one bardziej dopracowane i zapewniają lepsze wrażenia użytkownika. Z tych fragmentów kodu dowiesz się, jak utworzyć odpowiedź wykorzystującą 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

Pamiętaj, że poniższy kod JSON opisuje odpowiedź webhooka.

{
  "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

Pamiętaj, że poniższy kod JSON opisuje odpowiedź webhooka.

{
  "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?"
              }
            }
          ]
        }
      }
    }
  ]
}

Więcej informacji znajdziesz w dokumentacji referencyjnej dotyczącej SSML.

Biblioteka dźwięków

W naszej bibliotece dźwięków udostępniamy różne bezpłatne, krótkie dźwięki. Dźwięki są hostowane na Twoim serwerze, więc wystarczy, że dodasz je do SSML.