2017-05-08 31 views

回答

0

從我已經準備好的我的解釋是,你有興趣通過發送一個SNS消息到一個不相關的lambda函數來結束你的亞馬遜回聲上的會話。如果這是正確的,我將如何繼續。

我還沒有試過,但其與亞馬遜的Alexa技巧Node.js的豐富的經驗,我會說這可能會以編程的方式如下實現:

1)使你的Alexa的應用中進行dynamodb表。 (如第4行所示)

exports.handler = function(event, context, callback) { 
    var alexa = Alexa.handler(event, context); 
    alexa.appId = `YOUR_ALEXA_SKILL_ID`; 
    alexa.dynamoDBTableName = 'NAME_OF_YOUR_DYNAMODB_TABLE'; //You literally dont need any other code it just does the saving and loading??!! WHAT? 
    alexa.registerHandlers(newSessionHandlers, newGameYesNoHandlers); 
    alexa.execute(); 
}; 

然後,Alexa將爲每個唯一用戶創建一個數據錶行。請注意,您需要設置IAm權限才能允許lambda訪問此數據表。

2)當你的會話啓動有它在它自己的數據錶行更新的值,這樣this.attributes['EXECUTING'] = True;

3)會議期間內每個連續的意圖調用檢查this.attributes['EXECUTING]的值,如果值是True,大,如果是False通過發出結束會話this.emit(':tell', "Goodbye!");

4)現在,數據錶行由userId索引。這將是我沒有親自嘗試的棘手部分。我建議在用戶請求他們的用戶ID時創建一個意圖,然後發出一張帶有ID值的卡片。這可以被複制到您自己的SMS lambda函數或其他api中。或者,亞馬遜最近發佈了關於如何將alexa用戶連接到您自己的API的文檔。

https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/linking-an-alexa-user-with-a-user-in-your-system

這真的取決於你希望是什麼最終產品的樣子。 5)最後,使用您的外部API或替代lambda函數以及用戶userId來訪問相同的dynamodb表並將['EXECUTING']的值更改爲False。接下來運行的意圖將檢查數據庫並導致技能退出。

瞧!

有關特定代碼,帳戶鏈接和短信的更多信息,請諮詢其他問題。謝謝

相關問題