Hallitse Amazon Lex -botiasi AWS CloudFormation -mallien avulla | Amazon Web Services

Hallitse Amazon Lex -botiasi AWS CloudFormation -mallien avulla | Amazon Web Services

Amazon-Lex on täysin hallittu tekoäly (AI) -palvelu, jossa on edistyneitä luonnollisen kielen malleja, joiden avulla voit suunnitella, rakentaa, testata ja ottaa käyttöön keskustelurajapintoja sovelluksissa. Se käyttää kehittyneitä syväoppimistekniikoita ymmärtääkseen käyttäjän syötteitä, minkä ansiosta kehittäjät voivat luoda chatbotteja, virtuaalisia avustajia ja muita sovelluksia, jotka voivat olla vuorovaikutuksessa käyttäjien kanssa luonnollisella kielellä.

Hallitse Amazon Lex -bottejasi käyttämällä AWS-pilven muodostuminen voit luoda malleja, jotka määrittelevät botin ja kaikki AWS-resurssit, joista se riippuu. AWS CloudFormation tarjoaa ja konfiguroi kyseiset resurssit puolestasi, mikä poistaa inhimillisen virheen riskin, kun botteja otetaan käyttöön uusissa ympäristöissä. CloudFormationin käytön etuja ovat:

  • Johdonmukaisuus – CloudFormation-malli tarjoaa johdonmukaisemman ja automatisoidumman tavan ottaa käyttöön ja hallita Amazon Lex -rottiin liittyviä resursseja.
  • Versionhallinta – AWS CloudFormationin avulla voit hallita CloudFormation-mallejasi versionhallintajärjestelmien, kuten Gitin, avulla. Tämän avulla voit ylläpitää eri versioita robotistasi ja palata tarvittaessa takaisin aikaisempiin versioihin.
  • Reus Kyky – Voit käyttää CloudFormation-malleja uudelleen useissa ympäristöissä, kuten kehitys-, vaiheistus- ja tuotantoympäristöissä. Tämä säästää aikaa ja vaivaa saman botin määrittämisessä eri ympäristöissä.
  • Laajennettavuus – Kun Amazon Lex -bottisi monimutkaisuus kasvaa, hallitse sitä AWS-hallintakonsoli muuttuu haastavammaksi. AWS CloudFormation mahdollistaa virtaviivaisemman ja tehokkaamman lähestymistavan botin määritelmän ja resurssien hallintaan.
  • Automaatio – CloudFormation-mallin avulla voit automatisoida käyttöönottoprosessin. Voit käyttää AWS-palveluita, kuten AWS-koodiputki ja AWS CodeBuild rakentaa, testata ja ottaa käyttöön Amazon Lex -bottisi automaattisesti.

Tässä viestissä opastamme sinua vaiheissa, jotka liittyvät CloudFormation-mallin luomiseen Amazon Lex V2 -botille.

Ratkaisun yleiskatsaus

Olemme valinneet Varaa matka botti tämän harjoituksen lähtökohtana. Käytämme CloudFormation-mallia uuden botin luomiseen tyhjästä, mukaan lukien tarkoitusten, paikkojen ja muiden tarvittavien komponenttien määrittely. Lisäksi tutkimme aiheita, kuten versionhallinta, aliakset, integrointi AWS Lambda toiminnot, ehdollisten haarojen luominen ja kirjaamisen mahdollistaminen.

Edellytykset

Sinulla tulee olla seuraavat edellytykset:

  • An AWS-tili luodaksesi ja ottaaksesi käyttöön CloudFormation-mallin
  • Tarpeellinen AWS-henkilöllisyyden ja käyttöoikeuksien hallinta (MINÄ OLEN) Oikeudet ottaaksesi käyttöön AWS CloudFormationin ja mallissa käytetyt resurssit
  • Perustiedot Amazon Lexistä, Lambda-toiminnoista ja niihin liittyvistä palveluista
  • Perustiedot CloudFormation-mallien luomisesta ja käyttöönotosta

Luo IAM-rooli

