2017-05-26 97 views
3

AWS SESLex一起使用測試Chatbot,但在發佈了與Slack應用程序的chatbot後,它不起作用(不會觸發電子郵件服務)。但是,Lambda函數似乎沒有任何問題,因爲我正在將響應文本恢復爲鬆弛狀態。而且我不認爲有一種方法可以檢查錯誤,爲什麼鬆懈會造成問題。當Lex Chatbot發佈到Slack時,AWS Lambda:SES不工作

Lambda功能:

var aws = require('aws-sdk'); 
var ses = new aws.SES({ 
    region: 'us-east-1' 
}); 

exports.handler = function(event, context, callback) { 

    var eParams = { 
    Destination: { 
     ToAddresses: [event.currentIntent.slots.Email] 
    }, 
    Message: { 
     Body: { 
     Text: { 
      Data: "Hi, How are you?" 
     } 
     }, 
     Subject: { 
     Data: "Title" 
     } 
    }, 

    Source: "[email protected]" 
    }; 
    var email = ses.sendEmail(eParams, function(err, data) { 
    if (err) 
    else { 

     context.succeed(event); 

    } 
    }); 

    callback(null, { 
    "dialogAction": { 
     "type": "ConfirmIntent", 
     "fulfillmentState": "Fulfilled", 
     "message": { 
     "contentType": "PlainText", 
     "content": "message to convey to the user, i.e. Are you sure you want a large pizza?" 
     } 
    } 
    }); 
}; 

編輯1:我想這個問題是我沒有得到在[event.currentIntent.slots.Email]值當我公佈我的Slack BOT Lex

+0

我覺得有一種方法,檢查錯誤,當你調用'ses.sendEmail(...)',你應該在你的回調中記錄錯誤,例如'if(err){logError(err); } ...,這可能很好地解釋了爲什麼電子郵件沒有發送。 – ARJMP

+0

@ARJMP我想這個問題是,我沒有得到'[event.currentIntent.slots.Email]'中的值,當我在Slack上發佈我的Lex bot –

回答

2

嘗試以下步驟來確定根本原因:

  1. 確保您有正確的鬆弛與this一步一步如何配置你的機器人。

  2. 如果您的機器人在您的測試機器人(在LEX內)但在Slack上無法正常工作,請確保您的機器人已發佈最新版本的

  3. 在您的AWS Lambda上嘗試以下代碼並查看您獲得的回報。

    callback(null, { "dialogAction": { "type": "ConfirmIntent", "fulfillmentState": "Fulfilled", "message": { "contentType": "PlainText", "content": "Echo: " + JSON.stringify(event.currentIntent.slots) <-- This } } });

希望這有助於。

0

我有一個類似的問題,其中的機器人工作在lex控制檯,但沒有懈怠。雖然與電子郵件無關,但這是我發現的。

由於某種原因,當傳遞給鬆弛時,空會話屬性 被存儲爲NULL。因此你不能向它添加變量。你希望它是{}所以如果是NULL改變它的價值{}

if(intentRequest.sessionAttributes == null){ 
    intentRequest.sessionAttributes = {}; 
}