Üretken Veri Zekası

Amazon Lex botunuzu AWS CloudFormation şablonları aracılığıyla yönetin | Amazon Web Hizmetleri

Tarih:

Amazon Lex'i uygulamalardaki konuşma arayüzlerini tasarlamak, oluşturmak, test etmek ve dağıtmak için gelişmiş doğal dil modellerine sahip, tam olarak yönetilen bir yapay zeka (AI) hizmetidir. Kullanıcı girişini anlamak için gelişmiş derin öğrenme teknolojilerini kullanır ve geliştiricilerin kullanıcılarla doğal dilde etkileşime girebilecek sohbet robotları, sanal asistanlar ve diğer uygulamaları oluşturmasına olanak tanır.

Amazon Lex botlarınızı kullanarak yönetme AWS CloudFormation Botu ve onun bağlı olduğu tüm AWS kaynaklarını tanımlayan şablonlar oluşturmanıza olanak tanır. AWS CloudFormation bu kaynakları sizin adınıza sağlayıp yapılandırarak botları yeni ortamlara dağıtırken insan hatası riskini ortadan kaldırır. CloudFormation'ı kullanmanın faydaları şunlardır:

  • Tutarlılık – CloudFormation şablonu, Amazon Lex botuyla ilişkili kaynakları dağıtmak ve yönetmek için daha tutarlı ve otomatik bir yol sağlar.
  • Sürüm kontrolü – AWS CloudFormation ile CloudFormation şablonlarınızı yönetmek için Git gibi sürüm kontrol sistemlerini kullanabilirsiniz. Bu, botunuzun farklı sürümlerini korumanıza ve gerekirse önceki sürümlere geri dönmenize olanak tanır.
  • Reus yeteneği – CloudFormation şablonlarını geliştirme, hazırlama ve üretim gibi birden çok ortamda yeniden kullanabilirsiniz. Bu, aynı botun farklı ortamlarda tanımlanmasında zaman ve emekten tasarruf sağlar.
  • Genişletilebilirlik – Amazon Lex botunuzun karmaşıklığı arttıkça onu yönetmek AWS Yönetim Konsolu daha zorlu hale geliyor. AWS CloudFormation, bot tanımını ve kaynaklarını yönetmeye yönelik daha akıcı ve etkili bir yaklaşıma olanak tanır.
  • Otomasyon – CloudFormation şablonunu kullanmak dağıtım sürecini otomatikleştirmenize olanak tanır. Aşağıdaki gibi AWS hizmetlerini kullanabilirsiniz: AWS Kod Ardışık Düzeni ve AWS Kod Oluşturma Amazon Lex botunuzu otomatik olarak oluşturmak, test etmek ve dağıtmak için.

Bu yazıda size Amazon Lex V2 botu için CloudFormation şablonu oluşturma adımlarında rehberlik edeceğiz.

Çözüme genel bakış

biz seçtik Kitap Gezisi bot'u bu alıştırma için başlangıç ​​noktamız olarak seçiyoruz. Amaçları, yuvaları ve diğer gerekli bileşenleri tanımlamak da dahil olmak üzere sıfırdan yeni bir bot oluşturmak için bir CloudFormation şablonu kullanıyoruz. Ayrıca sürüm kontrolü, takma adlar, entegrasyon gibi konuları da araştırıyoruz. AWS Lambda işlevler, koşullu dallar oluşturma ve günlüğe kaydetmeyi etkinleştirme.

Önkoşullar

Aşağıdaki ön koşullara sahip olmalısınız:

  • An AWS hesabı CloudFormation şablonu oluşturmak ve dağıtmak için
  • Gerekli AWS Kimlik ve Erişim Yönetimi (BEN) izinleri AWS CloudFormation'u ve şablonda kullanılan kaynakları dağıtmak için
  • Amazon Lex, Lambda işlevleri ve ilgili hizmetler hakkında temel bilgi
  • CloudFormation şablonlarını oluşturma ve dağıtmaya ilişkin temel bilgiler

Bir IAM rolü oluşturma

