该错误可能是由于Amazon Lex服务未收到所需的输入标签' sessionId'。为了解决这个问题,你需要在你的AWS Amplify项目中使用Amazon Lex客户端时,确保在调用createSession()函数时传入sessionId参数。
示例代码如下(仅需添加sessionId参数即可):
import { AmazonAIPredictionsProvider } from '@aws-amplify/predictions';
import Amplify, { Auth } from 'aws-amplify';
import awsconfig from './aws-exports';
Amplify.configure({
...awsconfig,
Auth: {
identityPoolId: 'your_identity_pool_id',
region: 'us-east-1',
},
predictions: {
'convertTextToSpeech': {
"voice": "Amy"
}
}
});
const lexRunTime = new AWS.LexRuntime({region: awsconfig.aws_cognito_region});
const lexUserId = 'chatbot-demo-' + uuid.v4();
// 创建sessionId
lexRunTime.createSession({
botAlias: '$LATEST',
botName: 'chatbot',
userId: lexUserId
}, (err, data) => {
if (err) {
console.log(err);
return
}
// 这里将sessionId传递给Amazon Lex客户端
const lexConfig = {
botName: 'chatbot',
botAlias: '$LATEST',
sessionId: data.sessionId,
region: awsconfig.aws_cognito_region
};
const lexClient = new AWS.LexRuntime(lexConfig);
// 通过和chatbot的匹配交互与chatbot通信
async function analyzeText(inputText) {
try {
const lexResult = await lexClient.postText({
botAlias: '$LATEST',
botName: 'chatbot',
inputText: inputText,
userId: lexUserId,
sessionAttributes: {}
}).promise();
return lexResult.message;
} catch (err) {
console.log('error:', err);
return '我遇到了一些问题,请稍后再试