Alexa Skill ARN - удаленная конечная точка не может быть вызвана или возвращенный ответ недействителен.

Я создал простую лямбда-функцию для вызова веб-страницы, она отлично работает, когда я тестирую ее на странице функций, однако при попытке создать навык для вызова этой функции я получаю сообщение «Удаленная конечная точка не может быть вызвана или ответ был недействителен ". ошибка.

Лямбда-функция

var http = require('http');

exports.handler = function(event, context) {
  console.log('start request to ' + event.url)
  http.get(event.url, function(res) {
    console.log("Got response: " + res.statusCode);
    context.succeed();
  }).on('error', function(e) {
    console.log("Got error: " + e.message);
    context.done(null, 'FAILURE');
  });

  console.log('end request to ' + event.url);
}

Код тестового события выглядит так:

{
  "url": "http://mywebsite.co.uk"
}

и я добавил триггер для «Alexa Skills Kit».

ARN для этой функции отображается как:

arn: aws: lambda: us-east-1: 052516835015: function: CustomFunction

Alexa Skill (портал для разработчиков)

Затем я создал навык с простым намерением:

{
 "intents": [
   {
 "intent": "CustomFunction"
   }
 ]
}

и создал высказывание как:

CustomFunction execute my custom function

В разделе «Конфигурация» для своего навыка я выбрал параметр «AWS Lambda ARN (имя ресурса Amazon)» и ввел ARN в поле для Северной Америки.

В разделе Test -> Service Simulator я добавил «выполнить мою пользовательскую функцию» в качестве текста, и это изменяет лямбда-запрос на отображение:

{
  "session": {
"sessionId": "SessionId.a3e8aee0-acae-4de5-85df-XXXXXXXXX",
"application": {
  "applicationId": "amzn1.ask.skill.XXXXXXXXX"
},
"attributes": {},
"user": {
  "userId": "amzn1.ask.account.XXXXXXXXX"
},
"new": true
  },
  "request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.445267bd-2b4a-45ef-8566-XXXXXXXXX",
"locale": "en-GB",
"timestamp": "2016-11-27T22:54:07Z",
"intent": {
  "name": "RunWOL",
  "slots": {}
}
  },
  "version": "1.0"
}

но когда я запускаю тест, я получаю следующую ошибку:

Удаленная конечная точка не может быть вызвана, или ответ был недействительным.

Есть ли у кого-нибудь идеи, почему навык не может подключиться к функции?

Спасибо


person ca8msm    schedule 27.11.2016    source источник
comment
Если вы посмотрите логи вашей лямбды в cloudwatch - она ​​вызывается?   -  person Tom    schedule 28.11.2016


Ответы (3)


Симулятор сервиса, встроенный в консоль разработчика Amazon Alexa, имеет известные проблемы. Попробуйте скопировать JSON, сгенерированный симулятором, и вставить его в тестовое событие лямбда-функции. Чтобы получить доступ к тестовым событиям лямбды, сначала найдите синюю кнопку «Тест». Рядом с этой кнопкой выберите (Выпадающее меню Действия) -> (Настроить тестовое событие) -> Вставьте предоставленный JSON в область кода -> (Сохранить и проверить). Встроенные функции тестирования Lambda намного надежнее, чем у Alexa.

Если это не решает проблему, событие тестирования лямбды возвращает полный stackTrace и коды ошибок. Устранение неполадок становится намного проще, если каждая ошибка не связана с тем, что «удаленная конечная точка не может быть вызвана, или ответ, который она вернул, был недопустимым».

{
  "session": {
"sessionId": "SessionId.a3e8aee0-acae-4de5-85df-XXXXXXXXX",
"application": {
  "applicationId": "amzn1.ask.skill.XXXXXXXXX"
},
"attributes": {},
"user": {
  "userId": "amzn1.ask.account.XXXXXXXXX"
},
"new": true
  },
  "request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.445267bd-2b4a-45ef-8566-XXXXXXXXX",
"locale": "en-GB",
"timestamp": "2016-11-27T22:54:07Z",
"intent": {
  "name": "RunWOL",
  "slots": {}
}
  },
  "version": "1.0"
}
person Caleb Gates    schedule 03.08.2017
comment
У меня это работает. Или вы можете продолжать попытки, пока не добьетесь успеха !. - person Shamnad P S; 17.08.2017
comment
Страница навыков - ›Тест -› Симулятор обслуживания - ›Вкладка« Текст »-› Введенное высказывание и нажмите кнопку «Спросить имя навыка», и в текстовой области запроса на обслуживание он сгенерировал запрос, содержащий токен доступа к моей связанной учетной записи. Однако в ответе службы я получил Удаленная конечная точка не может быть вызвана или возвращенный ответ был недействительным. Затем я скопировал JSON из запроса службы, переключился на вкладку JSON и вставил скопированный JSON в текстовое поле запроса Json и нажал «Спросить имя навыка». и я получил ожидаемый JSON в ответе службы. Это странно, но сейчас для меня это приемлемо. - person Jignesh Gohel; 24.08.2017

При загрузке .zip не сжимайте папку в .zip.

Вместо этого войдите в папку, выберите package.json, index.js и node modules, затем сожмите их и загрузите .zip.

person Arshima    schedule 21.08.2017

Это сообщение об ошибке очень обширное и может указывать на множество различных проблем. Я получал эту ошибку, и в моем случае это была проблема с тайм-аутом. Как долго этот веб-сайт, на который вы пингуете, отвечает? Тайм-аут не задокументирован должным образом, см. Мой исходный вопрос здесь: Устранение неполадок, связанных с лямбда-взаимодействием Amazon Alexa Skill Kit (ASK)

person Josep Valls    schedule 10.04.2017