Başlamak için botun kullanacağı bir IAM rolü oluşturmanız gerekir. Bunu bir CloudFormation şablonunu başlatarak ve IAM rolünü kaynak olarak ekleyerek başarabilirsiniz. Rolü oluşturmak için aşağıdaki şablonu kullanabilirsiniz. Eğer sen örnek şablonu indir ve dağıttığınızda, bir IAM rolünün oluşturulduğunu görmelisiniz. Bu gönderiyi incelerken şablon örnekleri veriyoruz ve ilerledikçe bunları birleştiriyoruz.

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

Amazon Lex botunu yapılandırma

Daha sonra bot tanımını eklemeniz gerekir. Amazon Lex bot tanımına ait YAML şablonu aşağıdadır; gerekli bileşenleri tek tek oluşturursunuz:

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

Herhangi bir amaç gütmeden sadece bot tanımını içeren bir bot oluşturmak için aşağıdaki şablonu kullanabilirsiniz. Burada botun adını, daha önce oluşturduğunuz rolün ARN'sini, veri gizliliği ayarlarını ve daha fazlasını belirtirsiniz:

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

Yapabilirsin güncellenen şablonu indir. Güncellenen şablonu dağıtmak, hem rolü hem de bot tanımını oluşturmanıza olanak tanır. Şunu unutmayın: yığını güncelleme önceki adımda oluşturduğunuz

Son adım, tanımlamayı gerektirir BotLocalesBotun işlevselliğinin çoğunluğunu oluşturanlar. Bu, örneğin şunları içerir: Intents ve Slot types. YAML şablonu aşağıdadır:

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

Bu durumda, BookHotel amaç, oda türleri için özel bir yuva türü gerektirir. Sen ayarla LocaleId, sonra VoiceSettings. Daha sonra şunu eklersiniz: SlotTypes ve bunlara karşılık gelen değerler.

Bir sonraki adım, aşağıdakileri tanımlamaktır: Intents, ilk niyetten başlayarak, BookHotel, ifadelerin, aralıkların ve alan önceliklerinin eklenmesini içerir. Bu düğümlerin ayrıntıları sağlanan şablonda gösterilmiştir. Son olarak ikinci amacı eklersiniz; FallbackIntent. Aşağıdaki koda bakın:

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"

Yapabilirsin CloudFormation şablonunu indirin Şu ana kadar yapılan işler için. Önden buyurun yığınınızı güncelleyin Bu şablonla işlevsel bir bot konuşlandırılacaktır. Amazon Lex konsolunda botun taslak sürümünün ve varsayılan takma adın bulunduğunu doğrulayabilirsiniz. TestBotAlias yaratıldı.

bot takma adı

Yeni bir bot sürümü ve takma ad oluşturun

Amazon Lex yayınlamayı destekliyor sürümler istemci uygulamalarınızın uygulanmasını kontrol edebilmeniz için botların, amaçların ve yuva türlerinin seçimi. Sürüm, geliştirme, beta dağıtımı ve üretim gibi iş akışınızın farklı bölümlerinde kullanmak üzere yayınlayabileceğiniz, bot tanımınızın numaralandırılmış anlık görüntüsüdür. Amazon Lex botları da destekliyor takma adları. Takma ad, bir botun belirli bir sürümünün işaretçisidir. Bir takma adla istemci uygulamalarınızın sürümünü güncelleyebilirsiniz. Pratik senaryolarda, mavi/yeşil dağıtımlar ve geliştirme ve üretim ortamları gibi ortama özgü yapılandırmaların yönetilmesi için bot takma adları kullanılır.

Örnek vermek gerekirse, botunuzun 1. sürümüne bir takma ad işaret ettiğinizi varsayalım. Botu güncelleme zamanı geldiğinde sürüm 2'yi yayınlayabilir ve takma adı yeni sürümü işaret edecek şekilde değiştirebilirsiniz. Uygulamalarınız belirli bir sürüm yerine takma adı kullandığından, tüm istemciler yeni işlevleri güncelleme gerektirmeden alır.

CloudFormation şablonunu değiştirip dağıtımı başlattığınızda, değişikliklerin öncelikle test amaçlı olarak taslak sürümde uygulandığını unutmayın. Test aşamanızı tamamladıktan sonra, şimdiye kadar yaptığınız değişiklikleri sonlandırmak için yeni bir sürüm oluşturabilirsiniz.

