Цели диалогового окна Продолжения не в соответствии с правильным намерением - PullRequest
0 голосов
/ 11 января 2019

Например, если у вас есть IntentA и вы добавили 2 намерения отслеживания: IntentB, IntentC, все работает нормально, следует добавить контекст, потому что у него еще нет выходного контекста. Но здесь есть проблема. Иногда, если вы добавляете еще один, например, FallbackIntent, он просто добавляет другой контекст (SOMETIMES), и если вы удаляете его в обоих (IntentA и FallbackIntent), так что они оба имеют одинаковый контекст, то есть они все равно должны быть подключены, и hiearchy не должен меняться, но он все еще меняется. Это все еще работает отлично, но все же это странное поведение. Есть идеи, почему это происходит и как это исправить?

Hierarchy

Намерение A

IntentA

Намерение B

IntentB

Запасной

Fallback

Ответы [ 2 ]

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

@ sid8491 - это абсолютно гениально :) Спасибо за это! Работает как шарм, и я могу подтвердить, что это просто визуальное представление. Не нужно беспокоиться об изменении вашего кода.

Просто небольшое дополнение: когда у вас уже есть намерения, они уже несут

"id": "70a48f63-662b-48d4-9a78-dd0af3e0db87",
"parentId": "5a1b5861-fadc-480e-b03b-11bc034df8b9",
"rootParentId": "6c9cb1d6-3efb-4bac-b768-ae3265faa7b6",

Обязательно настройте rootParentId на вышеупомянутый id корневого намерения, оставьте parentId без изменений, и все готово. Не пытался использовать структуру «последующее наблюдение», но я бы сказал, что она будет каким-то образом следовать той же схеме.

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

Лучший способ решить эту проблему и организовать структуру вашего агента диалогового потока - это загрузить намерения, используя create_intent() функцию dialogflow api.
Вы можете задать корневое намерение как parent_followup_intent_name, и все намерения, имеющие это корневое намерение , подпадают под это же намерение. Обратите внимание, что вам нужно дать корневое намерение ID , а не имя.

Вы можете узнать больше о create_intent api, используя python sdk .

intents_client = dialogflow.IntentsClient()
intent = dialogflow.types.Intent(
        display_name=display_name,
        training_phrases=training_phrases_parts,
        messages=response,
        input_context_names=input_contexts,
        output_contexts = output_context_list,
        parent_followup_intent_name=root_intent,
)
intents_client.create_intent(parent, intent)

EDIT:
Как и просили, вот 2-й и более простой способ сделать это без каких-либо дополнительных знаний.

  • Предположим, ваш агент похож на скриншот ниже, и вы хотите группировать намерения по how to solve намерению

agent_before_grouping

  • Перейти к Настройка -> Экспорт и импорт -> Экспорт в формате zip Агент

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

  • Открыть how to solve.json файл и скопировать идентификатор этого намерения
  • Откройте все файлы json, которые вы хотите сгруппировать в how to solve намерение (обратите внимание, мы должны открыть файлы, которые не имеют _usersays_en, поскольку они содержат только пользовательские высказывания
  • Вставьте идентификатор how to solve намерения как parentId в эти JSON файлы, подобные скриншоту ниже (в данном случае идентификатор намерения how to solve намерение было b2131b0e-f86d-429d-957c-65c070ddd5df)

parentId

  • Как только все изменения будут внесены, заархивируйте каталог
  • Снова перейдите к Настройка -> Экспорт и импорт -> Восстановление из zip и выберите только что созданный zip-файл
  • Намерение будет выглядеть как на скриншоте ниже после завершения процесса

after_change_intent

Надеюсь, это поможет.

...