Beheer uw Amazon Lex-bot via AWS CloudFormation-sjablonen | Amazon-webservices

Beheer uw Amazon Lex-bot via AWS CloudFormation-sjablonen | Amazon-webservices

Bronknooppunt: 2547336

Amazon-Lex is een volledig beheerde dienst voor kunstmatige intelligentie (AI) met geavanceerde natuurlijke taalmodellen voor het ontwerpen, bouwen, testen en implementeren van gespreksinterfaces in applicaties. Het maakt gebruik van geavanceerde deep learning-technologieën om gebruikersinvoer te begrijpen, waardoor ontwikkelaars chatbots, virtuele assistenten en andere applicaties kunnen creëren die in natuurlijke taal met gebruikers kunnen communiceren.

Beheer uw Amazon Lex-bots met behulp van AWS CloudFormatie Hiermee kunt u sjablonen maken die de bot definiëren en alle AWS-bronnen waarvan deze afhankelijk is. AWS CloudFormation levert en configureert deze bronnen namens u, waardoor het risico op menselijke fouten bij het inzetten van bots in nieuwe omgevingen wordt weggenomen. De voordelen van het gebruik van CloudFormation zijn onder meer:

  • Consistentie – Een CloudFormation-sjabloon biedt een consistentere en geautomatiseerde manier om de bronnen die aan een Amazon Lex-bot zijn gekoppeld, in te zetten en te beheren.
  • Versiebeheer – Met AWS CloudFormation kunt u versiebeheersystemen zoals Git gebruiken om uw CloudFormation-sjablonen te beheren. Hierdoor kunt u verschillende versies van uw bot onderhouden en indien nodig teruggaan naar eerdere versies.
  • herbruikbaarheid – U kunt CloudFormation-sjablonen hergebruiken in meerdere omgevingen, zoals ontwikkeling, staging en productie. Dit bespaart tijd en moeite bij het definiëren van dezelfde bot in verschillende omgevingen.
  • Uitbreidingsmogelijkheden – Naarmate uw Amazon Lex-bot in complexiteit groeit, kunt u deze beheren via de AWS-beheerconsole wordt uitdagender. AWS CloudFormation zorgt voor een meer gestroomlijnde en efficiënte aanpak voor het beheer van de definitie en bronnen van de bot.
  • Automatisering – Met behulp van een CloudFormation-sjabloon kunt u het implementatieproces automatiseren. U kunt AWS-services gebruiken zoals AWS CodePipeline en AWS CodeBuild om uw Amazon Lex-bot automatisch te bouwen, testen en implementeren.

In dit bericht begeleiden we u door de stappen die nodig zijn voor het maken van een CloudFormation-sjabloon voor een Amazon Lex V2-bot.

Overzicht oplossingen

We hebben gekozen voor de Reis boeken bot als uitgangspunt voor deze oefening. We gebruiken een CloudFormation-sjabloon om helemaal opnieuw een nieuwe bot te maken, inclusief het definiëren van intenties, slots en andere vereiste componenten. Daarnaast onderzoeken we onderwerpen als versiebeheer, aliassen, integreren AWS Lambda functies, het maken van voorwaardelijke vertakkingen en het inschakelen van logboekregistratie.

Voorwaarden

U moet de volgende vereisten hebben:

  • An AWS-account om een ​​CloudFormation-sjabloon te maken en te implementeren
  • Het nodige AWS Identiteits- en toegangsbeheer (IAM) permissies om AWS CloudFormation en de bronnen die in de sjabloon worden gebruikt te implementeren
  • Basiskennis van Amazon Lex, Lambda-functies en bijbehorende diensten
  • Basiskennis van het maken en implementeren van CloudFormation-sjablonen

Maak een IAM-rol

Om te beginnen moet u een IAM-rol maken die de bot zal gebruiken. U kunt dit bereiken door een CloudFormation-sjabloon te initialiseren en de IAM-rol als resource toe te voegen. U kunt de volgende sjabloon gebruiken om de rol te maken. als jij download het voorbeeldsjabloon en implementeert, zou u moeten zien dat er een IAM-rol is aangemaakt. We geven voorbeelden van sjablonen terwijl we dit bericht doornemen en voegen ze samen naarmate we verder komen.