Aluksi sinun on luotava IAM-rooli, jota botti käyttää. Voit saavuttaa tämän alustamalla CloudFormation-mallin ja lisäämällä IAM-roolin resurssiksi. Voit käyttää seuraavaa mallia roolin luomiseen. Jos sinä lataa esimerkkimalli ja ota se käyttöön, sinun pitäisi nähdä, että IAM-rooli on luotu. Tarjoamme esimerkkejä malleista, kun käymme tätä viestiä läpi, ja yhdistämme ne edetessämme.

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

Määritä Amazon Lex -botti

Seuraavaksi sinun on lisättävä botin määritelmä. Seuraava on YAML-malli Amazon Lex -botin määritelmälle; rakennat tarvittavat komponentit yksitellen:

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

Voit luoda botin, joka sisältää vain botin määritelmän ilman mitään tarkoitusta, käyttämällä seuraavaa mallia. Täällä määrität botin nimen, aiemmin luomasi roolin ARN:n, tietosuoja-asetukset ja paljon muuta:

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

Sinä pystyt lataa päivitetty malli. Päivitetyn mallin käyttöönotto mahdollistaa sekä roolin että botin määritelmän luomisen. Huomaa, että olet pinon päivittäminen loit edellisessä vaiheessa.

Viimeinen vaihe sisältää määrittelyn BotLocales, jotka muodostavat suurimman osan botin toiminnoista. Tämä sisältää mm. Intents ja Slot types. Seuraava on YAML-malli:

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

Tässä tapauksessa rakennat BookHotel tarkoitus, joka vaatii mukautetun paikkatyypin huonetyypeille. Sinä asetit LocaleId, sitten VoiceSettings. Sitten lisäät SlotTypes ja niitä vastaavat arvot.

Seuraava vaihe on määritellä Intents, alkaen ensimmäisestä tarkoituksesta, BookHotel, johon kuuluu ilmaisujen, aikavälien ja aikavälien prioriteettien lisääminen. Näiden solmujen yksityiskohdat on esitetty toimitetussa mallissa. Lopuksi lisäät toisen tarkoituksen, joka on FallbackIntent. Katso seuraava koodi:

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"

Sinä pystyt lataa CloudFormation-malli tähän asti tehdystä työstä. Kun olet päivittää pinosi Tämän mallin avulla otetaan käyttöön toimiva botti. Amazon Lex -konsolissa voit varmistaa, että robotista on luonnosversio ja oletusalias nimeltä TestBotAlias on luotu.

botin alias

Luo uusi bot-versio ja alias

Amazon Lex tukee julkaisua versiot boteista, intenteistä ja paikkatyypeistä, jotta voit hallita asiakassovellustesi toteutusta. Versio on numeroitu otos bottimääritelmästä, jonka voit julkaista käytettäväksi työnkulkusi eri osissa, kuten kehitystyössä, beta-asennuksessa ja tuotannossa. Amazon Lex -botit tukevat myös alias. Alias ​​on osoitin botin tiettyyn versioon. Aliaksen avulla voit päivittää asiakassovellustesi version. Käytännön skenaarioissa bottialiaksia käytetään sinisen/vihreän käyttöönotossa ja ympäristökohtaisten kokoonpanojen, kuten kehitys- ja tuotantoympäristöjen, hallinnassa.

Esimerkkinä oletetaan, että osoitat aliaksen bottisi versioon 1. Kun on aika päivittää botti, voit julkaista version 2 ja muuttaa aliaksen osoittamaan uuteen versioon. Koska sovelluksesi käyttävät aliasta tietyn version sijaan, kaikki asiakkaat saavat uudet toiminnot ilman päivityksiä.

Muista, että kun muokkaat CloudFormation-mallia ja aloitat käyttöönoton, muutokset toteutetaan luonnosversiossa, joka on ensisijaisesti tarkoitettu testaukseen. Kun olet suorittanut testausvaiheen, voit luoda uuden version viimeistelläksesi tähän mennessä tekemäsi muutokset.

