Amazon web services AWS';LEX bot在要求履行时期待什么?
我有和AWS LEX Bot,需要从dynamoDB表中提取一些数据 我在Java中创建了一个Lambda函数来实现这一点 我能够成功调用lambda函数,但无法在聊天窗口中显示输出 为了使响应正确打印,需要使用什么格式Amazon web services AWS';LEX bot在要求履行时期待什么?,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我有和AWS LEX Bot,需要从dynamoDB表中提取一些数据 我在Java中创建了一个Lambda函数来实现这一点 我能够成功调用lambda函数,但无法在聊天窗口中显示输出 为了使响应正确打印,需要使用什么格式 import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import com.amazonaws.AmazonClientException; import com.ama
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import com.amazonaws.AmazonClientException;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.EnvironmentVariableCredentialsProvider;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
import com.amazonaws.services.dynamodbv2.model.AttributeValue;
import com.amazonaws.services.dynamodbv2.model.ComparisonOperator;
import com.amazonaws.services.dynamodbv2.model.Condition;
import com.amazonaws.services.dynamodbv2.model.ScanRequest;
import com.amazonaws.services.dynamodbv2.model.ScanResult;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Map<String, Object>, String> {
private static final String RESPONSE = "RESPONSE";
@Override
public String handleRequest(Map<String, Object> request, Context context) {
@SuppressWarnings("unchecked")
Map<String, Map<String,String>> currentIntent = (Map<String, Map<String,String>>) request.get("currentIntent");
Map<String, String> slots = currentIntent.get("slots");
String countryName = slots.get("COUNTRY");
AWSCredentials credentials = null;
try {
credentials = new EnvironmentVariableCredentialsProvider().getCredentials();
} catch (Exception e) {
throw new AmazonClientException("Cannot load the credentials from the credential profiles file.", e);
}
AmazonDynamoDBClient dynamoDB = new AmazonDynamoDBClient(credentials);
Region region = Region.getRegion(Regions.US_EAST_1);
dynamoDB.setRegion(region);
HashMap<String, Condition> scanFilter = new HashMap<String, Condition>();
Condition condition = new Condition()
.withComparisonOperator(ComparisonOperator.EQ)
.withAttributeValueList(new AttributeValue().withS(countryName));
scanFilter.put("name", condition);
ScanRequest scanRequest = new ScanRequest("MigrateCountry").withScanFilter(scanFilter);
ScanResult scanResult = dynamoDB.scan(scanRequest);
String responseText;
if (scanResult.getCount() == 0) {
responseText = "I'm sorry, I don't have any information about "+countryName+".";
} else {
responseText = "Here's a fun fact about "+countryName+": "+scanResult.getItems().get(0).get("funFact")+".";
}
context.getLogger().log("RESPONSE: "+responseText);
return responseText;
}
import java.util.HashMap;
导入java.util.LinkedHashMap;
导入java.util.Map;
导入com.amazonaws.AmazonClientException;
导入com.amazonaws.auth.AWSCredentials;
导入com.amazonaws.auth.EnvironmentVariableCredentialsProvider;
导入com.amazonaws.regions.Region;
导入com.amazonaws.regions.regions;
导入com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient;
导入com.amazonaws.services.dynamodbv2.model.AttributeValue;
导入com.amazonaws.services.dynamodbv2.model.ComparisonOperator;
导入com.amazonaws.services.dynamodbv2.model.Condition;
导入com.amazonaws.services.dynamodbv2.model.ScanRequest;
导入com.amazonaws.services.dynamodbv2.model.ScanResult;
导入com.amazonaws.services.lambda.runtime.Context;
导入com.amazonaws.services.lambda.runtime.RequestHandler;
公共类lambdFunctionHandler实现RequestHandler{
私有静态最终字符串RESPONSE=“RESPONSE”;
@凌驾
公共字符串handleRequest(映射请求、上下文){
@抑制警告(“未选中”)
Map currentIntent=(Map)request.get(“currentIntent”);
Map slots=currentIntent.get(“slots”);
String countryName=slots.get(“国家”);
AWSCredentials凭证=null;
试一试{
凭据=新环境VariableCredentialsProvider().getCredentials();
}捕获(例外e){
抛出新的AmazonClientException(“无法从凭据配置文件加载凭据。”,e);
}
AmazonDynamoDBClient dynamoDB=新的AmazonDynamoDBClient(凭证);
Region Region=Region.getRegion(Regions.US\u EAST\u 1);
发电机设置区域(区域);
HashMap scanFilter=新的HashMap();
条件条件=新条件()
.带ComparisonOperator(ComparisonOperator.EQ)
.WithAttributeValue列表(新的AttributeValue().withS(countryName));
scanFilter.put(“名称”,条件);
ScanRequest ScanRequest=新的ScanRequest(“MigrateCountry”)。使用scanFilter(scanFilter);
ScanResult ScanResult=dynamoDB.scan(扫描请求);
字符串响应文本;
if(scanResult.getCount()==0){
responseText=“对不起,我没有关于“+countryName+”的任何信息”;
}否则{
responseText=“这里有一个关于“+countryName+”的有趣事实:“+scanResult.getItems().get(0.get)(“funFact”)+”;
}
context.getLogger().log(“响应:+responseText”);
返回响应文本;
}
中提供了响应格式
文档示例:
"dialogAction": {
"type": "Close",
"fulfillmentState": "Fulfilled or Failed",
"message": {
"contentType": "PlainText or SSML",
"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"
}
]
}
]
}
}
注意:如果您不使用这些字段,其中许多字段可以留空