AWSTemplateFormatVersion: "2010-09-09"
Transform: AWS::Serverless-2016-10-31
Description: CloudFormation template for book hotel bot.
Resources:
  # 1. IAM role that is used by the bot at runtime
  BotRuntimeRole:    
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lexv2.amazonaws.com
            Action:
              - "sts:AssumeRole"
      Path: "/"
      Policies:
        - PolicyName: LexRuntimeRolePolicy
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                  - "polly:SynthesizeSpeech"
                  - "comprehend:DetectSentiment"
                Resource: "*"

Configureer de Amazon Lex-bot

Vervolgens moet u de botdefinitie toevoegen. Het volgende is de YAML-sjabloon voor de Amazon Lex-botdefinitie; je bouwt de benodigde componenten één voor één:

Type: AWS::Lex::Bot
Properties:
  AutoBuildBotLocales: Boolean
  BotFileS3Location: 
    S3Location
  BotLocales: 
    - BotLocale
  BotTags: 
    - Tag
  DataPrivacy: 
    DataPrivacy
  Description: String
  IdleSessionTTLInSeconds: Integer
  Name: String
  RoleArn: String
  TestBotAliasSettings: 
    TestBotAliasSettings
  TestBotAliasTags: 
    - Tag

Om een ​​bot te maken die alleen de botdefinitie bevat, zonder enige bedoeling, kunt u de volgende sjabloon gebruiken. Hier specificeert u de naam van de bot, de ARN van de rol die u eerder hebt gemaakt, instellingen voor gegevensprivacy en meer:

BookHotelBot:
    DependsOn: BotRuntimeRole # The role created in the previous step
    Type: AWS::Lex::Bot
    Properties:
      Name: "BookHotel"
      Description: "Sample Bot to book a hotel"
      RoleArn: !GetAtt BotRuntimeRole.Arn      
      #For each Amazon Lex bot created with the Amazon Lex Model Building Service, you must specify whether your use of Amazon Lex 
      #is related to a website, program, or other application that is directed or targeted, in whole or in part, to children under 
      #age 13 and subject to the Children's Online Privacy Protection Act (COPPA) by specifying true or false in the 
      #childDirected field.
      DataPrivacy:
        ChildDirected: false
      IdleSessionTTLInSeconds: 300

Je kunt download het bijgewerkte sjabloon. Door de bijgewerkte sjabloon te implementeren, kunt u zowel de rol als de botdefinitie maken. Merk op dat je dat bent het bijwerken van de stapel die u in de vorige stap hebt gemaakt.

De laatste stap bestaat uit het definiëren van de BotLocales, die het merendeel van de functionaliteit van de bot vormen. Dit omvat bijvoorbeeld Intents en Slot types. Het volgende is de YAML-sjabloon:

  CustomVocabulary: 
    CustomVocabulary
  Description: String
  Intents: 
    - Intent
  LocaleId: String
  NluConfidenceThreshold: Number
  SlotTypes: 
    - SlotType
  VoiceSettings: 
    VoiceSettings

In dit geval bouw je de BookHotel intent, waarvoor een aangepast slottype voor kamertypes vereist is. Jij stelt de LocaleId, dan de VoiceSettings. Vervolgens voeg je de SlotTypes en de bijbehorende waarden.

De volgende stap is het definiëren van de Intents, te beginnen met de eerste bedoeling, BookHotel, waarbij uitingen, slots en slotprioriteiten worden toegevoegd. De details van deze knooppunten worden gedemonstreerd in de meegeleverde sjabloon. Ten slotte voeg je de tweede intentie toe, namelijk de FallbackIntent. Zie de volgende code:

