Kezelje Amazon Lex robotját az AWS CloudFormation sablonokon keresztül | Amazon webszolgáltatások

Kezelje Amazon Lex robotját az AWS CloudFormation sablonokon keresztül | Amazon webszolgáltatások

Amazon Lex egy teljesen felügyelt mesterséges intelligencia (AI) szolgáltatás fejlett természetes nyelvi modellekkel az alkalmazásokban való társalgási felületek tervezésére, felépítésére, tesztelésére és telepítésére. Fejlett mély tanulási technológiákat alkalmaz a felhasználói bevitel megértéséhez, lehetővé téve a fejlesztők számára, hogy chatbotokat, virtuális asszisztenseket és más olyan alkalmazásokat hozzanak létre, amelyek természetes nyelven kommunikálhatnak a felhasználókkal.

Az Amazon Lex botjainak kezelése a használatával AWS felhőképződés lehetővé teszi sablonok létrehozását, amelyek meghatározzák a botot és az összes AWS-erőforrást, amelytől függ. Az AWS CloudFormation biztosítja és konfigurálja ezeket az erőforrásokat az Ön nevében, így elkerülhető az emberi hiba kockázata a robotok új környezetekben történő telepítése során. A CloudFormation használatának előnyei a következők:

  • Következetesség – A CloudFormation sablon konzisztensebb és automatizáltabb módot biztosít az Amazon Lex botokhoz kapcsolódó erőforrások telepítésére és kezelésére.
  • Verziókezelés – Az AWS CloudFormation segítségével olyan verziókezelő rendszereket használhat, mint a Git a CloudFormation sablonok kezelésére. Ez lehetővé teszi a bot különböző verzióinak karbantartását, és szükség esetén visszaállítását a korábbi verziókra.
  • Reus képesség – A CloudFormation-sablonokat többféle környezetben is felhasználhatja, például fejlesztési, előkészítési és termelési környezetben. Ez időt és erőfeszítést takarít meg ugyanazon bot különböző környezetekben történő meghatározása során.
  • Bővíthetőség – Ahogy az Amazon Lex botja egyre bonyolultabbá válik, kezelheti azt a AWS felügyeleti konzol egyre nagyobb kihívást jelent. Az AWS CloudFormation egyszerűbb és hatékonyabb megközelítést tesz lehetővé a bot meghatározásának és erőforrásainak kezelésében.
  • Automatizálás – A CloudFormation sablon használatával automatizálhatja a telepítési folyamatot. Használhat AWS szolgáltatásokat, mint pl AWS CodePipeline és a AWS CodeBuild az Amazon Lex bot automatikus felépítéséhez, teszteléséhez és üzembe helyezéséhez.

Ebben a bejegyzésben végigvezetjük a CloudFormation sablon létrehozásának lépésein egy Amazon Lex V2 robothoz.

Megoldás áttekintése

Mi választottuk a Könyvkirándulás bot legyen a gyakorlat kiindulópontja. CloudFormation sablont használunk egy új bot létrehozásához a semmiből, beleértve a szándékok, helyek és egyéb szükséges összetevők meghatározását. Emellett olyan témákat is megvizsgálunk, mint a verziókezelés, az álnevek, az integráció AWS Lambda függvények, feltételes elágazások létrehozása és naplózás engedélyezése.

Előfeltételek

A következő előfeltételekkel kell rendelkeznie:

  • An AWS-fiók CloudFormation sablon létrehozásához és üzembe helyezéséhez
  • A szükséges AWS Identity and Access Management (AMI) engedélyek az AWS CloudFormation és a sablonban használt erőforrások üzembe helyezéséhez
  • Alapvető ismeretek az Amazon Lexről, a Lambda funkcióiról és a kapcsolódó szolgáltatásokról
  • Alapvető ismeretek a CloudFormation sablonok létrehozásáról és telepítéséről

Hozzon létre egy IAM-szerepet