Daha sonra taslağınızı temel alarak yeni bir bot sürümü oluşturursunuz, yeni bir takma ad ayarlarsınız ve sürümü bu takma ada bağlarsınız. Şablonunuza eklenecek iki yeni kaynak aşağıda verilmiştir:

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

Yapabilirsin şablonun yeni sürümünü indirin ve yığınınızı güncelleyerek dağıtın. Amazon Lex konsolunda yeni bir sürümün oluşturulduğunu ve adı verilen yeni bir takma adla ilişkilendirildiğini görebilirsiniz. BookHotelDemoAlias.

demo takma adı

Amazon Lex botunun yeni bir sürümünü oluşturduğunuzda, genellikle sürüm numarasını 1'den başlayarak sırayla artırır. Belirli bir sürümü ayırt etmek için açıklamasına başvurabilirsiniz.

ilk versiyon

Lambda işlevi ekleme

Botunuz için değerleri başlatmak veya kullanıcı girişini doğrulamak için botunuza kod kancası olarak bir Lambda işlevi ekleyebilirsiniz. Benzer şekilde, yerine getirmek için bir Lambda işlevini de kullanabilirsiniz; örneğin, veritabanlarına veri yazmak veya toplanan bilgileri kaydeden API'leri çağırmak. Daha fazla bilgi için bkz. AWS Lambda işlevleriyle özel mantığı etkinleştirme.

CloudFormation şablonuna Lambda işlevi için yeni bir kaynak ekleyelim. Genellikle CloudFormation şablonlarına kod yerleştirilmesi tavsiye edilmese de burada bunu yalnızca demo dağıtımını daha az karmaşık hale getirmek amacıyla yapıyoruz. Aşağıdaki koda bakın:

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

Bu Lambda işlevini yerine getirmek amacıyla kullanmak için amacınızdaki kod kancası ayarlarını etkinleştirin:

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

Botunuzda değişiklik yaptığınız için, adlı yeni bir kaynak ekleyerek botun yeni bir sürümünü oluşturabilirsiniz. BookHotelVersionWithLambda şablonda:

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 işlevi bir bot takma adıyla ilişkilidir. Amazon Lex V2, dil ve bot takma adı başına bir Lambda işlevi kullanabilir. Bu nedenle Lambda işlevi kaynağını eklemek için şablondaki takma adınızı güncellemeniz gerekir. Bunu şurada yapabilirsiniz: BotAliasLocalSettings bölüm. Ayrıca takma adı, oluşturduğunuz yeni sürüme yönlendirmeniz gerekir. Aşağıdaki kod değiştirilmiş takma ad yapılandırmasıdır:

  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

Şu ana kadar Lambda işlevini yalnızca takma adla ilişkilendirdiniz. Ancak takma adın Lambda işlevini çağırmasına izin vermek için izin vermeniz gerekir. Aşağıdaki kodda, Amazon Lex için Lambda çağırma iznini eklersiniz ve kaynak ARN olarak ARN takma adını belirtirsiniz:

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

Yapabilirsin en son sürümü indir şablonun. Yığınınızı bu sürümle güncelledikten sonra Lambda işleviyle entegre bir Amazon Lex botuna sahip olacaksınız.

ikinci versiyon

güncellendi alis

Koşullu dallar

Şimdi Amazon Lex botunun koşullu dallanma özelliğini inceleyelim ve önümüzdeki hafta Seattle'da beş geceden fazla rezervasyon yapılmasına izin verilmeyen bir senaryoyu ele alalım. İş gereği, kullanıcının Seattle'da beş geceden fazla rezervasyon yaptırmaya çalışması durumunda görüşmenin uygun bir mesajla sona ermesi gerekir. Bunun koşullu dalı CloudFormation şablonunda şu şekilde temsil edilir: 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

Bot tanımını değiştirdiğiniz için şablonda yeni bir sürüm oluşturmanız ve bunu takma adla bağlamanız gerekir. Bu geçici bir değişiklik çünkü işletme yakında Seattle'da büyük rezervasyonlara izin vermeyi planlıyor. Şablona eklediğiniz iki yeni kaynak şunlardır:

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