BotLocales:
        - LocaleId: "en_US"
          Description: "en US locale"
          NluConfidenceThreshold: 0.40
          VoiceSettings:
            VoiceId: "Matthew"
          SlotTypes:
            - Name: "RoomTypeValues"
              Description: "Type of room"
              SlotTypeValues:
                - SampleValue:
                    Value: queen
                - SampleValue:
                    Value: king
                - SampleValue:
                    Value: deluxe
              ValueSelectionSetting:
                ResolutionStrategy: ORIGINAL_VALUE
          Intents:
            - Name: "BookHotel"
              Description: "Intent to book a hotel room"
              SampleUtterances:
                - Utterance: "Book a hotel"
                - Utterance: "I want a make hotel reservations"
                - Utterance: "Book a {Nights} night stay in {Location}"
              IntentConfirmationSetting:
                PromptSpecification:
                  MessageGroupsList:
                    - Message:
                        PlainTextMessage:
                          Value: "Okay, I have you down for a {Nights} night stay in {Location} starting {CheckInDate}.  Shall I book the reservation?"
                  MaxRetries: 3
                  AllowInterrupt: false
                DeclinationResponse:
                  MessageGroupsList:
                    - Message:
                        PlainTextMessage:
                          Value: "Okay, I have cancelled your reservation in progress."
                  AllowInterrupt: false
              SlotPriorities:
                - Priority: 1
                  SlotName: Location
                - Priority: 2
                  SlotName: CheckInDate
                - Priority: 3
                  SlotName: Nights
                - Priority: 4
                  SlotName: RoomType
              Slots:
                - Name: "Location"
                  Description: "Location of the city in which the hotel is located"
                  SlotTypeName: "AMAZON.City"
                  ValueElicitationSetting:
                    SlotConstraint: "Required"
                    PromptSpecification:
                      MessageGroupsList:
                        - Message:
                            PlainTextMessage:
                              Value: "What city will you be staying in?"
                      MaxRetries: 2
                      AllowInterrupt: false
                - Name: "CheckInDate"
                  Description: "Date of check-in"
                  SlotTypeName: "AMAZON.Date"
                  ValueElicitationSetting:
                    SlotConstraint: "Required"
                    PromptSpecification:
                      MessageGroupsList:
                        - Message:
                            PlainTextMessage:
                              Value: "What day do you want to check in?"
                      MaxRetries: 2
                      AllowInterrupt: false
                - Name: "Nights"
                  Description: "something"
                  SlotTypeName: "AMAZON.Number"
                  ValueElicitationSetting:
                    SlotConstraint: "Required"
                    PromptSpecification:
                      MessageGroupsList:
                        - Message:
                            PlainTextMessage:
                              Value: "How many nights will you be staying?"
                      MaxRetries: 2
                      AllowInterrupt: false
                - Name: "RoomType"
                  Description: "Enumeration of types of rooms that are offered by a hotel."
                  SlotTypeName: "RoomTypeValues"
                  ValueElicitationSetting:
                    SlotConstraint: "Required"
                    PromptSpecification:
                      MessageGroupsList:
                        - Message:
                            PlainTextMessage:
                              Value: "What type of room would you like, queen, king or deluxe?"
                      MaxRetries: 2
                      AllowInterrupt: false
            - Name: "FallbackIntent"
              Description: "Default intent when no other intent matches"
              ParentIntentSignature: "AMAZON.FallbackIntent"

Je kunt download het CloudFormation-sjabloon voor het werk dat tot nu toe is gedaan. Na u update uw stapel met deze sjabloon wordt een functionele bot ingezet. Op de Amazon Lex-console kunt u bevestigen dat er een conceptversie van de bot is en een standaardalias TestBotAlias Is gemaakt.

bot-alias

Maak een nieuwe botversie en alias

Amazon Lex ondersteunt publiceren versies van bots, intenties en slottypen, zodat u de implementatie van uw clienttoepassingen kunt controleren. Een versie is een genummerde momentopname van uw botdefinitie die u kunt publiceren voor gebruik in verschillende delen van uw workflow, zoals ontwikkeling, bèta-implementatie en productie. Amazon Lex-bots ondersteunen ook aliassen. Een alias is een verwijzing naar een specifieke versie van een bot. Met een alias kunt u de versie van uw clienttoepassingen bijwerken. In praktische scenario's worden botaliassen gebruikt voor blauw/groene implementaties en het beheren van omgevingsspecifieke configuraties zoals ontwikkelings- en productieomgevingen.

