Как заставить обнаружение определенного намерения независимо от того, что пользователь вводит в dialogflow v2 - PullRequest
0 голосов
/ 06 июня 2018

Я хотел бы принудительно определить намерение, чтобы любой пользовательский ввод перенаправлял на конкретное намерение.

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

 const request = {
      session: sessionPath,
      queryInput: {
        text: {
          text: query,
          languageCode: 'en-US',
        },
      },
      queryParams: {
      contexts: [
          {
            "name": "projects/xxx/agent/sessions/yyy/contexts/question-followup",
            "lifespanCount": 2
          }
        ]
      }
    };

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

Есть идеи, как этого добиться?

1 Ответ

0 голосов
/ 06 июня 2018

То, что вы пытаетесь сделать, довольно расплывчато, но я думаю, что у вас есть несколько подходов.

Отступление с контекстом

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

Используйте @sys:any Entity

Пустая обучающая фраза буквально означает «ничего не говори», поэтому одного слова с соответствующим контекстом недостаточно.Вместо этого вы можете установить для обучающей фразы только параметр с @sys:any Entity.

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

Отправить событие

Поскольку вы вызываете Dialogflow с помощью API, если вы хотите форсировать определенное намерение, вы можете отправить событиевместо того, чтобы отправлять текст, он будет соответствовать намерению, для которого установлено это событие. Событие имеет тенденцию иметь приоритет над другими правилами, чтобы определить, какое намерение вызывать.

Сообщение, которое вы отправите на detectIntentс данными о событиях может выглядеть примерно так:

 const request = {
      session: sessionPath,
      queryInput: {
        event: {
          name: 'event_personal_MINE',
          parameters: {
            whatever: 'value'
          },
          languageCode: 'en-US',
        },
      },
    };

(параметры не обязательны)

...