Lambda响应发回Lex插槽?

时间:2018-04-05 15:40:38

标签: node.js amazon-web-services aws-lambda amazon-lex

我写了5-6个插槽,并且有lambda函数调用第三方天气api,我得到api的响应。现在我该如何处理该响应并将其发送回带有响应的lex插槽。

例如:在Lex,插槽国家I键入印度,然后城市I键入Hyderabad。我正在调用lambda函数,并希望响应应该在带有温度详细信息的lex插槽中。

我使用Lex控制台和Lambda函数作为内联代码编辑器。

2 个答案:

答案 0 :(得分:2)

我将使用2个插槽,并在代码(python)中处理空插槽。

首先,您必须在意图中定义2个插槽func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) city,机器人将在country中检查插槽值是否已填充,如果验证成功,它将会调用DialogCodeHook来调用weather api将结果返回给用户。

注意:您必须检查FulfillmentCodeHook,以便它转到Initialization and validation code hook

DialogCodeHook

希望它有所帮助。

答案 1 :(得分:1)

Lambda对Lex的响应应具有以下结构,其中dialogAction参数是必需的

"dialogAction": 
   {
       "type": "Close",
        "fulfillmentState": "Fulfilled or Failed",
        "message": {
         "contentType": "PlainText or SSML or CustomPayload",
         "content": "Message to convey to the user. For example, Thanks, your pizza has been 
 ordered."
     },
      "responseCard": {
         "version": integer-value,
         "contentType": "application/vnd.amazonaws.card.generic",
         "genericAttachments": [
            {
             "title":"card-title",
             "subTitle":"card-sub-title",
             "imageUrl":"URL of the image to be shown",
             "attachmentLinkUrl":"URL of the attachment to be associated with the card",
             "buttons":[ 
                 {
                    "text":"button-text",
                    "value":"Value sent to server on button click"
                 }
              ]
           } 
       ] 
     }

您可以使用以下代码作为示例,以在回调中创建node.js响应。在这里,使用dialogAction强制参数创建了JSON对象,并添加了其他属性。将“要返回的数据”更改为要返回到AWS Lex的值。

var obj = {};
var dialogAction = {};
   dialogAction.type="Close";
   dialogAction.fulfillmentState="Fulfilled";

   var message = {};
   message.contentType="PlainText";
   message.content="Data to return";

   dialogAction.message = message;
   obj.dialogAction = dialogAction;
   connection.end(function (err) { callback(err, obj)});