该错误通常发生在使用AWS Amplify、Amazon Lex v2和React Native构建聊天机器人应用程序时。它表示未提供会话ID,这是一项必需的输入参数。要解决此问题,您可以在调用Lex API时提供会话ID,如下所示:
import Amplify, { Auth } from 'aws-amplify';
import AWS from 'aws-sdk';
import { AmazonTextInSpeechProvider } from '@aws-amplify/pubsub';
import { AmazonLexProvider } from '@aws-amplify/chatbot';
import awsconfig from './aws-exports';
Amplify.configure(awsconfig);
// Initialize Amazon Text In Speech Provider
Amplify.addPluggable(new AmazonTextInSpeechProvider());
// Initialize Amazon Lex V2 Provider
AWS.config.update({ region: awsconfig.aws_cognito_region });
const credentials = Auth.essentialCredentials(AWS);
Amplify.addPluggable(new AmazonLexProvider({
botName: 'exampleBot',
botAliasId: 'exampleBotAliasId',
botRegion: 'exampleBotRegion',
credentials,
}));
// Create a new session ID and send it to the Lex API
const sessionId = Date.now().toString();
Amplify.PubSub.publish('AWS.lex', {
sessionAttributes: {},
message: '',
options: {
botAliasId: 'exampleBotAliasId',
botName: 'exampleBot',
localeId: 'en_US',
sessionState: {
dialogAction: {
type: 'Delegate',
},
requestId: sessionId,
},
},
});
在上面的代码中,我们使用Date.now()函数为会话ID生成一个唯一的示例。您可以使用其他方法来生成唯一的会话ID。在PubSub.publish()函数中,我们将会话ID作为请求ID发送给Lex API,以便它知道在一个会话中哪些请求是关联的。
上一篇:AWSAmplify(AppSync+Cognito)使用动态组进行每个组织/租户的授权。
下一篇:AWSAmplify,从AppSyncGraphQLAPI获取项目时出现'Error:Nocredentials”错误