Когда-то существовал тип слота с именем Amazon.LITERAL
, который разрешалось использовать в определенных регионах. Тем не менее, теперь он либо устарел (либо удален).
Однако существует другое решение этой проблемы с использованием пользовательских слотов .
Допустим, мы создаем систему заказа продуктов питания на Alexa. Навык для чего-то вроде Zomato или Yelp для Alexa. Давайте назовем навык имя вызова Роберт .
Итак, сначала мы составим список типов утверждений, которые будут сделаны. Вы можете пропустить этот шаг, если ваш навык не является специфическим. Тем не менее, это просто поможет вам определить тип утверждений, с которыми может столкнуться ваш навык.
- Алекса приказывает Роберту прислать мне куриный стейк с картофельным пюре.
- Алекса попросила Роберта порекомендовать мне несколько хороших индийских ресторанов рядом со мной.
- Алекса, пожалуйста, скажите Роберту, чтобы он оценил недавнюю доставку ресторана XYZ одной звездой.
После того, как мы составили список утверждений, мы сохраним их в файле csv.
Идем дальше и нажимаем кнопку Добавить рядом с Типы слотов .
Дайте вашему типу пользовательского слота имя.
Теперь, когда вы закончите с этим, придумайте список конструкций, в которых может быть задействовано ваше умение. Некоторые из них были приведены ниже.
- Алекса попросить Роберта ...
- Алекса делает Роберта ...
- Алекса заказать Роберта ...
- Алекса скажи Роберту ...
Три точки (...) представляют фактическую часть заказа / выписки. Это текст, который вы заинтересованы в извлечении. Примером будет; за утверждение
Алекса просит Роберта отправить мне ведро с куриными наггетсами .
Вам будет интересно извлечь только часть, выделенную жирным шрифтом.
Теперь Amazon классифицирует заявления на основе намерений. У них есть пять стандартных предопределенных намерений для приветствия, отмены, справки и других основных функций. Мы идем дальше и создаем собственное намерение для работы с основными утверждениями, которые будут использоваться, прежде всего, для взаимодействия с нашими навыками.
В новом окне пользовательских намерений внизу страницы находится пространство для добавления слотов, которые будут использоваться в ваших целях. Мы добавляем наш ранее созданный пользовательский слот и называем его literal . (Вы можете назвать это как угодно)
Пользовательский слот, литерал в нашем случае, - это текст, который мы хотим извлечь из утверждений пользователя.
Теперь мы заменим три точки (...) в списке конструкций на {literal}
и добавим их в список примеров высказываний.
Для утверждения
Алекса приказывает Роберту прислать мне куриный стейк с картофельным пюре.
JSON будет содержать подобный раздел для настраиваемого намерения и выделения текста настраиваемого слота.
"request": {
"type": "IntentRequest",
"requestId": "",
"timestamp": "2019-01-01T19:37:17Z",
"locale": "en-IN",
"intent": {
"name": "InteractionIntent",
"confirmationStatus": "NONE",
"slots": {
"literal": {
"name": "literal",
"value": "to send me a chicken steak with mashed potatoes.",
"resolutions": {
"resolutionsPerAuthority": [
{
"authority": "",
"status": {
"code": ""
}
}
]
},
"confirmationStatus": "NONE",
"source": "USER"
}
}
}
}
В подразделе «Слоты» в соответствии с пользовательским намерением у нас есть буквальный слот, значение которого дает нам текст речи пользователя.
"slots": {
"literal": {
"name": "literal",
"value": "to send me a chicken steak with mashed potatoes."