You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Node.js集成Amazon Lex QnA机器人实现API交互

用Node.js集成Amazon Lex V2 QnA机器人实现交互

1. 准备依赖与凭证配置

  • 安装AWS Lex Runtime V2的SDK包:
    npm install @aws-sdk/client-lex-runtime-v2
    
  • 配置AWS访问凭证:
    可通过设置环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY,或在本地创建~/.aws/credentials文件配置;若代码运行在AWS服务(如ECS、Lambda)上,直接使用IAM角色权限即可。

2. 初始化Lex客户端

导入并初始化Lex Runtime V2客户端,指定你的AWS区域:

const { LexRuntimeV2Client, CreateSessionCommand, RecognizeTextCommand } = require("@aws-sdk/client-lex-runtime-v2");

const client = new LexRuntimeV2Client({
  region: "你的AWS区域(例如us-east-1)"
});

3. 实现两轮交互流程

第一轮:触发technical_support意图

发送"technical_support"表述,获取机器人的初始引导响应:

async function startSupportSession() {
  // 创建会话请求参数
  const createSessionParams = {
    botId: "你的Lex机器人ID",
    botAliasId: "你的Lex机器人别名ID",
    localeId: "你的机器人语言区域(例如en_US)",
    sessionId: "自定义会话ID(可随机生成)",
    requestAttributes: {}
  };

  // 创建会话
  const createSessionCommand = new CreateSessionCommand(createSessionParams);
  const sessionResponse = await client.send(createSessionCommand);
  const sessionId = sessionResponse.sessionId;

  // 发送technical_support表述
  const recognizeTextParams = {
    botId: "你的Lex机器人ID",
    botAliasId: "你的Lex机器人别名ID",
    localeId: "你的机器人语言区域",
    sessionId: sessionId,
    text: "technical_support"
  };

  const recognizeTextCommand = new RecognizeTextCommand(recognizeTextParams);
  const firstResponse = await client.send(recognizeTextCommand);
  
  // 输出机器人的初始响应
  console.log("机器人响应:", firstResponse.messages[0].content);
  // 此处会输出 "Please tell us in a few words how we can help."

  return sessionId;
}

第二轮:用户提供输入后获取最终响应

使用上一步的会话ID,发送用户输入内容,获取最终回复:

async function sendUserInput(sessionId, userInput) {
  const recognizeTextParams = {
    botId: "你的Lex机器人ID",
    botAliasId: "你的Lex机器人别名ID",
    localeId: "你的机器人语言区域",
    sessionId: sessionId,
    text: userInput
  };

  const recognizeTextCommand = new RecognizeTextCommand(recognizeTextParams);
  const finalResponse = await client.send(recognizeTextCommand);
  
  // 输出机器人的最终响应
  console.log("机器人响应:", finalResponse.messages[0].content);
  // 此处会输出 "Thank you for choosing our service! We will respond to your query via email within 1 day."
}

4. 调用执行交互

// 执行完整流程
async function runInteraction() {
  const sessionId = await startSupportSession();
  // 模拟用户输入,例如用户输入"我无法登录账户"
  await sendUserInput(sessionId, "我无法登录账户");
}

runInteraction().catch(err => console.error("交互出错:", err));

关键参数说明

  • botId/botAliasId:可在Lex控制台的机器人详情页获取
  • localeId:需与你Lex机器人配置的语言区域一致
  • sessionId:用于标识同一场对话,两轮交互需保持一致

内容的提问来源于stack exchange,提问作者Atique Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 10:38:28