2017-06-23 116 views
2

我在Amazon開發人員控制檯上使用Interaction Model Builder Beta定義了技能模型。 我也使用AWS Lambda定義了一個簡單的lambda函數;亞馬遜Alexa技能端點無法訪問

'use strict'; 

console.log('Loading function'); 

exports.handler = (event, context, callback) => { 
    console.log('Received event:', JSON.stringify(event, null, 2));  
    callback(null, "Hello world"); 
}; 

在測試部分,我進入一個話語,我可以看到正在創建一個JSON請求,但響應:

遠程端點無法調用,或者返回的響應是無效。

我接受了請求JSON,並在AWS Lambda中爲我的函數創建了一個測試。測試成功通過並返回請求的「hello world」。

我的功能觸發器是「Alexa Skills Kit」。 功能日誌不顯示任何東西。

任何想法爲什麼它不工作? 是否有某種認證問題?我需要在某處彈出一個開關嗎?

我使用的ARN地址如下所示:arn:aws:lambda:eu-west-1:481045208193:function:eventCount

回答

1

您的Lambda handler需要依賴於alexa-sdk

例如

import Alexa from 'alexa-sdk'; 

export const handler = (event, context, callback) => { 
    const alexaHandler = Alexa.handler(event, context, callback); 
    alexaHandler.appId = 'amzn1.ask.skill.XXX'; 
    alexaHandler.registerHandlers(
     // DEFINE YOUR HANDLERS HERE 
    ); 
    alexaHandler.execute(); 
}; 

欲瞭解更多信息和例子看看這裏:Alexa Skills Kit SDK for Node.js

+0

感謝您的建議。我認爲這回答了我最初的問題(出於某種原因,不能將它標記爲我手機上的答案,所以稍後會做)。我已經下載了整個github軟件包,並嘗試上傳zip文件,以查看包含的index.js是否會編譯,但是我得到了「errorMessage」:「無法找到模塊'alexa-sdk'」。我看到互聯網提示我需要上傳sdk軟件包,但這不是我剛剛做的嗎?顯然你有一些經驗,對這個問題有什麼建議? –

+0

您是否運行'npm install'來安裝所有依賴項? – MaiKaY

+0

挖完之後,我需要進行以下操作:如果我使用stock index.js文件'var AlexaLambdaHandler = require('./ lib/alexa'); module.exports.handler = AlexaLambdaHandler.LambdaHandler; module.exports.CreateStateHandler = AlexaLambdaHandler.CreateStateHandler; module.exports.StateString = AlexaLambdaHandler.StateString;'從Alexa測試頁執行測試我得到「無效響應」。 –

0

你當然可以不使用Alexa的SDK創建的node.js技能。 this is the link to a github gist爲一個不使用SDK的實時技術稱爲「計數卡」。

根據我的經驗,Alexa Developer Console中的服務模擬器充滿了錯誤。如果您的函數在由服務模擬器創建的JSON中複製後在Lambda上運行,那麼「arn」可能就沒問題。
您是否嘗試過使用實際的亞馬遜Alexa或Amazon Echo來調用您的技能?你可能會驚訝地發現你的技能真的有效。

由於Alexa技能套件在US-N.Virginia和EU-Ireland中得到支持,因此您的支持不錯。

相關問題