Seuraavaksi luot uuden bot-version luonnoksesi perusteella, määrität uuden aliaksen ja linkität version tähän aliakseen. Seuraavassa on kaksi uutta resurssia, jotka voit lisätä malliisi:

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

Sinä pystyt lataa mallin uusi versio ja ota se käyttöön päivittämällä pinosi. Voit nähdä Amazon Lex -konsolissa, että uusi versio luodaan ja liitetään uuteen aliakseen BookHotelDemoAlias.

demo alias

Kun luot uuden version Amazon Lex -botista, se yleensä kasvattaa versionumeroa peräkkäin 1:stä alkaen. Tietyn version tunnistamiseksi voit katsoa sen kuvauksesta.

alkuperäinen versio

Lisää Lambda-toiminto

Bottisi arvojen alustamiseksi tai käyttäjän syötteen vahvistamiseksi voit lisätä Lambda-toiminnon koodikoukkuksi bottiisi. Vastaavasti voit käyttää Lambda-funktiota myös täyttämiseen, esimerkiksi kirjoittamalla tietoja tietokantoihin tai kutsumalla API:ita tallentaa kerätyt tiedot. Lisätietoja on kohdassa Mukautetun logiikan käyttöönotto AWS Lambda -toiminnoilla.

Lisätään uusi resurssi Lambda-funktiolle CloudFormation-malliin. Vaikka yleensä ei ole suositeltavaa upottaa koodia CloudFormation-malleihin, teemme sen tässä vain siksi, että esittelyn käyttöönotto olisi vähemmän monimutkaista. Katso seuraava koodi:

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

Jos haluat käyttää tätä Lambda-toimintoa täyttämiseen, ota koodikoukkuasetukset käyttöön tarkoituksessasi:

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

Koska teit muutoksia bottiisi, voit luoda uuden version botista lisäämällä uuden resurssin nimeltä BookHotelVersionWithLambda mallissa:

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

Lambda-toiminto liittyy botin aliakseen. Amazon Lex V2 voi käyttää yhtä Lambda-toimintoa bottialiasta kohden kieltä kohden. Siksi sinun on päivitettävä aliaksesi mallissa, jotta voit lisätä Lambda-funktioresurssin. Voit tehdä sen kohdassa BotAliasLocalSettings osio. Sinun on myös osoitettava alias luomaasi uuteen versioon. Seuraava koodi on muokattu aliasmääritys:

  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

Tähän asti olet linkittänyt vain Lambda-toiminnon aliakseen. Sinun on kuitenkin myönnettävä lupa, jotta alias voi kutsua Lambda-toimintoa. Seuraavassa koodissa lisäät Lambda-kutsuluvan Amazon Lexille ja määrität aliaksen ARN lähde-ARN:ksi:

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

Sinä pystyt lataa uusin versio mallista. Kun olet päivittänyt pinon tällä versiolla, sinulla on Amazon Lex -botti integroituna Lambda-toiminnolla.

toinen versio

päivitetty alis

Ehdolliset oksat

Tutustutaan nyt Amazon Lex -botin ehdolliseen haaraominaisuuteen ja pohditaan tilannetta, jossa yli viiden yön varaaminen Seattlessa ei ole sallittua seuraavalle viikolle. Liiketoiminnan vaatimusten mukaisesti keskustelun tulee päättyä asianmukaiseen viestiin, jos käyttäjä yrittää varata yli viisi yötä Seattlessa. Tämän ehdollinen haara on esitetty CloudFormation-mallissa alla 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

Koska muutit botin määritelmää, sinun on luotava uusi versio malliin ja linkitettävä se aliakseen. Tämä on väliaikainen muutos, koska liiketoiminta aikoo sallia suuret varaukset Seattlessa pian. Seuraavat ovat kaksi uutta resurssia, jotka lisäät malliin:

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

Sinä pystyt lataa päivitetty malli. Kun olet päivittänyt pinon tällä malliversiolla, alias ohjataan versioon, joka sisältää ehdollisen haarautumisominaisuuden. Jos haluat kumota tämän muutoksen, voit päivittää aliaksen palauttaaksesi edellisen version.