A kezdéshez létre kell hoznia egy IAM-szerepet, amelyet a bot használni fog. Ezt úgy érheti el, hogy inicializál egy CloudFormation-sablont, és adja hozzá az IAM-szerepet erőforrásként. A szerepkör létrehozásához használhatja a következő sablont. Ha te töltse le a példasablont és telepítse, látnia kell, hogy létrejött egy IAM-szerep. Példákat adunk a sablonokra a bejegyzés során, majd egyesítjük őket, ahogy haladunk.

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

Konfigurálja az Amazon Lex robotot

Ezután hozzá kell adnia a bot definícióját. A következő az Amazon Lex bot definíciójának YAML sablonja; egyenként összeállítod a szükséges alkatrészeket:

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

Ha olyan botot szeretne létrehozni, amely csak a bot definícióját tartalmazza szándék nélkül, használja a következő sablont. Itt megadhatja a robot nevét, a korábban létrehozott szerepkör ARN-jét, az adatvédelmi beállításokat és egyebeket:

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

Tudod töltse le a frissített sablont. A frissített sablon telepítése lehetővé teszi a szerepkör és a robotdefiníció létrehozását. Jegyezd meg, hogy te a verem frissítése az előző lépésben hozta létre.

Az utolsó lépésben meg kell határozni a BotLocales, amelyek a bot funkcióinak többségét alkotják. Ide tartozik pl. Intents és a Slot types. A következő a YAML sablon:

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

Ebben az esetben meg kell építeni a BookHotel szándék, amihez a szobatípusokhoz egyedi slottípusra van szükség. Beállítod a LocaleId, aztán a VoiceSettings. Ezután hozzáadja a SlotTypes és a hozzájuk tartozó értékeket.

A következő lépés a Intents, kezdve az első szándékkal, BookHotel, amely magában foglalja a kijelentések, helyek és időközök prioritásainak hozzáadását. Ezeknek a csomópontoknak a részletei a mellékelt sablonban láthatók. Végül hozzáadja a második szándékot, amely a FallbackIntent. Lásd a következő kódot:

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"

Tudod töltse le a CloudFormation sablont az eddig végzett munkáért. Ön után frissítse a veremét ezzel a sablonnal egy működőképes bot kerül telepítésre. Az Amazon Lex konzolon ellenőrizheti, hogy van-e a bot vázlatos verziója és egy alapértelmezett álnév. TestBotAlias létrejött.

bot alias

Hozzon létre egy új botverziót és álnevet

Az Amazon Lex támogatja a közzétételt verzió botok, intent és slot típusok, így Ön irányíthatja az ügyfélalkalmazások megvalósítását. A verzió a robot definíciójának számozott pillanatképe, amelyet közzétehet a munkafolyamat különböző részeihez, például fejlesztéshez, béta-telepítéshez és termeléshez. Az Amazon Lex robotok is támogatják álnevek. Az alias egy bot adott verziójára mutató mutató. Az álnévvel frissítheti az ügyfélalkalmazások verzióját. A gyakorlati forgatókönyvekben a bot-álneveket kék/zöld telepítésekhez és környezetspecifikus konfigurációk, például fejlesztési és éles környezetek kezeléséhez használják.

Szemléltetésképpen tegyük fel, hogy egy álnevet mutat a robot 1. verziójára. Amikor eljött az ideje a bot frissítésének, közzéteheti a 2-es verziót, és módosíthatja az álnevet, hogy az új verzióra mutasson. Mivel alkalmazásai az álnevet használják egy adott verzió helyett, minden ügyfél frissítések nélkül kapja meg az új funkciókat.

Ne feledje, hogy amikor módosítja a CloudFormation sablont és elindítja a telepítést, a változtatások a vázlatos verzióban valósulnak meg, elsősorban tesztelésre. A tesztelési szakasz befejezése után létrehozhat egy új verziót az eddig beépített változtatások véglegesítéséhez.