Laten we ter illustratie zeggen dat u een alias verwijst naar versie 1 van uw bot. Wanneer het tijd is om de bot bij te werken, kunt u versie 2 publiceren en de alias wijzigen zodat deze naar de nieuwe versie verwijst. Omdat uw applicaties de alias gebruiken in plaats van een specifieke versie, ontvangen alle clients de nieuwe functionaliteit zonder dat er updates nodig zijn.

Houd er rekening mee dat wanneer u de CloudFormation-sjabloon wijzigt en de implementatie start, de wijzigingen worden geïmplementeerd in de conceptversie, voornamelijk bedoeld om te testen. Nadat u de testfase heeft voltooid, kunt u een nieuwe versie maken om de wijzigingen die u tot nu toe heeft doorgevoerd, af te ronden.

Vervolgens maakt u op basis van uw concept een nieuwe botversie, stelt u een nieuwe alias in en koppelt u de versie aan deze alias. Hieronder volgen de twee nieuwe bronnen die u aan uw sjabloon kunt toevoegen:

BookHotelInitialVersion:
    DependsOn: BookHotelBot
    Type: AWS::Lex::BotVersion
    Properties:
      BotId: !Ref BookHotelBot
      BotVersionLocaleSpecification:
        - LocaleId: en_US
          BotVersionLocaleDetails:
            SourceBotVersion: DRAFT
      Description: Hotel Bot initial version

  BookHotelDemoAlias:
    Type: AWS::Lex::BotAlias
    Properties:
      BotId: !Ref BookHotelBot
      BotAliasName: "BookHotelDemoAlias"
      BotVersion: !GetAtt BookHotelInitialVersion.BotVersion

Je kunt download de nieuwe versie van de sjabloon en implementeer het door uw stapel bij te werken. Je kunt op de Amazon Lex-console zien dat er een nieuwe versie is gemaakt en gekoppeld aan een nieuwe alias genaamd BookHotelDemoAlias.

demo-alias

Wanneer je een nieuwe versie van een Amazon Lex-bot maakt, wordt het versienummer doorgaans opeenvolgend verhoogd, beginnend bij 1. Om een ​​specifieke versie te onderscheiden, kun je de beschrijving ervan raadplegen.

eerste versie

Voeg een Lambda-functie toe

Om waarden te initialiseren of gebruikersinvoer voor uw bot te valideren, kunt u een Lambda-functie als codehook aan uw bot toevoegen. Op dezelfde manier kunt u ook een Lambda-functie gebruiken voor uitvoering, bijvoorbeeld door gegevens naar databases te schrijven of API's aan te roepen om de verzamelde informatie op te slaan. Voor meer informatie, zie Aangepaste logica mogelijk maken met AWS Lambda-functies.

Laten we een nieuwe bron voor de Lambda-functie toevoegen aan de CloudFormation-sjabloon. Hoewel het over het algemeen niet wordt aangeraden om code in CloudFormation-sjablonen in te sluiten, doen we dit hier uitsluitend om de demo-implementatie minder ingewikkeld te maken. Zie de volgende code:

HotelBotFunction:
    DependsOn: BotRuntimeRole # So that the Lambda function is ready before the bot deployment
    Type: AWS::Serverless::Function
    Properties:
      FunctionName: book_hotel_lambda
      Runtime: python3.11
      Timeout: 15
      Handler: index.lambda_handler
      InlineCode: |
        import os
        import json

        def close(intent_request):
            intent_request['sessionState']['intent']['state'] = 'Fulfilled'

            message = {"contentType": "PlainText",
                      "content": "Your Booking is confirmed"}

            session_attributes = {}
            sessionState = intent_request['sessionState']
            if 'sessionAttributes' in sessionState:
                session_attributes = sessionState['sessionAttributes']

            requestAttributes = None
            if 'requestAttributes' in intent_request:
                requestAttributes = intent_request['requestAttributes']

            return {
                'sessionState': {
                    'sessionAttributes': session_attributes,
                    'dialogAction': {
                        'type': 'Close'
                    },
                    'intent': intent_request['sessionState']['intent'],
                    'originatingRequestId': 'xxxxxxx-xxxx-xxxx-xxxx'
                },
                'messages':  [message],
                'sessionId': intent_request['sessionId'],
                'requestAttributes': requestAttributes
            }

        def router(event):
            intent_name = event['sessionState']['intent']['name']
            slots = event['sessionState']['intent']['slots']
            if (intent_name == 'BookHotel'):
                # invoke lambda and return result
                return close(event)

            raise Exception(
                'The intent is not supported by Lambda: ' + intent_name)

        def lambda_handler(event, context):
            response = router(event)
            return response

