Есть ли способ запросить подтверждение у пользователя с помощью встроенного редактора вместо использования последующих намерений? - PullRequest
1 голос
/ 02 мая 2019

У меня есть два намерения get_name и get_age

в get_name Я беру имя пользователя, это намерение включено для выполнения.В редакторе, как запросить подтверждение имени?

, если подтвердится, тогда я должен добавить выходной контекст к get_name, чтобы вызывалось намерение get_age.

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

function confirmation(agent){
    var entity_name = agent.name;
    var name = agent.parameters.name;
    var conv = agent.conv();
    conv.ask(`Is ${name} correct?`);
    agent.add(conv);
    var user_query = conv.query;
    if(user_query.entities.name=='yes'){
        agent.setContext({
            name: `${entity_name}`+'_done',
            lifespan: 2
        });
        agent.add(`Give your age ${name}`);
    }
}

1 Ответ

0 голосов
/ 02 мая 2019

Вы смешиваете пару понятий.Несмотря на то, что можно использовать встроенный редактор для выполнения и можно подтвердить запись от пользователя без Намерения продолжения, вам все равно понадобятся дополнительные Интенты для подтверждения.

Существует два важныхЧто нужно знать о программировании выполнения Dialogflow:

  1. Все ответы пользователя должны проходить через намерение.Это не обязательно должно быть уникальное или отслеживаемое намерение, но намерение того, что говорит пользователь, всегда фиксируется таким образом.
  2. Когда инициируется намерение, оно может отправить информацию обработчику намерений.Это единственный способ, которым обработчик намерений получает информацию от пользователя.Когда обработчик запускается, он не ожидает дальнейшего ввода данных пользователем.Все, что он может сделать, это отправить ответ.

Таким образом, в вашем коде после отправки

conv.ask(`Is ${name} correct?`);
agent.add(conv);

вы не получите ответ от этого приглашения в том же обработчике намерений..

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

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

  1. Текущее состояние (в вашем случае, какой вопрос вы просите их подтвердить)
  2. Ответ пользователя («да», в этом случае вы сохраняете информацию и спрашиваете оследующий вопрос, или «нет», в этом случае вы повторяете вопрос)
...