Alexa Skill - Как получить полный текст заявления, который попросил Алекса - PullRequest
0 голосов
/ 07 мая 2018

Здравствуйте, я создаю навык Alexa, я написал несколько пользовательских и стандартных намерений, и они работают нормально.

Теперь я хочу написать запасное намерение, в котором я хочу получить точное утверждение, запрошенное / отправленное для навыка Alexa, есть ли способ, которым мы можем получить всю строку / текст вопроса, который был задан навыку Alexa. Я знаю, что мы можем получить значения слотов и информацию о намерениях, но мне нужно отправить текстовое утверждение в скилл.

Спасибо

Ответы [ 3 ]

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

Когда-то существовал тип слота с именем Amazon.LITERAL, который разрешалось использовать в определенных регионах. Тем не менее, теперь он либо устарел (либо удален). Однако существует другое решение этой проблемы с использованием пользовательских слотов .

Допустим, мы создаем систему заказа продуктов питания на Alexa. Навык для чего-то вроде Zomato или Yelp для Alexa. Давайте назовем навык имя вызова Роберт .

Итак, сначала мы составим список типов утверждений, которые будут сделаны. Вы можете пропустить этот шаг, если ваш навык не является специфическим. Тем не менее, это просто поможет вам определить тип утверждений, с которыми может столкнуться ваш навык.

  • Алекса приказывает Роберту прислать мне куриный стейк с картофельным пюре.
  • Алекса попросила Роберта порекомендовать мне несколько хороших индийских ресторанов рядом со мной.
  • Алекса, пожалуйста, скажите Роберту, чтобы он оценил недавнюю доставку ресторана XYZ одной звездой.

После того, как мы составили список утверждений, мы сохраним их в файле csv. Идем дальше и нажимаем кнопку Добавить рядом с Типы слотов . Дайте вашему типу пользовательского слота имя. Name Your Custom Slot Type Теперь, когда вы закончите с этим, придумайте список конструкций, в которых может быть задействовано ваше умение. Некоторые из них были приведены ниже.

  • Алекса попросить Роберта ...
  • Алекса делает Роберта ...
  • Алекса заказать Роберта ...
  • Алекса скажи Роберту ...

Три точки (...) представляют фактическую часть заказа / выписки. Это текст, который вы заинтересованы в извлечении. Примером будет; за утверждение

Алекса просит Роберта отправить мне ведро с куриными наггетсами .

Вам будет интересно извлечь только часть, выделенную жирным шрифтом.

Теперь Amazon классифицирует заявления на основе намерений. У них есть пять стандартных предопределенных намерений для приветствия, отмены, справки и других основных функций. Мы идем дальше и создаем собственное намерение для работы с основными утверждениями, которые будут использоваться, прежде всего, для взаимодействия с нашими навыками. Create Custom Intent

В новом окне пользовательских намерений внизу страницы находится пространство для добавления слотов, которые будут использоваться в ваших целях. Мы добавляем наш ранее созданный пользовательский слот и называем его literal . (Вы можете назвать это как угодно) Пользовательский слот, литерал в нашем случае, - это текст, который мы хотим извлечь из утверждений пользователя. Теперь мы заменим три точки (...) в списке конструкций на {literal} и добавим их в список примеров высказываний.

Add Custom Slot and Sample Utterances to the Custom Intent

Для утверждения

Алекса приказывает Роберту прислать мне куриный стейк с картофельным пюре.

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."
0 голосов
/ 14 февраля 2019

Нет никакого способа получить все высказывание прямо из намерения высшего уровня.Прямо сейчас вы можете использовать пользовательский слот с типом AMAZON.SearchQuery (не пользовательский тип, как предлагается в другом ответе), но вам нужно будет определить опорную фразуВаше высказывание, которое идет до слота.Например, вы должны определить высказывание, например:

search {query}

, где запрос - это слот типа AMAZON.SearchQuery .

Поиск привязки в высказывании является обязательным.(требование типа SearchQuery ), поэтому, пока пользователь запускает высказывание, произнося search , будет зафиксировано все, что следует, что очень близко к тому, чего вы хотите достичь.

Сказав, что на самом деле существует один косвенный способ захвата всего высказывания, пользователь говорит, используя AMAZON.SearchQuery , но только как часть продолжающегося диалога с использованием Управление диалогами .Если вы участвуете в таком диалоге, где Alexa автоматически использует определенные запросы для получения информации о слоте, вы можете определить высказывание, которое представляет собой один изолированный слот типа AMAZON.SearchQuery без привязки.Пример:

Alexa: Ok, I will create a reminder for you. Please tell me the text of the reminder

User: Pick of the kids from school

Alexa: Ok. I will remind you to Pick up the kids from school

В приведенном выше примере Alexa обнаруживает, что пользователь хочет отправить напоминание, но текст напоминания не настроен, поэтому он вызывает слот.Когда вы, как разработчик, определяете подсказки, которые Alexa должна попросить, вы также определяете возможные ответы.В этом случае вы можете определить ответное высказывание как:

{query}

и зафиксировать все, что пользователь говорит в ответ на приглашение, например, например: «забрать детей из школы»

0 голосов
/ 14 мая 2018

В английском языке США есть тип слота, называемый AMAZON.LITERAL, который позволяет вам захватить точную фразу или используемое предложение (в зависимости от того, как оно используется в вашем высказывании). Однако этот тип слота недоступен в других регионах.

Amazon также не рекомендует использовать его:

Хотя вы можете представить новые и обновленные навыки английского языка (США) с AMAZON.LITERAL, пользовательские типы слотов обеспечивают лучшую точность, чем AMAZON.LITERAL в большинстве случаев. Поэтому мы рекомендуем вам рассмотрите возможность перехода на пользовательские типы слотов, если это возможно. Обратите внимание, что AMAZON.LITERAL не поддерживается ни на одном языке, кроме английского (США).

См .: https://developer.amazon.com/docs/custom-skills/literal-slot-type-reference.html

...