我写了5-6个插槽,并且有lambda函数调用第三方天气api,我得到api的响应。现在我该如何处理该响应并将其发送回带有响应的lex插槽。
例如:在Lex,插槽国家I键入印度,然后城市I键入Hyderabad。我正在调用lambda函数,并希望响应应该在带有温度详细信息的lex插槽中。
我使用Lex控制台和Lambda函数作为内联代码编辑器。
答案 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)});