Как добавить несколько слотов одного типа в одном высказывании с Amazon Lex? - PullRequest
0 голосов
/ 23 сентября 2018

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

Мой слот службы имеет такие сервисы, как:

  • Консультирование
  • Терапия
  • Здравоохранение
  • Лечение наркомании ...

Я хочу, чтобы пользователь мог набрать следующее:

I need {Service} and {Service}
I need {Service}, {Service} and {Service}

например, мне нужно консультирование итерапия

Но когда я пытаюсь построить с этими высказываниями, я получаю эту ошибку:

Слот "{Service}" недопустим в высказывании "Мне нужно {Service}, {Сервис} и {Сервис} "для намерения" FindService ".Слоты в высказывании должны иметь форму {slotName}.

1 Ответ

0 голосов
/ 24 сентября 2018

Мне удалось воссоздать вашу ошибку:

Слот "{_____}" недопустим в высказывании "__________" для намерения "___".Слоты в высказывании должны иметь форму {slotName}.

Это вызвано наличием любого символа рядом с фигурными скобками , а Лексу нужны пробелы по обе стороны от "{slotName}».Вам придется полностью удалить запятую, потому что, если вы просто исправите это, поставив пробел между } и ,, вы получите эту ошибку:

"," в высказывании "________«для намерения» ___ содержит неподдерживаемый символ или слово.Выражение может состоять только из символов Unicode, пробелов и допустимых знаков препинания.Допустимые знаки препинания: периоды аббревиатур, подчеркивания, апострофы и дефисы.Если в вашем высказывании есть заполнитель слота, убедитесь, что он имеет формат {slotName} и имеет пробелы на обоих концах.

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

Имя слота "Service" использовалось более одного раза в высказывании "Мне нужны {Service} {Service} и {Service}" для намерения "FindService".

Чтобы исправить это, вы должны создать несколько слотов с разными slotNames, но все использовать один и тот же slotType.Используйте имена слотов, такие как: Service_one Service_two Service_three.Обратите внимание, что вы не можете использовать цифры (0-9) в именах слотов, иначе вы получите ошибку:

Значение, указанное для «slots. #. Member.name», недопустимо.Элемент должен соответствовать шаблону регулярного выражения: ^ (A-Za-z?) + $

После создания этих 3-х отдельных слотов вы можете написать новое допустимое высказывание, например:

I need {Service_one} and {Service_two}
I need {Service_one} {Service_two} and {Service_three}

Нет ошибок с этой настройкой.Теперь я не знаю, насколько хорошо Лекс будет дифференцировать список высказываний №2, особенно если два слота расположены рядом друг с другом и искать одинаковые значения slotType.Поэтому вам придется проверить это и посмотреть, как Лекс заполняет слоты, а затем создать соответствующий код проверки Lambda.

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