Оценка модели Alexa отлично работает, но намерение никогда не вызывается в симуляторе или устройстве alexa

alexa #alexa-skills-kit #alexa-skill #alexa-slot

#alexa #alexa-skills-kit #alexa-умение #alexa-слот

Вопрос:

Я изо всех сил пытаюсь построить свою модель взаимодействия Alexa. Мое приложение используется для запроса данных в реальном времени с устройства smart home. Все, что я делаю, это в основном вызываю свой серверный API с именем пользователя и паролем, и я получаю значение взамен. Моя модель взаимодействия отлично работает для запроса параметров, например, я могу сказать «Температура», и она отлично работает на всех тестовых устройствах. Для этого намерения я получил пользовательский RequestType.

Однако для настройки имени пользователя и пароля мне нужно использовать встроенный тип слота : AMAZON.NUMBER . Поскольку мне нужны только цифры для моих учетных данных, теоретически это должно работать отлично.

Я получил настройку модели взаимодействия, которая отлично работает, когда я нажимаю «Оценить модель» в консоли разработчика Alexa. Однако, как только я иду тестировать на симуляторе или на моем реальном устройстве Alexa, абсолютно невозможно вызвать намерение. Он всегда вызывает одно из других намерений? (Я вижу это в запросе JSON).

Вот как выглядит намерение:

 {
    "name": "SetupUsername",
    "slots": [
        {
            "name": "username",
            "type": "AMAZON.NUMBER"
        }
    ],
    "samples": [
        "my user id is {username}",
        "username to {username}",
        "set my username to {username}",
        "set username to {username}",
        "user {username}",
        "my username is {username}",
        "username equals {username}"
    ]
}
 

Что бы я ни говорил или ни вводил в симуляторе, я не могу назвать это намерение. У меня нет совпадений с другими намерениями. Кто-нибудь видит здесь проблему?

Заранее спасибо

РЕДАКТИРОВАТЬ: я только что понял, что если вы хотите связать учетную запись с Alexa, вам нужно реализовать OAuth2 — может быть, мои намерения никогда не вызываются, потому что они хотят обойти меня, реализуя мою собственную аутентификацию?

Обновить:

Это намерение, которое обычно вызывается вместо этого — это мое намерение инициализации. Так, например, я говорю «мое имя пользователя 12345», будет вызвано следующее намерение:

ОБНОВЛЕНИЕ 2: вот моя полная модель взаимодействия.

(HelpIntent и SetPassword предназначены только для целей тестирования, сейчас они не имеют смысла) Невозможно вызвать SetupUsername ни с одним из образцов в моей модели.

Ответ №1:

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

Когда вы разрабатываете свою модель взаимодействия, вы должны сохранить ее и создать. В противном случае будет работать только модель оценки (документация об этом).

введите описание изображения здесь

Затем, когда вы тестируете в тестовой консоли, вы должны увидеть во вводе JSON внизу, какое намерение было вызвано:

 "request": {
    "type": "IntentRequest",
    "requestId": "xxxx",
    "locale": "en-US",
    "timestamp": "2021-10-20T14:38:59Z",
    "intent": {
        "name": "HelloWorldIntent", <----------- HERE
        "confirmationStatus": "NONE"
    }
}
 

Комментарии:

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

2. Можете ли вы подробно описать, что такое другое намерение. Здесь у вас есть основная причина.

3. Я только что обновил свой вопрос намерением, которое вызывается вместо этого. Это происходит только с моим именем пользователя или паролем intent. Я пробовал создавать разные намерения, и они отлично работают. (Например, я настроил намерение справки, которое вы можете вызвать, сказав, например, help me, и оно всегда срабатывает правильно, разница в том, что в нем нет типа слота AMAZON.NUMBER в качестве входных данных)

4. Хорошо, что мне нужно, чтобы вы сделали: 1. Поделитесь ПОЛНОЙ моделью взаимодействия. 2. Какое выражение, которое вы используете, запускает MyAppInitialIntent вместо SetupUsername. Я повторю и посмотрю, как это можно исправить

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