Ezután hozzon létre egy új robotverziót a piszkozata alapján, állítson be egy új álnevet, és kapcsolja össze a verziót ehhez az álnévhez. A következő két új erőforrást kell hozzáadni a sablonhoz:

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

Tudod töltse le a sablon új verzióját és telepítse a verem frissítésével. Az Amazon Lex konzolon láthatja, hogy egy új verzió jön létre, és egy új álnévvel társítva van BookHotelDemoAlias.

demo alias

Amikor létrehozza egy Amazon Lex bot új verzióját, az általában 1-től kezdődően sorban növeli a verziószámot. Egy adott verzió felismeréséhez tekintse meg annak leírását.

kezdeti változat

Adjon hozzá egy lambda függvényt

Az értékek inicializálásához vagy a felhasználói bevitel érvényesítéséhez a robothoz hozzáadhat egy Lambda funkciót kódhookként a botjához. Ehhez hasonlóan a Lambda függvényt is használhatja a teljesítéshez, például adatbázisokba írhat adatokat vagy API-k hívását mentheti el az összegyűjtött információkat. További információkért lásd: Egyéni logika engedélyezése AWS Lambda funkcióival.

Adjunk hozzá egy új erőforrást a Lambda függvényhez a CloudFormation sablonhoz. Bár általában nem tanácsos kódot ágyazni a CloudFormation-sablonokba, ezt itt kizárólag azért tesszük, hogy kevésbé bonyolítsuk le a bemutatót. Lásd a következő kódot:

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

Ha ezt a Lambda funkciót szeretné használni a teljesítéshez, engedélyezze a kódfogó beállításait a szándékában:

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

Mivel változtatásokat hajtott végre a botján, létrehozhatja a bot új verzióját egy új, nevű erőforrás hozzáadásával. BookHotelVersionWithLambda a sablonban:

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

A Lambda függvény egy bot álnévvel van társítva. Az Amazon Lex V2 nyelvenként egy-egy Lambda-funkciót használhat bot-aliaszonként. Ezért frissítenie kell az álnevet a sablonban a Lambda függvény erőforrás hozzáadásához. Ezt megteheti a BotAliasLocalSettings szakasz. Ezenkívül az álnevet a létrehozott új verzióra kell mutatnia. A következő kód a módosított álnév konfiguráció:

  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

Eddig csak a Lambda funkciót kapcsolta össze az álnévvel. Azonban engedélyt kell adnia ahhoz, hogy az álnév meghívja a Lambda függvényt. A következő kódban adja hozzá az Amazon Lex Lambda meghívási engedélyét, és adja meg az ARN álnevet forrás ARN-ként:

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

Tudod töltse le a legújabb verziót a sablonból. Miután frissítette a veremét ezzel a verzióval, egy Amazon Lex botja lesz integrálva Lambda funkcióval.

második változat

frissítette az alis

Feltételes ágak

Most vizsgáljuk meg az Amazon Lex bot feltételes ág funkcióját, és vegyük fontolóra azt a forgatókönyvet, amikor a következő hétre nem szabad ötnél több éjszakát Seattle-ben foglalni. Az üzleti követelményeknek megfelelően a beszélgetést megfelelő üzenettel kell befejezni, ha a felhasználó ötnél több éjszakát próbál meg foglalni Seattle-ben. Az ehhez tartozó feltételes ág a CloudFormation sablonban a következő alatt található 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

Mivel megváltoztatta a bot definícióját, létre kell hoznia egy új verziót a sablonban, és össze kell kapcsolnia az álnévvel. Ez egy ideiglenes módosítás, mert az üzleti tervek szerint hamarosan nagy összegű foglalásokat tesz lehetővé Seattle-ben. A sablonhoz hozzáadott két új erőforrás a következő:

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

Tudod töltse le a frissített sablont. Miután frissítette a veremét ezzel a sablonverzióval, az álnév a feltételes elágazás funkciót tartalmazó verzióra lesz irányítva. A módosítás visszavonásához frissítse az aliast, hogy visszatérjen az előző verzióhoz.