Om deze Lambda-functie voor de uitvoering te gebruiken, schakelt u de code hook-instellingen in uw intentie in:

Intents:
  - Name: "BookHotel"
    Description: "Intent to book a hotel room"
    FulfillmentCodeHook:
      Enabled: true
    SampleUtterances:
      - Utterance: "Book a hotel"
      - Utterance: "I want a make hotel reservations"
      - Utterance: "Book a {Nights} night stay in {Location}"

Omdat u wijzigingen in uw bot heeft aangebracht, kunt u een nieuwe versie van de bot maken door een nieuwe bron toe te voegen met de naam BookHotelVersionWithLambda in de sjabloon:

BookHotelVersionWithLambda:
    DependsOn: BookHotelInitialVersion
    Type: AWS::Lex::BotVersion
    Properties:
      BotId: !Ref BookHotelBot
      BotVersionLocaleSpecification:
        - LocaleId: en_US
          BotVersionLocaleDetails:
            SourceBotVersion: DRAFT
      Description: Hotel Bot with a lambda function

De Lambda-functie is gekoppeld aan een botalias. Amazon Lex V2 kan één Lambda-functie per botalias per taal gebruiken. Daarom moet u uw alias in de sjabloon bijwerken om de Lambda-functiebron toe te voegen. Dat kan in de BotAliasLocalSettings sectie. U moet de alias ook verwijzen naar de nieuwe versie die u hebt gemaakt. De volgende code is de gewijzigde aliasconfiguratie:

  BookHotelDemoAlias:
    Type: AWS::Lex::BotAlias
    Properties:
      BotId: !Ref BookHotelBot
      BotAliasName: "BookHotelDemoAlias"
      BotVersion: !GetAtt BookHotelVersionWithLambda.BotVersion
      # Remove BotAliasLocaleSettings if you aren't concerned with Lambda setup.
      # If you are you can modify the LambdaArn below to get started.
      BotAliasLocaleSettings:
        - LocaleId: en_US
          BotAliasLocaleSetting:
            Enabled: true
            CodeHookSpecification:
              LambdaCodeHook:
                CodeHookInterfaceVersion: "1.0"
                LambdaArn: !GetAtt HotelBotFunction.Arn

Tot nu toe heeft u alleen de Lambda-functie aan de alias gekoppeld. U moet echter toestemming verlenen om de alias de Lambda-functie te laten aanroepen. In de volgende code voeg je de Lambda invoce-toestemming voor Amazon Lex toe en geef je de alias ARN op als bron-ARN:

  LexInvokeLambdaPermission:
    Type: AWS::Lambda::Permission
    Properties:
      Action: "lambda:InvokeFunction"
      FunctionName: !GetAtt HotelBotFunction.Arn
      Principal: "lexv2.amazonaws.com"
      SourceArn: !GetAtt BookHotelDemoAlias.Arn

Je kunt download de nieuwste versie van de sjabloon. Nadat je je stack hebt bijgewerkt met deze versie, heb je een Amazon Lex-bot geïntegreerd met een Lambda-functie.

tweede versie

bijgewerkte al

Voorwaardelijke takken

Laten we nu de voorwaardelijke vertakkingsfunctie van de Amazon Lex-bot onderzoeken en een scenario overwegen waarin het boeken van meer dan vijf nachten in Seattle niet is toegestaan ​​voor de komende week. Volgens de zakelijke vereisten moet het gesprek eindigen met een passend bericht als de gebruiker probeert meer dan vijf nachten in Seattle te boeken. De voorwaardelijke vertakking daarvoor wordt weergegeven in de CloudFormation-sjabloon onder de SlotCaptureSetting:

