Невозможно отладить "Возникла проблема с ответом запрошенного навыка"
Предыстория: я работаю через карточку Skill, которая позволяет Alexa задавать базовые вопросы о языке программирования. Пользователь может выбирать между Ruby, Python или JS.
Прогрессия идет:
LaunchRequest
приветствует пользователя, затем спрашивает его языковые предпочтения- Пользователь отвечает, вызывая
SetLanguageIntent
для запуска - Затем задается вопрос пользователю
Тем не менее, я не могу пройти SetLanguageIntent
без появления сообщения "Возникла проблема с ответом запрошенного навыка".
Как видно из ответа, SetLanguageIntent
правильно активируется через слот ruby
также соответствует правильно.
"request": {
"type": "IntentRequest",
"requestId": "amzn1.echo-api.request.743f750e-96d9-4ef9-aeba-e0aec2e45afb",
"timestamp": "2018-09-12T13:35:25Z",
"locale": "en-US",
"intent": {
"name": "SetMyLanguageIntent",
"confirmationStatus": "NONE",
"slots": {
"language": {
"name": "language",
"value": "ruby",
"resolutions": {
"resolutionsPerAuthority": [
{
"authority": "amzn1.er-authority.echo-sdk.amzn1.ask.skill.ee34487d-d343-4deb-ab6c-193777c92aa8.languages",
"status": {
"code": "ER_SUCCESS_MATCH"
},
"values": [
{
"value": {
"name": "ruby",
"id": "58e53d1324eef6265fdb97b08ed9aadf"
}
}
]
}
]
},
"confirmationStatus": "NONE"
}
}
}
Однако в этот момент всегда появляется сообщение об ошибке "Возникла проблема с ответом на запрошенный навык". В журналах CloudWatch нет сообщений об ошибках.
Для справки, вот SetLanguageIntent
код. Как отмечается в комментарии, тест "Хорошо", по крайней мере, должен был быть сказан. Тем не менее, он не выполняется.
'SetMyLanguageIntent': function() {
this.response.speak('Okay'); //this should at least have been said
this.attributes.flashcards.currentLanguage = this.event.request.intent.slots.languages.value;
var currentLanguage = this.attributes.flashcards.currentLanguage
this.response
.speak('Okay, I will ask you some questions about ' +
currentLanguage + '. Here is your first question. ' +
AskQuestion(this.attributes))
.listen(AskQuestion(this.attributes));
this.emit(':responseReady');
},
Любая помощь высоко ценится!
Изменить: обновлено с именами слотов
2 ответа
Я вижу проблему с вашим кодом. Вот почему у вас, вероятно, возникла проблема. Вы пытаетесь получить доступ к неопределенному свойству this.event.request.intent.slots.languages.value
, Ошибка в словах. Это должен быть язык.
Таким образом, способ доступа к значению слота должен быть: this.event.request.intent.slots.language.value
Я исправил ту же проблему для себя, просто добавив cardRenderer()
на мой ответ. Как это:
this.response.speak("my text").cardRenderer("ttitle","some content","image");
В журнале устройства на тестовом симуляторе я заметил, что рендерер карты появился, сказав, что навык ответил неудачей. Поэтому я сделал снимок, и это сработало. Надеюсь, это исправит и вас!