Я использую комплект навыков Алекса и хотел бы, чтобы кто-то мог указать местоположение, к которому нужно попасть. Это может быть либо адрес (123 Main St, Springfield, MA), либо аэропорт (Atlanta Airport).
Я вижу, что у Алекса есть стандартные типы слотов AMAZON.Airports
, AMAZON.PostalAddress
а также AMAZON.US_CITY
, но я не могу понять, как принять в слот либо аэропорт, либо адрес + город.
Пример того, что я пытаюсь выполнить:
Алекса, попроси Джарвиса запланировать поездку до 123 Main St, Springfield в пятницу
или же
Алекса, попроси Джарвиса запланировать поездку в Кеннеди на субботу
Я пытаюсь сделать это настолько естественным, насколько это возможно, поэтому требование поменять язык для целевого типа (например, «запланировать поездку» означает, что аэропорт -vs- «забронировать поездку» означает адрес) контрпродуктивно. Я уже пробовал это, но, как я уже сказал, это было контрпродуктивно, и если бы я сделал имена Intent слишком схожими («закажи мне поездку» — «закажи мне поездку в аэропорт»), Алекса легко получилось смущенный.
Я использую PHP на своем сервере, хотя, если я справлюсь с этим в навыке JSON, это было бы идеально.
Вы можете использовать одно намерение с двумя различными высказываниями:
FirstIntent запланировал поездку в аэропорт {AIRPORT_SLOT}
FirstIntent запланируйте поездку в {ADDRESS_SLOT}
Или вы можете использовать 2 отдельных намерения с разными высказываниями:
AirportIntent запланировал поездку в аэропорт {AIRPORT_SLOT}
AddressIntent планирует поездку к {ADDRESS_SLOT}
Если вы выберете первый подход, используя единственное намерение, тогда вашему намерению нужно будет проверить, какой слот, если таковой имеется, возвращается.
Я бы выбрал использование отдельных намерений и рефакторинг общего кода для функции, вызываемой обоими обработчиками намерений.
Других решений пока нет …