Gestionați-vă robotul Amazon Lex prin șabloanele AWS CloudFormation | Amazon Web Services

Gestionați-vă robotul Amazon Lex prin șabloanele AWS CloudFormation | Amazon Web Services

Amazon Lex este un serviciu de inteligență artificială (AI) complet gestionat cu modele avansate în limbaj natural pentru a proiecta, construi, testa și implementa interfețe conversaționale în aplicații. Folosește tehnologii avansate de învățare profundă pentru a înțelege contribuția utilizatorilor, permițând dezvoltatorilor să creeze chatbot, asistenți virtuali și alte aplicații care pot interacționa cu utilizatorii în limbaj natural.

Gestionați-vă roboții Amazon Lex folosind Formarea AWS Cloud vă permite să creați șabloane care definesc botul și toate resursele AWS de care depinde. AWS CloudFormation furnizează și configurează acele resurse în numele dvs., eliminând riscul de eroare umană atunci când implementați roboți în medii noi. Beneficiile utilizării CloudFormation includ:

  • consecvență – Un șablon CloudFormation oferă o modalitate mai consistentă și mai automată de a implementa și gestiona resursele asociate cu un bot Amazon Lex.
  • Controlul versiunii – Cu AWS CloudFormation, puteți utiliza sisteme de control al versiunilor precum Git pentru a vă gestiona șabloanele CloudFormation. Acest lucru vă permite să mențineți diferite versiuni ale botului dvs. și să reveniți la versiunile anterioare dacă este necesar.
  • Abilitatea de Reus – Puteți reutiliza șabloanele CloudFormation în mai multe medii, cum ar fi dezvoltarea, punerea în scenă și producția. Acest lucru economisește timp și efort în definirea aceluiași bot în diferite medii.
  • extensibilitate – Pe măsură ce botul tău Amazon Lex crește în complexitate, gestionându-l prin intermediul Consola de administrare AWS devine mai provocatoare. AWS CloudFormation permite o abordare mai eficientă și mai eficientă a gestionării definiției și resurselor botului.
  • Automatizare – Utilizarea unui șablon CloudFormation vă permite să automatizați procesul de implementare. Puteți utiliza servicii AWS precum AWS CodePipeline și AWS CodeBuild pentru a construi, testa și implementa automat botul tău Amazon Lex.

În această postare, vă ghidăm prin pașii implicați în crearea unui șablon CloudFormation pentru un bot Amazon Lex V2.

Prezentare generală a soluțiilor

Noi am ales Rezervați excursie bot ca punct de plecare pentru acest exercițiu. Folosim un șablon CloudFormation pentru a crea un nou bot de la zero, inclusiv definirea intențiilor, sloturilor și a altor componente necesare. În plus, explorăm subiecte precum controlul versiunilor, aliasuri, integrare AWS Lambdas funcții, crearea de ramuri condiționate și activarea înregistrării.

Cerințe preliminare

Ar trebui să aveți următoarele condiții preliminare:

  • An Cont AWS pentru a crea și implementa un șablon CloudFormation
  • Necesarul Gestionarea identității și accesului AWS (EU SUNT) permisiuni pentru a implementa AWS CloudFormation și resursele utilizate în șablon
  • Cunoștințe de bază despre Amazon Lex, funcțiile Lambda și serviciile asociate
  • Cunoștințe de bază despre crearea și implementarea șabloanelor CloudFormation

Creați un rol IAM

Pentru a începe, trebuie să creați un rol IAM pe care botul îl va folosi. Puteți realiza acest lucru prin inițializarea unui șablon CloudFormation și adăugarea rolului IAM ca resursă. Puteți utiliza următorul șablon pentru a crea rolul. daca tu descărcați șablonul exemplu și implementați-l, ar trebui să vedeți că a fost creat un rol IAM. Oferim exemple de șabloane pe măsură ce parcurgem această postare și le îmbinăm pe măsură ce mergem mai departe.

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: "*"

Configurați botul Amazon Lex

Apoi, trebuie să adăugați definiția botului. Următorul este șablonul YAML pentru definiția robotului Amazon Lex; construiți componentele necesare una câte una:

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

Pentru a crea un bot care include doar definiția botului fără nicio intenție, puteți utiliza următorul șablon. Aici, specificați numele botului, ARN-ul rolului pe care l-ați creat anterior, setările de confidențialitate a datelor și multe altele:

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

Poti descărcați șablonul actualizat. Implementarea șablonului actualizat vă permite să creați atât rolul, cât și definiția botului. Rețineți că sunteți actualizarea stivei ai creat la pasul anterior.

Pasul final presupune definirea BotLocales, care formează majoritatea funcționalității botului. Aceasta include, de exemplu, Intents și Slot types. Următorul este șablonul YAML:

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

