Что я пытаюсь сделать:
У меня очень простой навык Alexa Skill, который слушает командное слово:
{
"intents": [{
"intent": "AffiliateEmpire",
"slots": [
{
"name": "affiliate_action",
"type": "AFFILIATE_ACTIONS"
},
{
"name": "date",
"type": AMAZON.DATE
}
}]
}
Пользовательский тип слота:
AFFILIATE_ACTIONS commissions | earnings | sales | summary
Мои образцы высказываний:
AffiliateEmpire for affiliate {affiliate_action}
AffiliateEmpire get {affiliate_action} for {date}
Это связывается с моим сервером PHP, на котором я прослушиваю тип запроса.
В чем проблема?
Когда я вызываю командное слово без какого-либо намерения, оно отправляет «LaunchRequest» моему серверу и правильно возвращает card
и outputSpeech
Если я прошу о намерении, он отправляет IntentRequest
моему серверу, но затем также отправляет SessionEndedRequest
.
Я обрабатываю IntentRequest
и отправляю ему ответ в кодировке json в следующих строках:
array(
'version' => '1.0',
'response' => array(
'outputSpeech' => array(
'type' => 'PlainText',
'text' => 'Some simple response'
)),
'shouldEndSession' => true,
'sessionAttributes' => array()
));
Мое Amazon Echo никогда не говорит Some simple response
, а вместо этого выдает There was a problem communicating with the requested skill
До этого у меня был очень похожий навык, но я не вижу, что делаю неправильно.
Что я пробовал.
Я использую php для записи файла журнала для каждого необработанного запроса, запроса json_decoded и ответа, который я отправил обратно в Amazon. Я также использую инструмент тестирования, но это дает мне The remote endpoint could not be called, or the response it returned was invalid.
. Я знаю, что он может вызывать мою конечную точку, поскольку каждый раз я вижу записываемый файл журнала.
Почему он вызывает мое намерение, но затем вызывает ошибку, завершая сеанс?