- Name: "Nights"
                  Description: “Number of nights.”
                  SlotTypeName: "AMAZON.Number"
                  ValueElicitationSetting:
                    SlotConstraint: "Required"
                    SlotCaptureSetting:
                      CaptureConditional:
                        DefaultBranch:
                          NextStep:
                            DialogAction:
                              Type: "ElicitSlot"
                              SlotToElicit: "RoomType"
                        ConditionalBranches:
                          - Name: "Branch1"
                            Condition:
                              ExpressionString: '{Nights}>5 AND {Location} = "Seattle"'
                            Response:
                              AllowInterrupt: true
                              MessageGroupsList:
                                - Message:
                                    PlainTextMessage:
                                      Value: “Sorry, we cannot book more than five nights in {Location} right now."
                            NextStep:
                              DialogAction:
                                Type: "EndConversation"
                        IsActive: true

                    PromptSpecification:
                      MessageGroupsList:
                        - Message:
                            PlainTextMessage:
                              Value: "How many nights will you be staying?"
                      MaxRetries: 2
                      AllowInterrupt: false

Omdat u de botdefinitie hebt gewijzigd, moet u een nieuwe versie in de sjabloon maken en deze aan de alias koppelen. Dit is een tijdelijke wijziging omdat het bedrijf van plan is binnenkort grote boekingen in Seattle toe te staan. Hieronder volgen de twee nieuwe bronnen die u aan de sjabloon toevoegt:

BookHotelConditionalBranches:
    DependsOn: BookHotelVersionWithLambda
    Type: AWS::Lex::BotVersion
    Properties:
      BotId: !Ref BookHotelBot
      BotVersionLocaleSpecification:
        - LocaleId: en_US
          BotVersionLocaleDetails:
            SourceBotVersion: DRAFT
      Description: Hotel Bot Version with conditional branches

  BookHotelDemoAlias:
    Type: AWS::Lex::BotAlias
    Properties:
      BotId: !Ref BookHotelBot
      BotAliasName: "BookHotelDemoAlias"
      BotVersion: !GetAtt BookHotelConditionalBranches.BotVersion
      # Remove BotAliasLocaleSettings if you aren't concerned with Lambda setup.
      # If you are you can modify the LambdaArn below to get started.
      BotAliasLocaleSettings:
        - LocaleId: en_US
          BotAliasLocaleSetting:
            Enabled: true
            CodeHookSpecification:
              LambdaCodeHook:
                CodeHookInterfaceVersion: "1.0"
                LambdaArn: !GetAtt HotelBotFunction.Arn

Je kunt download het bijgewerkte sjabloon. Nadat u uw stapel hebt bijgewerkt met deze sjabloonversie, wordt de alias doorverwezen naar de versie waarin de voorwaardelijke vertakkingsfunctie is opgenomen. Om deze wijziging ongedaan te maken, kunt u de alias bijwerken zodat deze terugkeert naar de vorige versie.

derde versie

alias voor de derde versie

Logs

U kunt ook logboeken inschakelen voor uw Amazon Lex-bot. Om dit te doen, moet u de rol van de bot bijwerken om schrijfrechten te verlenen Amazon Cloud Watch logboeken. Hier volgt een voorbeeld van het toevoegen van een CloudWatch-beleid aan de rol:

BotRuntimeRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Effect: Allow
            Principal:
              Service:
                - lexv2.amazonaws.com
            Action:
              - "sts:AssumeRole"
      Path: "/"
      Policies:
        - PolicyName: LexRuntimeRolePolicy
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                  - "polly:SynthesizeSpeech"
                  - "comprehend:DetectSentiment"
                Resource: "*"
        - PolicyName: CloudWatchPolicy
          PolicyDocument:
            Version: 2012-10-17
            Statement:
              - Effect: Allow
                Action:
                  - "logs:CreateLogStream"
                  - "logs:PutLogEvents"
                Resource: "*"