În acest caz, construiți BookHotel intentie, care necesită un tip de slot personalizat pentru tipurile de camere. Tu ai setat LocaleId, apoi VoiceSettings. Apoi adăugați SlotTypes și valorile corespunzătoare acestora.

Următorul pas este definirea Intents, începând cu prima intenție, BookHotel, care implică adăugarea de enunțuri, intervale și priorități de slot. Detaliile acestor noduri sunt demonstrate în șablonul furnizat. În cele din urmă, adăugați a doua intenție, care este FallbackIntent. Consultați următorul cod:

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"

Poti descărcați șablonul CloudFormation pentru munca depusa pana acum. După dumneavoastră actualizați-vă stiva cu acest șablon, va fi implementat un bot funcțional. Pe consola Amazon Lex, puteți confirma că există o versiune nefinalizată a botului și un alias implicit numit TestBotAlias a fost creat.

alias bot

Creați o nouă versiune de bot și un alias

Amazon Lex acceptă publicarea Versiunile de boți, intenții și tipuri de sloturi, astfel încât să puteți controla implementarea aplicațiilor client. O versiune este un instantaneu numerotat al definiției botului dvs. pe care îl puteți publica pentru utilizare în diferite părți ale fluxului de lucru, cum ar fi dezvoltarea, implementarea beta și producția. Boții Amazon Lex acceptă, de asemenea pseudonime. Un alias este un pointer către o anumită versiune a unui bot. Cu un alias, puteți actualiza versiunea aplicațiilor client. În scenariile practice, aliasurile de bot sunt folosite pentru implementări albastru/verde și pentru gestionarea configurațiilor specifice mediului, cum ar fi mediile de dezvoltare și producție.

Pentru a exemplifica, să presupunem că indicați un alias către versiunea 1 a botului dvs. Când este timpul să actualizați botul, puteți publica versiunea 2 și puteți schimba alias-ul pentru a indica noua versiune. Deoarece aplicațiile dvs. folosesc aliasul în loc de o anumită versiune, toți clienții primesc noua funcționalitate fără a necesita actualizări.

Rețineți că atunci când modificați șablonul CloudFormation și inițiați implementarea, modificările sunt implementate în versiunea nefinalizată, destinate în primul rând testării. După ce finalizați faza de testare, puteți stabili o nouă versiune pentru a finaliza modificările pe care le-ați încorporat până acum.

Apoi, creați o nouă versiune de bot bazată pe schița dvs., configurați un nou alias și legați versiunea la acest alias. Următoarele sunt cele două resurse noi de adăugat șablonului dvs.:

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

Poti descărcați noua versiune a șablonului și implementați-l prin actualizarea stivei. Puteți vedea pe consola Amazon Lex că o nouă versiune este creată și asociată cu un nou alias numit BookHotelDemoAlias.

alias demo

Atunci când creați o nouă versiune a unui robot Amazon Lex, acesta crește în mod secvenţial numărul versiunii, începând de la 1. Pentru a discerne o anumită versiune, puteți consulta descrierea acesteia.

versiune inițială

Adăugați o funcție Lambda

Pentru a inițializa valori sau a valida intrarea utilizatorului pentru bot, puteți adăuga o funcție Lambda ca un cârlig de cod la bot. În mod similar, puteți utiliza și o funcție Lambda pentru îndeplinire, de exemplu, scrierea datelor în baze de date sau apelarea API-urilor pentru a salva informațiile colectate. Pentru mai multe informații, consultați Activarea logicii personalizate cu funcțiile AWS Lambda.

Să adăugăm o nouă resursă pentru funcția Lambda la șablonul CloudFormation. Deși, în general, nu este recomandat să încorporați codul în șabloanele CloudFormation, facem acest lucru aici doar de dragul de a face implementarea demonstrației mai puțin complicată. Vezi următorul cod:

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

Pentru a utiliza această funcție Lambda pentru îndeplinire, activați setările cârligului de cod în intenția dvs.:

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}"

Deoarece ați făcut modificări botului dvs., puteți crea o nouă versiune a botului adăugând o nouă resursă numită BookHotelVersionWithLambda în șablon:

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

Funcția Lambda este asociată cu un alias de bot. Amazon Lex V2 poate folosi o funcție Lambda per alias de bot pentru fiecare limbă. Prin urmare, trebuie să vă actualizați aliasul în șablon pentru a adăuga resursa funcției Lambda. Puteți face acest lucru în BotAliasLocalSettings secțiune. De asemenea, trebuie să indicați aliasul către noua versiune pe care ați creat-o. Următorul cod este configurația de alias modificată:

  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

Până acum, ați legat doar funcția Lambda cu alias. Cu toate acestea, trebuie să acordați permisiunea pentru a permite alias-ului să invoce funcția Lambda. În următorul cod, adăugați permisiunea de invocare Lambda pentru Amazon Lex și specificați aliasul ARN ca ARN sursă:

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

