Не удалось отладить «Возникла проблема с ответом запрошенного навыка» - PullRequest
0 голосов
/ 12 сентября 2018

Предыстория: я работаю через карточку Skill, которая позволяет Alexa задавать базовые вопросы о языке программирования.Пользователь может выбрать между Ruby, Python или JS.

Последовательность идет следующим образом:

  • LaunchRequest приветствует пользователя, затем запрашивает его языковые предпочтения
  • Пользовательотвечает, вызывая SetLanguageIntent для запуска
  • Затем пользователю задается вопрос

Однако я не могу пройти через SetLanguageIntent, не встретив "Была проблемас ответом на запрошенный навык ".

Вот диалог: enter image description here

Как видно из ответа, 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');
  },

Любая помощь очень ценится!

Редактировать: обновляется с именами слотов

enter image description here

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Я исправил ту же проблему для себя, просто добавив cardRenderer() к своему ответу.Примерно так:

this.response.speak("my text").cardRenderer("ttitle","some content","image");

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

0 голосов
/ 13 сентября 2018

Я вижу проблему с вашим кодом. Вот почему у вас, вероятно, возникла проблема. Вы пытаетесь получить доступ к неопределенному свойству this.event.request.intent.slots.languages.value. Ошибка в слове languages ​​. Это должен быть язык.

Таким образом, способ доступа к значению слота должен быть: this.event.request.intent.slots.language.value

...