Om consistent en voorspelbaar gedrag te garanderen, moet u zo specifiek mogelijk zijn bij het definiëren van resourcenamen en eigenschappen in CloudFormation-sjablonen. Dit komt omdat het gebruik van het jokerteken (*) in CloudFormation-sjablonen potentiële beveiligingsrisico's kan opleveren en tot onbedoelde gevolgen kan leiden. Daarom wordt aanbevolen om het gebruik van jokertekens te vermijden en in plaats daarvan waar mogelijk expliciete waarden te gebruiken.

Vervolgens maakt u een CloudWatch-logboekgroepbron, zoals weergegeven in de volgende code, om uw logboeken naar deze groep te leiden:

  #Log Group
  LexLogGroup:
    Type: AWS::Logs::LogGroup
    Properties:
      LogGroupName: /lex/hotel-bot
      RetentionInDays: 5

Ten slotte werkt u uw alias bij om de instellingen voor het gesprekslogboek in te schakelen:

BookHotelDemoAlias:
    Type: AWS::Lex::BotAlias
    Properties:
      BotId: !Ref BookHotelBot
      BotAliasName: "BookHotelDemoAlias"
      BotVersion: !GetAtt BookHotelConditionalBranches.BotVersion
      BotAliasLocaleSettings:
        - LocaleId: en_US
          BotAliasLocaleSetting:
            Enabled: true
            CodeHookSpecification:
              LambdaCodeHook:
                CodeHookInterfaceVersion: "1.0"
                LambdaArn: !GetAtt HotelBotFunction.Arn
      ConversationLogSettings:
        TextLogSettings:
          - Destination:
              CloudWatch:
                CloudWatchLogGroupArn: !GetAtt LexLogGroup.Arn
                LogPrefix: bookHotel
            Enabled: true

Wanneer u de stapel bijwerkt met deze sjabloon, schakelt u de gesprekslogboeken voor uw bot in. Er wordt in deze stap geen nieuwe versie gemaakt omdat er geen wijzigingen zijn aangebracht in uw botresource. Jij kan download de nieuwste versie van de sjabloon.

Clean Up

Om te voorkomen dat er in de toekomst kosten in rekening worden gebracht, verwijdert u de CloudFormation-stack die u heeft gemaakt.

Conclusie

In dit bericht hebben we het stapsgewijze proces besproken om een ​​CloudFormation-sjabloon te maken voor een Amazon Lex V2-bot. In eerste instantie hebben we een basisbot ingezet, daarna hebben we de mogelijkheden van aliassen en versies onderzocht en hoe we deze efficiënt kunnen gebruiken met sjablonen. Vervolgens leerden we hoe we een Lambda-functie konden integreren met een Amazon Lex V2-bot en implementeerden we voorwaardelijke vertakkingen in de gespreksstroom van de bot om aan de zakelijke vereisten te voldoen. Ten slotte hebben we logboekfuncties toegevoegd door een CloudWatch-loggroepbron te maken en de rol van de bot bij te werken met de benodigde machtigingen.

De sjabloon maakt een eenvoudige implementatie en beheer van de bot mogelijk, met de mogelijkheid om wijzigingen indien nodig ongedaan te maken. Over het algemeen is de CloudFormation-sjabloon handig voor het beheren en optimaliseren van een Amazon Lex V2-bot.

Als volgende stap kunt u verkennen voorbeeld Amazon Lex-bots en pas de technieken toe die in dit bericht worden besproken om ze om te zetten in CloudFormation-sjablonen. Deze praktische oefening zal uw begrip van het beheren van Amazon Lex V2-bots via infrastructuur als code versterken.


Over de auteurs

Thomas Rindfuss is een Sr. Solutions Architect in het Amazon Lex-team. Hij bedenkt, ontwikkelt, prototypes en evangeliseert nieuwe technische functies en oplossingen voor Language AI-services die de klantervaring verbeteren en de acceptatie vergemakkelijken.

Rijeesh Akkambeth Chathoth is een Professional Services Consultant bij AWS. Hij helpt klanten bij het realiseren van hun gewenste business
resultaten op het gebied van contactcenters door gebruik te maken van de functies van Amazon Connect, Amazon Lex en GenAI.

Tijdstempel:

Meer van AWS-machine learning