Poti descărcați cea mai recentă versiune a șablonului. După actualizarea stivei cu această versiune, veți avea un robot Amazon Lex integrat cu o funcție Lambda.

a doua versiune

alis actualizat

Ramuri condiționate

Acum să explorăm caracteristica de ramificare condiționată a robotului Amazon Lex și să luăm în considerare un scenariu în care rezervarea a mai mult de cinci nopți în Seattle nu este permisă pentru săptămâna următoare. Conform cerințelor comerciale, conversația ar trebui să se încheie cu un mesaj adecvat dacă utilizatorul încearcă să rezerve mai mult de cinci nopți în Seattle. Ramura condiționată pentru aceasta este reprezentată în șablonul CloudFormation sub 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

Deoarece ați modificat definiția botului, trebuie să creați o nouă versiune în șablon și să o legați cu aliasul. Aceasta este o modificare temporară, deoarece afacerile plănuiesc să permită rezervări mari în Seattle în curând. Următoarele sunt cele două resurse noi pe care le adăugați la șablon:

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

Poti descărcați șablonul actualizat. După ce vă actualizați stiva cu această versiune de șablon, aliasul va fi direcționat către versiunea care încorporează caracteristica de ramificare condiționată. Pentru a anula această modificare, puteți actualiza alias-ul pentru a reveni la versiunea anterioară.

a treia versiune

alias pentru a treia versiune

Activitate

De asemenea, puteți activa jurnalele pentru botul dvs. Amazon Lex. Pentru a face acest lucru, trebuie să actualizați rolul botului pentru a acorda permisiuni de scriere Amazon CloudWatch busteni. Următorul este un exemplu de adăugare a unei politici CloudWatch la 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: "*"

Pentru a asigura un comportament consecvent și previzibil, ar trebui să fiți cât mai specific posibil atunci când definiți numele și proprietățile resurselor în șabloanele CloudFormation. Acest lucru se datorează faptului că utilizarea caracterului wildcard (*) în șabloanele CloudFormation poate prezenta riscuri potențiale de securitate și poate duce la consecințe nedorite. Prin urmare, este recomandat să evitați utilizarea metacaracterilor și, în schimb, să folosiți valori explicite ori de câte ori este posibil.

Apoi, creați o resursă de grup de jurnal CloudWatch, așa cum se arată în următorul cod, pentru a vă direcționa jurnalele către acest grup:

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

În cele din urmă, vă actualizați aliasul pentru a activa setările jurnalului de conversații:

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

Când actualizați stiva cu acest șablon, activați jurnalele de conversație pentru bot. O versiune nouă nu este creată în acest pas, deoarece nu există modificări la resursa botului dvs. Puteți descărcați cea mai recentă versiune a șablonului.

Clean Up

Pentru a preveni atragerea de taxe în viitor, ștergeți stiva CloudFormation pe care ați creat-o.

Concluzie

În această postare, am discutat despre procesul pas cu pas pentru a crea un șablon CloudFormation pentru un bot Amazon Lex V2. Inițial, am implementat un bot de bază, apoi am explorat potențialul aliasurilor și versiunilor și cum să le folosim eficient cu șabloane. Apoi, am învățat cum să integrăm o funcție Lambda cu un bot Amazon Lex V2 și am implementat ramificarea condiționată în fluxul de conversație al botului pentru a se potrivi cerințelor de afaceri. În cele din urmă, am adăugat funcții de înregistrare prin crearea unei resurse de grup de jurnal CloudWatch și actualizarea rolului botului cu permisiunile necesare.

Șablonul permite implementarea și gestionarea simplă a botului, cu posibilitatea de a anula modificările după cum este necesar. În general, șablonul CloudFormation este util pentru gestionarea și optimizarea unui bot Amazon Lex V2.

Ca pas următor, puteți explora eșantion de roboți Amazon Lex și aplicați tehnicile discutate în această postare pentru a le converti în șabloane CloudFormation. Această practică practică vă va consolida înțelegerea despre gestionarea roboților Amazon Lex V2 prin infrastructură ca cod.


Despre Autori

Manage your Amazon Lex bot via AWS CloudFormation templates | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Thomas Rindfuss este un arhitect senior de soluții în echipa Amazon Lex. El inventează, dezvoltă, prototipează și evanghelizează noi caracteristici tehnice și soluții pentru serviciile Language AI care îmbunătățesc experiența clienților și ușurează adoptarea.

Manage your Amazon Lex bot via AWS CloudFormation templates | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Rijeesh Akkambeth Chathoth este consultant de servicii profesionale la AWS. El ajută clienții să-și realizeze afacerea dorită
rezultate în spațiul Contact Center prin valorificarea funcțiilor Amazon Connect, Amazon Lex și GenAI.

Timestamp-ul:

Mai mult de la Învățare automată AWS