Yapabilirsin güncellenen şablonu indir. Yığınınızı bu şablon sürümüyle güncelledikten sonra takma ad, koşullu dallanma özelliğini içeren sürüme yönlendirilecektir. Bu değişikliği geri almak için takma adı güncelleyerek önceki sürüme geri dönebilirsiniz.

üçüncü versiyon

üçüncü sürüm için takma ad

Kayıtlar

Amazon Lex botunuz için günlükleri de etkinleştirebilirsiniz. Bunu yapmak için botun rolünü yazma izinleri verecek şekilde güncellemelisiniz Amazon Bulut İzleme kütükler. Role CloudWatch ilkesi eklemenin bir örneği aşağıdadır:

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

Tutarlı ve öngörülebilir davranış sağlamak için CloudFormation şablonlarında kaynak adlarını ve özelliklerini tanımlarken mümkün olduğunca spesifik olmanız gerekir. Bunun nedeni, CloudFormation şablonlarında joker karakterin (*) kullanımının potansiyel güvenlik riskleri oluşturabilmesi ve istenmeyen sonuçlara yol açabilmesidir. Bu nedenle, joker karakterlerin kullanılmasından kaçınılması ve bunun yerine mümkün olan her yerde açık değerlerin kullanılması önerilir.

Daha sonra, günlüklerinizi bu gruba yönlendirmek için aşağıdaki kodda gösterildiği gibi bir CloudWatch günlük grubu kaynağı oluşturursunuz:

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

Son olarak, konuşma günlüğü ayarlarını etkinleştirmek için takma adınızı güncellersiniz:

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

Yığını bu şablonla güncellediğinizde botunuz için konuşma günlüklerini etkinleştirirsiniz. Bot kaynağınızda herhangi bir değişiklik olmadığından bu adımda yeni bir sürüm oluşturulmaz. Yapabilirsiniz şablonun en son sürümünü indirin.

Temizlemek

Gelecekte ücretlendirme yapılmasını önlemek için oluşturduğunuz CloudFormation yığınını silin.

Sonuç

Bu yazıda, Amazon Lex V2 botu için CloudFormation şablonu oluşturmaya yönelik adım adım süreci ele aldık. Başlangıçta temel bir bot konuşlandırdık, ardından takma adların ve sürümlerin potansiyelini ve bunların şablonlarla nasıl verimli bir şekilde kullanılacağını araştırdık. Daha sonra Lambda işlevini Amazon Lex V2 bot'a nasıl entegre edeceğimizi öğrendik ve iş gereksinimlerini karşılamak için botun konuşma akışında koşullu dallanmayı uyguladık. Son olarak CloudWatch günlük grubu kaynağı oluşturarak ve botun rolünü gerekli izinlerle güncelleyerek günlük kaydı özellikleri ekledik.

Şablon, gerektiğinde değişiklikleri geri alma yeteneğiyle birlikte botun doğrudan konuşlandırılmasına ve yönetilmesine olanak tanır. Genel olarak CloudFormation şablonu, bir Amazon Lex V2 botunu yönetmek ve optimize etmek için kullanışlıdır.

Bir sonraki adım olarak keşfedebilirsiniz örnek Amazon Lex botları ve bunları CloudFormation şablonlarına dönüştürmek için bu yazıda tartışılan teknikleri uygulayın. Bu uygulamalı uygulama, Amazon Lex V2 botlarını kod olarak altyapı aracılığıyla yönetme konusundaki anlayışınızı güçlendirecektir.


Yazarlar Hakkında

Thomas Rindfuss Amazon Lex ekibinde Kıdemli Çözüm Mimarıdır. Müşteri deneyimini iyileştiren ve benimsemeyi kolaylaştıran Language AI hizmetleri için yeni teknik özellikler ve çözümler icat eder, geliştirir, prototipler ve müjdeler.

Rijeesh Akkambeth Chatoth AWS'de Profesyonel Hizmetler Danışmanıdır. Müşterilerin arzu ettikleri işi başarmalarına yardımcı olur
Amazon Connect, Amazon Lex ve GenAI özelliklerinden yararlanarak İletişim Merkezi alanında sonuçlar elde edin.

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?