2016-12-30 5 views
6

Что-то испортилось с моим AMAZON.StopIntent. Независимо от того, что я там помещал (я пробовал все из каждого учебника), всякий раз, когда он называется, я получаю «Была проблема с ответом запрошенного умения», и приложение Alexa показывает ошибку, поскольку «ответ речевого сообщения не может быть нулевым». Мой проект находится в формате JSON, а не в Java.Проблема с Null SpeechletResponse (Alexa)

Если кто-нибудь может помочь, я очень благодарен!

Спасибо!

В соответствии с просьбой, вот что направляется к Lambda

{ 
    "session": { 
    "sessionId": "SessionId.XXXXX", 
    "application": { 
     "applicationId": "amzn1.ask.skill.XXXXXXX" 
    }, 
    "attributes": {}, 
    "user": { 
     "userId": "amzn1.ask.account.XXXXXXX" 
    }, 
    "new": true 
    }, 
    "request": { 
    "type": "IntentRequest", 
    "requestId": "EdwRequestId.XXXXXX", 
    "locale": "en-US", 
    "timestamp": "2017-01-18T22:38:53Z", 
    "intent": { 
     "name": "AMAZON.StopIntent", 
     "slots": {} 
    } 
    }, 
    "version": "1.0" 
} 

А вот код Релевент:

var handlers = { 
    'LaunchRequest': function() { 
     this.emit('AMAZON.HelpIntent'); 
    }, 
    'GetNewDogThoughtIntent': function() { 
     this.emit('GetDogThought'); 
    }, 
    'GetNewCatThoughtIntent': function() { 
     this.emit('GetCatThought'); 
    }, 
    'GetDogThought': function() { 
     var dogthoughtIndex = Math.floor(Math.random() * DOGTHOUGHTS.length); 
     var randomDogThought = DOGTHOUGHTS[dogthoughtIndex]; 

     // Create speech output 
     var speechOutput = "Your dog is thinking, " + randomDogThought; 

     this.emit(':tellWithCard', speechOutput, "Your dog was thinking... ", randomDogThought); 
    }, 
    'GetCatThought': function() { 
     var catthoughtIndex = Math.floor(Math.random() * CATTHOUGHTS.length); 
     var randomCatThought = CATTHOUGHTS[catthoughtIndex]; 

     // Create speech output 
     var speechOutput = "Your cat is thinking, " + randomCatThought; 

     this.emit(':tellWithCard', speechOutput, "Your cat was thinking... ", randomCatThought); 
    }, 
    'AMAZON.HelpIntent': function() { 
     var speechOutput = "You can ask me for what your cat or dog is thinking, or you can say exit... Right now I can only provide thoughts for one cat or dog at a time... What can I help you with?"; 
     var reprompt = "What can I help you with? Make sure to say if your pet is a cat or dog when you ask!"; 
     this.emit(':ask', speechOutput, reprompt); 
    }, 
    'SessionEndedRequest': function (sessionEndedRequest, session) { 
    }, 
    "AMAZON.StopIntent": function (shouldEndSession) { 
    } 

ответ

4

Я, наконец, получил его после консультации с учебником SpaceGeek и внесения некоторых изменений в него. В принципе, вот что работал:

'AMAZON.StopIntent': function() { 
    this.emit(':tell', "Goodbye!"); 

}

Ключ был ':tell', что у меня не было раньше. Спасибо всем, кто ответил и помог!

0

Я нашел эту ссылку на форуме разработчиков Алекса. Это может помочь в вашей проблеме ..

https://forums.developer.amazon.com/questions/49211/system-error-speechletresponse-was-null.html

Я пишу этот код в PHP, если это помогает

$data  = file_get_contents("php://input"); 
$jsonData = json_decode($data); 
if($jsonData->request->type === "IntentRequest"){ 
    $IntentName = $jsonData->request->intent->name; 
    if($IntentName === "AMAZON.StopIntent"){ 
     $response = '{ 
      "version" : "1.0", 
      "response" : { 
       "outputSpeech": { 
       "type": "PlainText", 
       "text": "" 
      }, 
      "shouldEndSession" : false 
     } 
    }'; 
    echo $response; 
    } 
} 
+0

Привет! Спасибо, но эти предложения все еще не сработали, все еще получая Invalid Response. Все мои другие намерения прекрасно работают, это просто AMAZON.StopIntent. – Branch

+0

Не могли бы вы показать ответ, который вы отправляете? –

+0

обновлен, спасибо. – Branch

1

Вы можете разместить свой код для StopIntent? Вы должны называть ответ реплик в нем. Например:

'AMAZON.StopIntent': function (shouldEndSession, response) { 
    var speechOutput = "Goodbye"; 
    response.tell(speechOutput); 
}, 

Вы правильно строите ответ и передаете его?

+0

Это дало много ошибок, когда я его вложил. Это связано с тем, что мой проект JSON? Прямо сейчас у меня нет ничего в StopIntent, потому что все, что я помещаю, либо получает ошибку в Lambda, либо дает нулевой ответ. – Branch

+0

Можете ли вы опубликовать код своего навыка? Я не уверен, на каком языке вы работаете или как все построено. Благодаря! :) – AppleBaggins

+0

OP обновлен с соответствующим кодом. на основе шаблона SpaceGeek. Обратите внимание, что SessionEndedRequest работает нормально, но не AMAZON.StopIntent. Я буквально пробовал все там, поэтому в настоящее время у меня есть (shouldEndSession), но я пробовал другие вещи в {} и в(). – Branch

 Смежные вопросы

  • Нет связанных вопросов^_^