Заполнить слот Google Assistant - PullRequest
       21

Заполнить слот Google Assistant

0 голосов
/ 04 января 2019

Я использую встроенный веб-крюк Google Assistant с приложением весенней загрузки.

Я создал 3 слота в потоке диалога агента, все они обязательны. а1, а2, а3.

Предположим, значение a2 зависит от значения a1.

Если a1> 100, я хочу пропустить a2 и попросить a3. Поэтому, когда пользователь говорит что-то, что должно быть заполнено в a3, вместо a2.

Если a1 <= 100, спросите a2, а затем a3. </p>

Как сообщить агенту Google, какой слот нужно заполнить?

Ответы [ 3 ]

0 голосов
/ 05 января 2019

Вы можете установить параметры программно в своем веб-крюке выполнения, установив необходимый контекст и их параметры. Обратите внимание, что это не предполагаемое использование заполнения слотов.

Dialogflow по умолчанию создает 3 выходных контекста при заполнении параметров

  • <intentId>_id_dialog_context
  • <intentname>_dialog_context
  • <intentname>_dialog_params_<parameterName>

Вы можете найти эти контексты, используя Webhookclient.contexts

Обратите внимание, что контекст, содержащий имя_параметра, будет меняться в зависимости от того, какой параметр запрашивается Dialogflow. Например, если вы заполните параметр a1, диалоговое окно запросит a2. Контекст будет <intentname>_dialog_params_a2

Все эти контексты содержат параметры, необходимые для намерения. Вы можете программно установить эти параметры, используя этот подход:

  • Пользователь заполняет a1
  • В вашем веб-крюке определите, следует ли задать или пропустить a2
  • если нужно спросить, ничего не делать или отправить в другом приглашении, используя webhookClient.add(responses)

если пропустить:

  • установить оба _dialog_context контекстов, используя webhookClient.setContext(context)
  • при их настройке отправьте параметр a2 как нечто, отличное от null
  • удалить контекст _params_a2
  • установить контекст _params_a3 с теми же параметрами

Возможно, ваши параметры теперь выглядят примерно так:

{a1 : 'someUserValue', a2 : 'someValueByWebhook', a3 : ''}

В этом диалоге уже есть значение для a2, и он не будет запрашивать его снова

0 голосов
/ 08 января 2019

Вы должны использовать webhooks для полного заполнения слотов и отмечать все слоты как ненужные в консоли диалогового потока. После получения запроса в webhook после взаимодействия пользователя с помощником Google вы можете установить контекст вывода в ответ на специальную загрузку других слотов .

Например, пользователь говорит Я хочу 100 пунктов , где 100 - это значение слота a1 Затем из webhook вы можете создать ответ с текстом исполнения . Пожалуйста, предоставьте слот a2 , а также вам нужно установить контекст вывода как a2 . Чтобы принять значение слота для a2, создайте намерение диалогового потока, которое имеет входной контекст a2 , так, чтобы диалоговое течение было смещено при разрешении слота a2. Аналогично, чтобы принять значение слота для a3, создайте намерение диалогового потока, которое имеет входной контекст a3 .

0 голосов
/ 04 января 2019

В подобных случаях (где параметры необязательно требуются) вы не можете использовать заполнение слотов или помечать их как необходимые.

Решение состоит в том, чтобы управлять этим самостоятельно, используя контексты и дополнительные намерения. Поэтому, хотя вы и можете создать свой Намерение, чтобы принимать ответы, включающие все параметры, но не отмечать их как обязательные. Затем вы создаете свой веб-крючок, чтобы определить, является ли параметр необходимым и отсутствующим, и, если это так, запросить его. Сохраняйте параметры, которые вы собираете, в контексте, чтобы они были доступны, когда у вас есть все, что вам нужно - вам может понадобиться использовать другое имя параметра, чтобы они не перезаписывались. Вы также можете установить контекст при запросе значения, чтобы можно было сузить смысл, который имеет смысл при ответе на вопрос.

...