Посмотреть в Dialogflow
Нажмите Continue (Продолжить), чтобы импортировать примеры ответов в Dialogflow. Затем выполните следующие действия, чтобы развернуть и протестировать пример:
- Введите название агента и создайте новый агент Dialogflow для примера.
- После завершения импорта нажмите Перейти к агенту.
- В главном меню навигации выберите Выполнение заказов.
- Включите встроенный редактор и нажмите Развернуть. В редакторе появится образец кода.
- В главном меню навигации выберите Integrations (Интеграции), а затем нажмите Google Assistant (Google Ассистент).
- В появившемся модальном окне включите Auto-preview changes (Автоматический предпросмотр изменений) и нажмите Test (Протестировать), чтобы открыть симулятор действий.
- Введите
Talk to my test appв симуляторе, чтобы протестировать пример.
Простые ответы визуально представляют собой значок чата и используют преобразование текста в речь (TTS) или язык разметки синтеза речи (SSML) для звука.
По умолчанию в качестве содержимого сообщения используется текст TTS. Если вас устраивает, как выглядит этот текст, то указывать отображаемый текст для значка чата не нужно.
Вы также можете ознакомиться с рекомендациями по разработке диалогов, чтобы узнать, как добавить эти визуальные элементы в свое действие.
Свойства
Простые ответы имеют следующие требования и необязательные свойства, которые вы можете настроить:
- Поддерживается на платформах с возможностями
actions.capability.AUDIO_OUTPUTилиactions.capability.SCREEN_OUTPUT. Ограничение на количество символов в одном сообщении – 640. Строки, превышающие ограничение, усекаются на первом разрыве слова (или пробеле) до 640 символов.
Содержимое сообщения должно быть фонетическим подмножеством или полной расшифровкой выходных данных TTS/SSML. Это помогает пользователям понять, о чем вы говорите, и улучшает понимание в различных условиях.
Не более двух сообщений за ход.
Логотип, который вы отправляете в Google, должен иметь размер 192 x 192 пикселя и не должен быть анимированным.
Образец кода
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
Обратите внимание, что приведенный ниже код JSON описывает ответ вебхука.
{ "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
Обратите внимание, что приведенный ниже код JSON описывает ответ вебхука.
{ "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 и звуки
Использование SSML и звуков в ответах делает их более качественными и улучшает пользовательский опыт. В приведенных ниже фрагментах кода показано, как создать ответ с использованием 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
Обратите внимание, что приведенный ниже код JSON описывает ответ вебхука.
{ "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
Обратите внимание, что приведенный ниже код JSON описывает ответ вебхука.
{ "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?" } } ] } } } ] }
Дополнительную информацию можно найти в справочной документации по SSML.
Фонотека
В нашей фонотеке есть множество бесплатных коротких звуков. Эти звуки размещены на сервере, поэтому вам нужно только включить их в SSML.