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. спасибо, я просто поместил ссылку на свою полную модель взаимодействия в своем вопросе