kolmas versio

alias kolmannelle versiolle

Lokit

Voit myös ottaa lokit käyttöön Amazon Lex -botille. Tätä varten sinun on päivitettävä botin rooli, jotta voit myöntää kirjoitusoikeudet amazonin pilvikello lokit. Seuraavassa on esimerkki CloudWatch-käytännön lisäämisestä rooliin:

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

Varmistaaksesi johdonmukaisen ja ennustettavan toiminnan, sinun tulee olla mahdollisimman tarkka määrittäessäsi resurssien nimiä ja ominaisuuksia CloudFormation-malleissa. Tämä johtuu siitä, että jokerimerkin (*) käyttö CloudFormation-malleissa voi aiheuttaa mahdollisia tietoturvariskejä ja johtaa tahattomiin seurauksiin. Siksi on suositeltavaa välttää jokerimerkkien käyttöä ja käyttää sen sijaan eksplisiittisiä arvoja aina kun mahdollista.

Seuraavaksi luot CloudWatch-lokiryhmäresurssin seuraavan koodin mukaisesti ohjataksesi lokit tähän ryhmään:

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

Lopuksi päivität aliaksesi ottaaksesi keskustelulokin asetukset käyttöön:

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

Kun päivität pinon tällä mallilla, otat keskustelulokit käyttöön bottillesi. Uutta versiota ei luoda tässä vaiheessa, koska bottiresurssiisi ei ole tehty muutoksia. Sinä pystyt lataa mallin uusin versio.

Puhdistaa

Estä maksujen syntyminen tulevaisuudessa poistamalla luomasi CloudFormation-pino.

Yhteenveto

Tässä viestissä keskustelimme vaiheittaisesta prosessista CloudFormation-mallin luomiseksi Amazon Lex V2 -botille. Aluksi otimme käyttöön perusbotin, sitten tutkimme aliasten ja versioiden mahdollisuuksia ja niiden tehokasta käyttöä mallien avulla. Seuraavaksi opimme integroimaan Lambda-toiminnon Amazon Lex V2 -botin kanssa ja otimme käyttöön ehdollisen haarautumisen botin keskustelukulkuun liiketoiminnan vaatimusten täyttämiseksi. Lopuksi lisäsimme lokiominaisuuksia luomalla CloudWatch-lokiryhmäresurssin ja päivittämällä botin roolin tarvittavilla käyttöoikeuksilla.

Malli mahdollistaa botin yksinkertaisen käyttöönoton ja hallinnan sekä mahdollisuuden peruuttaa muutokset tarpeen mukaan. Kaiken kaikkiaan CloudFormation-malli on hyödyllinen Amazon Lex V2 -botin hallinnassa ja optimoinnissa.

Seuraavana vaiheena voit tutkia esimerkki Amazon Lex -boteista ja käytä tässä viestissä käsiteltyjä tekniikoita muuntamaan ne CloudFormation-malleiksi. Tämä käytännön käytäntö vahvistaa ymmärrystäsi Amazon Lex V2 -bottien hallinnasta infrastruktuurin kautta koodina.


Tietoja Tekijät

Hallitse Amazon Lex -botiasi AWS CloudFormation -mallien avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Thomas Rindfuss on vanhempi ratkaisuarkkitehti Amazon Lex -tiimissä. Hän keksii, kehittää, prototyypit ja evankelisoi uusia teknisiä ominaisuuksia ja ratkaisuja Language AI -palveluihin, jotka parantavat asiakaskokemusta ja helpottavat käyttöönottoa.

Hallitse Amazon Lex -botiasi AWS CloudFormation -mallien avulla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Rijeesh Akkambeth Chathoth on AWS:n asiantuntijapalvelukonsultti. Hän auttaa asiakkaita saavuttamaan haluamansa liiketoiminnan
tuloksia Contact Center -tilassa hyödyntämällä Amazon Connectin, Amazon Lexin ja GenAI:n ominaisuuksia.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen