Как получить параметр из предыдущего контекста в Dialogflow - PullRequest
0 голосов
/ 05 января 2019

Я создаю чат-бота для IP-фирмы. У него есть сущность с именем service, которая имеет 4 значения типа. (Патент, Авторское право, Торговая марка, Дизайн).

Клиент: Что такое патент?

Бот: (Ответ)

Клиент: сколько стоит его подать?

Как узнать, что клиент спрашивает о патенте из предыдущего контекста?

Я не могу использовать последующие намерения в каждом намерении.

Прямо сейчас я использую глобальную переменную, чтобы получить слот agent.parameters.Service внутри выполнения.

let slot='patent';
exports.dialogflowFirebaseFulfillment = functions.https.onRequest((request, response) => {
  const agent = new WebhookClient({ request, response });
  function service_typeHandler(agent){
    var serv ='';
    serv = agent.parameters.Service;

    if(serv ===''){
      serv=slot;
    }
    else{
      slot=serv;
    }

    switch( serv ){
      case 'patent':

1 Ответ

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

Прежде всего, вы правы в двух направлениях:

  1. Не используйте последующие намерения. Есть несколько случаев, когда вы действительно хотите следить за Intents. Большую часть времени вы хотите сделать это другими способами.
  2. Использовать Контексты . Это (часть) «другие средства» в большинстве случаев.

В этом случае звучит так, как будто у вас будет два намерения (и, вероятно, больше, но это иллюстрирует смысл):

  • "ask.what" - что пользователь говорит, например, "Что такое патент?"
  • "ask.price" - пользователь говорит такие вещи, как "Сколько подать патент?", Но также "Сколько подать?"

Для намерения ask.what вы должны установить «Исходящий контекст». Это автоматически захватит параметры, которые присоединены к Намерению. Если вы хотите больше контролировать его самостоятельно, вы можете создать собственный контекст в своем веб-крючке и установить для параметров любое желаемое значение. Я предлагаю последнее, потому что оно позволяет вам использовать имя параметра, которое вы не используете в другом месте. Давайте предположим, что вы используете контекст с именем «selectedInfo» и что вы устанавливаете для параметра «saveService».

В своем намерении ask.price вы будете делать что-то похожее на то, что вы делаете сейчас. За исключением того, что, если параметр Service пуст, получить параметры из контекста «saveInfo» и, в частности, параметр savedService.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...