Skip to content

Bot ​

The Bot resource lets you create and manage AWS Lex Bots for building conversational interfaces using voice and text.

Minimal Example ​

Create a basic Lex Bot with minimal configuration, including required properties and one optional setting.

ts
import AWS from "alchemy/aws/control";

const basicBot = await AWS.Lex.Bot("basicBot", {
  Name: "CustomerSupportBot",
  RoleArn: "arn:aws:iam::123456789012:role/service-role/AWSLexBotRole",
  IdleSessionTTLInSeconds: 300,
  DataPrivacy: {
    ChildDirected: false,
    AllowUnencrypted: true
  }
});

Advanced Configuration ​

Configure a Lex Bot with advanced settings, including multiple locales and auto-building capabilities.

ts
const advancedBot = await AWS.Lex.Bot("advancedBot", {
  Name: "MultiLangSupportBot",
  RoleArn: "arn:aws:iam::123456789012:role/service-role/AWSLexBotRole",
  IdleSessionTTLInSeconds: 300,
  AutoBuildBotLocales: true,
  BotLocales: [
    {
      LocaleId: "en-US",
      NluIntentConfidenceThreshold: 0.8,
      VoiceId: "Joanna",
      BotAlias: "en-US-Prod",
      BotVersion: "$LATEST"
    },
    {
      LocaleId: "es-US",
      NluIntentConfidenceThreshold: 0.8,
      VoiceId: "Penelope",
      BotAlias: "es-US-Prod",
      BotVersion: "$LATEST"
    }
  ],
  DataPrivacy: {
    ChildDirected: false,
    AllowUnencrypted: true
  }
});

Using S3 for Bot Files ​

Create a Lex Bot that uses an S3 bucket for the bot file location, allowing for easier management of bot definitions.

ts
const s3LocationBot = await AWS.Lex.Bot("s3LocationBot", {
  Name: "FileBasedBot",
  RoleArn: "arn:aws:iam::123456789012:role/service-role/AWSLexBotRole",
  IdleSessionTTLInSeconds: 300,
  BotFileS3Location: {
    Bucket: "my-lex-bot-bucket",
    Key: "bots/file-based-bot.json"
  },
  DataPrivacy: {
    ChildDirected: false,
    AllowUnencrypted: true
  }
});

Test Bot Alias Settings ​

Configure a Lex Bot with test alias settings for easier development and testing of new features.

ts
const testAliasBot = await AWS.Lex.Bot("testAliasBot", {
  Name: "TestingBot",
  RoleArn: "arn:aws:iam::123456789012:role/service-role/AWSLexBotRole",
  IdleSessionTTLInSeconds: 300,
  TestBotAliasSettings: {
    BotAlias: "testAlias",
    BotVersion: "$LATEST",
    Tags: [
      { Key: "Environment", Value: "Testing" }
    ]
  },
  DataPrivacy: {
    ChildDirected: false,
    AllowUnencrypted: true
  }
});