Alexa Skill: Разрешить адрес (улица + город) ИЛИ аэропорт для ввода?

Я использую комплект навыков Алекса и хотел бы, чтобы кто-то мог указать местоположение, к которому нужно попасть. Это может быть либо адрес (123 Main St, Springfield, MA), либо аэропорт (Atlanta Airport).

Я вижу, что у Алекса есть стандартные типы слотов AMAZON.Airports, AMAZON.PostalAddress а также AMAZON.US_CITY, но я не могу понять, как принять в слот либо аэропорт, либо адрес + город.

Пример того, что я пытаюсь выполнить:

Алекса, попроси Джарвиса запланировать поездку до 123 Main St, Springfield в пятницу

или же

Алекса, попроси Джарвиса запланировать поездку в Кеннеди на субботу

Я пытаюсь сделать это настолько естественным, насколько это возможно, поэтому требование поменять язык для целевого типа (например, «запланировать поездку» означает, что аэропорт -vs- «забронировать поездку» означает адрес) контрпродуктивно. Я уже пробовал это, но, как я уже сказал, это было контрпродуктивно, и если бы я сделал имена Intent слишком схожими («закажи мне поездку» — «закажи мне поездку в аэропорт»), Алекса легко получилось смущенный.

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

1

Решение

Вы можете использовать одно намерение с двумя различными высказываниями:

FirstIntent запланировал поездку в аэропорт {AIRPORT_SLOT}
FirstIntent запланируйте поездку в {ADDRESS_SLOT}

Или вы можете использовать 2 отдельных намерения с разными высказываниями:

AirportIntent запланировал поездку в аэропорт {AIRPORT_SLOT}
AddressIntent планирует поездку к {ADDRESS_SLOT}

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

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

0

Другие решения

Других решений пока нет …