harmadik verzió

alias a harmadik verzióhoz

Naplók

Engedélyezheti a naplókat is az Amazon Lex robotjához. Ehhez frissítenie kell a bot szerepkörét, hogy megadja az írási engedélyeket amazonfelhőóra rönkök. Az alábbi példa egy CloudWatch-házirend szerephez való hozzáadására szolgál:

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

A következetes és kiszámítható viselkedés biztosítása érdekében a lehető legpontosabbnak kell lennie az erőforrásnevek és -tulajdonságok meghatározásakor a CloudFormation-sablonokban. Ennek az az oka, hogy a helyettesítő karakter (*) használata a CloudFormation-sablonokban potenciális biztonsági kockázatokat jelenthet, és nem kívánt következményekhez vezethet. Ezért ajánlatos kerülni a helyettesítő karakterek használatát, és ehelyett explicit értékeket használni, ahol csak lehetséges.

Ezután hozzon létre egy CloudWatch naplócsoport-erőforrást, amint az a következő kódban látható, hogy a naplókat ehhez a csoporthoz irányítsa:

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

Végül frissíti az aliast, hogy engedélyezze a beszélgetési naplóbeállításokat:

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

Amikor ezzel a sablonnal frissíti a veremet, engedélyezi a beszélgetési naplókat a robot számára. Ebben a lépésben nem jön létre új verzió, mert nincs változás a bot-erőforráson. tudsz töltse le a sablon legújabb verzióját.

Clean Up

A jövőbeni költségek elkerülése érdekében törölje a létrehozott CloudFormation-vermet.

Következtetés

Ebben a bejegyzésben megvitattuk a CloudFormation sablon létrehozásának lépésről lépésre történő folyamatát egy Amazon Lex V2 robothoz. Kezdetben egy alap botot telepítettünk, majd megvizsgáltuk az álnevekben és verziókban rejlő lehetőségeket, valamint azt, hogy miként használhatók fel hatékonyan sablonokkal. Ezután megtanultuk, hogyan lehet integrálni egy Lambda funkciót egy Amazon Lex V2 bottal, és feltételes elágazást valósítottunk meg a bot beszélgetési folyamatában, hogy megfeleljen az üzleti követelményeknek. Végül naplózási funkciókat adtunk hozzá: létrehoztunk egy CloudWatch naplócsoport-erőforrást, és frissítettük a bot szerepét a szükséges engedélyekkel.

A sablon lehetővé teszi a bot egyszerű üzembe helyezését és kezelését, valamint szükség esetén a változtatások visszaállítását. Összességében a CloudFormation sablon hasznos az Amazon Lex V2 bot kezeléséhez és optimalizálásához.

Következő lépésként felfedezheti minta Amazon Lex botok és alkalmazza az ebben a bejegyzésben tárgyalt technikákat a CloudFormation-sablonokká konvertálásához. Ez a gyakorlati gyakorlat megerősíti az Amazon Lex V2 robotok infrastruktúrán keresztüli kódként történő kezelésével kapcsolatos ismereteit.


A szerzőkről

Manage your Amazon Lex bot via AWS CloudFormation templates | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Thomas Rindfuss Sr. Solutions Architect az Amazon Lex csapatánál. Új technikai jellemzőket és megoldásokat talál ki, fejleszt, prototípusokat készít és evangelizál a Language AI szolgáltatásokhoz, amelyek javítják az ügyfelek élményét és megkönnyítik az alkalmazást.

Manage your Amazon Lex bot via AWS CloudFormation templates | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.Rijeesh Akkambeth Chathoth az AWS professzionális szolgáltatási tanácsadója. Segíti az ügyfeleket a kívánt üzlet megvalósításában
eredményeket a Contact Center térben az Amazon Connect, az Amazon Lex és a GenAI funkciók kihasználásával.

Időbélyeg:

Még több AWS gépi tanulás