Вопрос или проблема
Я пытаюсь использовать делегирование диалога. Я работаю в консоли разработчика Alexa. Автоматическое делегирование диалога включено в EditContactDetailsIntent. Ниже представлены 2 обработчика: EditContactDetailsIntentHandler и InProgressEditContactDetailsIntentHandler, но я получаю странную ошибку при попытке инициировать вышеупомянутую последовательность намерений, которая не имеет следа в логах CloudWatch:
{
"type": "INTERNAL_SERVICE_ERROR",
"message": "Не удается найти метаданные пакета навыка для skillId amzn1.ask.skill.GUID_HERE локаль en-GB стадия разработки"
}
2 обработчика:
class EditContactDetailsIntentHandler(AbstractRequestHandler):
def can_handle(self, handler_input):
return (ask_utils.is_intent_name("EditContactDetailsIntent")(handler_input) and
ask_utils.request_util.get_dialog_state(handler_input) == "COMPLETED")
def handle(self, handler_input):
speak_output = "Это EditContactDetailsIntent, инициированный, когда номер телефона завершен."
return (
handler_input.response_builder
.speak(speak_output)
.ask(speak_output)
.response
)
class InProgressEditContactDetailsIntentHandler(AbstractRequestHandler):
def can_handle(self, handler_input):
return (
ask_utils.is_intent_name("EditContactDetailsIntent")(handler_input) and
ask_utils.request_util.get_dialog_state(handler_input) != "COMPLETED"
)
def handle(self, handler_input):
currentIntent = handler_input.request_envelope.request.intent
return (
handler_input.response_builder
.add_delegate_directive(currentIntent)
.response
)
Ответ или решение
Ошибка, с которой вы столкнулись, является распространенной проблемой при использовании Amazon Alexa для разработки приложений с автоматической делегацией диалогов. Сообщение об ошибке "Can’t find skill bundle metadata for skillId amzn1.ask.skill.GUID_HERE locale en-GB stage development" указывает на то, что система не может найти метаданные бандла навыка для указанного идентификатора навыка.
Возможные причины ошибки:
-
Неверный идентификатор навыка: Убедитесь, что идентификатор навыка, который вы указываете в вашем коде, соответствует тому, который представлен в консоли Alexa Developer. Этот идентификатор должен быть скопирован без изменений или дополнений, чтобы избежать возможных ошибок.
-
Обновление метаданных: Если недавно были внесены изменения в структуру вашего навыка или его метаданные, это может занять некоторое время до того, как все изменения будут синхронизированы между сервером и вашей реализацией. Проверьте, что все изменения были сохранены и опубликованы.
-
Настройки локализации: Убедитесь, что все файлы метаданных локализации правильные. Ошибка упоминает локаль
en-GB
, проверьте, правильно ли настроены языковые настройки вашего навыка. -
Этап разработки: На этапе разработки, вы можете столкнуться с ограничениями или проблемами синхронизации. Попробуйте переключить навык в этап "тестирования" или "публикации", чтобы проверить, сохраняется ли ошибка.
Рекомендации по устранению:
-
Протестируйте навык: Запустите тесты с различными сценариями. Прежде чем решать проблему, убедитесь, что функционал, использующий Diaglog Delegation, полностью завершен и протестирован с различными вводами.
-
CloudWatch: Ваша ошибка не отображается в логах CloudWatch. Это может означать, что проблема возникает на уровне Amazon Alexa или что логи не настроены. Убедитесь, что CloudWatch правильно подключен для получения логов от вашего навыка.
-
Обратились в службу поддержки: Если ошибка не исчезает, вы можете обратиться в службу технической поддержки Amazon. Предоставьте им полную информацию об ошибке, включая идентификатор навыка и пример запроса.
Проверка логики кода
Код для EditContactDetailsIntentHandler
и InProgressEditContactDetailsIntentHandler
выглядит в целом корректным, за исключением того, что не хватает дополнительной обработки ошибок по вопросам делегирования. Убедитесь, что данные, отправляемые в делегат, соответствуют ожиданиям.
- Рассмотрите возможность добавления обработки ошибок, чтобы лучше отследить возможные проблемы, возникающие в процессе работы с Intent.
- Проверьте, что ничего не мешает вашему обработчику получить информацию о текущем состоянии диалога.
Заключение
Ошибка "Can’t find skill bundle metadata" может быть следствием нескольких факторов, связанных с конфигурацией вашего навыка Alexa. Проверьте идентификаторы, локали, метаданные и журналистику. Также помните, что обращение в поддержку может помочь в более глубоких проблемах, которые не очевидны на первый взгляд. Регулярно проверяйте логи, синхронизацию, и корректность установки навыка, чтобы избежать повторного возникновения этой проблемы в будущем.