Есть ли у них способ отправить несколько простых ответов в диалоговом потоке

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

Есть ли другой способ отправить несколько ответов?


person Abhilash G    schedule 30.07.2018    source источник
comment
Как вы думаете, почему вам нужно отправить более двух простых ответов?   -  person Prisoner    schedule 30.07.2018
comment
это требование отправлять совокупную информацию, например, о событиях, которые необходимо отправлять обратно пользователю, чтобы ..   -  person Abhilash G    schedule 30.07.2018


Ответы (2)


Короткий ответ: нет, вы не можете отправлять более одного SimpleResponse за раз.

Однако есть способы работать с этим в зависимости от ваших потребностей и соблюдения хорошего дизайна Visual UI.

  1. Вы можете объединить многие элементы, которые вы отправляете обратно, в один произносимый абзац.

    Итак, если у вас есть такие элементы списка, как:

    • Red
    • Зеленый
    • Синий

    Вы можете объединить их в одну строку и отправить один SimpleResponse со словами «Я выбрал для вас красный, зеленый и синий цвета».

    Но будьте осторожны, если у вас очень длинный список. Итак, если у вас есть список из 20 или около того цветов, вы не захотите сказать: «Я выбрал следующие цвета: красный, зеленый, синий, желтый, коричневый, черный, белый, фиолетовый, лавандовый, персиковый, лиловый, алый, золотой, рубиновый, серебряный, бирюзовый, серый, оранжевый, бронзовый и жемчужный ". В таких случаях ...

  2. При большом количестве элементов, и особенно в тех случаях, когда вы ожидаете, что пользователь будет использовать устройство визуального отображения, вы можете назвать только несколько элементов (скажем, 3 наиболее вероятных) и показать текстовое объявление с еще меньшим количеством, а затем использовать Список или Карусель, чтобы отобразить более полный набор. Это может выглядеть примерно так

    conv.ask(new SimpleResponse({
      speech: 'The colors I have selected for you include red, green, blue, and 17 more',
      text: 'Here are the colors I have selected for you.'
    });
    conv.ask(new List({
      items:{
        red: {title: "red"},
        green: {title: "green"},
        blue: {title: "blue"},
        // You get the idea
        pearl: {title: "pearl"}
      }
    };
    
  3. Если вы используете только голос, подумайте, как еще больше сузить этот список. Например, вы можете сообщить: «У меня для вас есть 20 цветов. Вы ищете что-то более красноватое или более голубоватое?» и продолжаем сужать его.

  4. В качестве последней альтернативы вы можете захотеть прочитать лишь краткий список того, что доступно, но указать, сколько у них есть других вариантов, и позволить им «прокрутить на слух» список. Это не очень хорошо, поскольку требует много дополнительной работы с вашей стороны и вашего пользователя, но в некоторых случаях это хороший вариант.

person Prisoner    schedule 30.07.2018
comment
Большое спасибо заключенный - person Abhilash G; 30.07.2018
comment
Если ответ вам поможет, то всегда приветствуется его голосование и / или принятие. - person Prisoner; 30.07.2018
comment
Просто в качестве обновления: с 3 апреля я обнаружил, что читается только первый простой ответ, а второй отображается как текст на телефоне, но не читается. Это может быть проблемой, поскольку при запуске агента дается 2 сообщения для воспроизведения (конечно. Получение тестовой версии ‹имени агента› + приветственное сообщение), но приветственное сообщение никогда не читается. - person Manuela; 04.04.2019

Я думаю, что таким образом вы можете передать несколько ответов от своего веб-перехватчика. в основном, как только ваш веб-перехватчик получит запрос из диалогового процесса, вы выполните процесс и передадите fillmentText обратно как ответ. так что там вы можете преобразовать свой json-объект в строку и передать его обратно. из внешнего приложения вы можете преобразовать его обратно в json или любой другой формат, который вы хотите, и использовать его, как хотите.

Простой пример формы nodejs (webhook). подход должен быть одинаковым для всех языков

router.post('/web-hook', function(req, res, next) {
    //do your process here
    res.json({
        'fulfillmentText': JSON.stringify([{response:"response 1"},{response:"response 2"},{response:"response 3"}])
    });
})
person pavithra rox    schedule 30.07.2018