Kecerdasan Data Generatif

Kelola bot Amazon Lex Anda melalui templat AWS CloudFormation | Layanan Web Amazon

Tanggal:

AmazonLex adalah layanan kecerdasan buatan (AI) yang dikelola sepenuhnya dengan model bahasa alami canggih untuk merancang, membangun, menguji, dan menerapkan antarmuka percakapan dalam aplikasi. Ini menggunakan teknologi pembelajaran mendalam yang canggih untuk memahami masukan pengguna, memungkinkan pengembang membuat chatbot, asisten virtual, dan aplikasi lain yang dapat berinteraksi dengan pengguna dalam bahasa alami.

Mengelola bot Amazon Lex Anda menggunakan Formasi AWS Cloud memungkinkan Anda membuat templat yang mendefinisikan bot dan semua sumber daya AWS yang menjadi sandarannya. AWS CloudFormation menyediakan dan mengonfigurasi sumber daya tersebut atas nama Anda, menghilangkan risiko kesalahan manusia saat menerapkan bot ke lingkungan baru. Keuntungan menggunakan CloudFormation meliputi:

  • Konsistensi โ€“ Templat CloudFormation menyediakan cara yang lebih konsisten dan otomatis untuk menerapkan dan mengelola sumber daya yang terkait dengan bot Amazon Lex.
  • Kontrol versi โ€“ Dengan AWS CloudFormation, Anda dapat menggunakan sistem kontrol versi seperti Git untuk mengelola templat CloudFormation Anda. Hal ini memungkinkan Anda untuk mempertahankan versi bot yang berbeda dan memutar kembali ke versi sebelumnya jika diperlukan.
  • Dapat digunakan kembali โ€“ Anda dapat menggunakan kembali templat CloudFormation di berbagai lingkungan, seperti pengembangan, staging, dan produksi. Hal ini menghemat waktu dan tenaga dalam mendefinisikan bot yang sama di lingkungan yang berbeda.
  • Upgrade โ€“ Seiring bertambahnya kompleksitas bot Amazon Lex Anda, kelolalah melalui Konsol Manajemen AWS menjadi lebih menantang. AWS CloudFormation memungkinkan pendekatan yang lebih efisien dan efisien untuk mengelola definisi dan sumber daya bot.
  • Otomatisasi โ€“ Menggunakan templat CloudFormation memungkinkan Anda mengotomatiskan proses penerapan. Anda dapat menggunakan layanan AWS seperti Pipa Kode AWS dan Pembuatan Kode AWS untuk membangun, menguji, dan menerapkan bot Amazon Lex Anda secara otomatis.

Dalam postingan ini, kami memandu Anda melalui langkah-langkah dalam membuat templat CloudFormation untuk bot Amazon Lex V2.

Ikhtisar solusi

Kami telah memilih Pesan Perjalanan bot sebagai titik awal kami untuk latihan ini. Kami menggunakan templat CloudFormation untuk membuat bot baru dari awal, termasuk menentukan maksud, slot, dan komponen lain yang diperlukan. Selain itu, kami mengeksplorasi topik seperti kontrol versi, alias, pengintegrasian AWS Lambda fungsi, membuat cabang bersyarat, dan mengaktifkan logging.

Prasyarat

Anda harus memiliki prasyarat berikut:

  • An Akun AWS untuk membuat dan menyebarkan templat CloudFormation
  • Yang diperlukan Identitas AWS dan Manajemen Akses (IAM) Izin untuk menerapkan AWS CloudFormation dan sumber daya yang digunakan dalam templat
  • Pengetahuan dasar tentang Amazon Lex, fungsi Lambda, dan layanan terkait
  • Pengetahuan dasar tentang membuat dan menerapkan templat CloudFormation

Buat peran IAM

Untuk memulai, Anda perlu membuat IAM role yang akan digunakan bot. Anda dapat mencapai hal ini dengan menginisialisasi templat CloudFormation dan menambahkan IAM role sebagai sumber daya. Anda dapat menggunakan templat berikut untuk membuat peran. Jika kamu unduh contoh templatnya dan menerapkannya, Anda akan melihat bahwa IAM role telah dibuat. Kami memberikan contoh templat saat kami membaca postingan ini dan menggabungkannya seiring berjalannya waktu.

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

Konfigurasikan bot Amazon Lex

Selanjutnya, Anda perlu menambahkan definisi bot. Berikut ini adalah template YAML untuk definisi bot Amazon Lex; Anda membuat komponen yang diperlukan satu per satu:

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

Untuk membuat bot yang hanya menyertakan definisi bot tanpa maksud apa pun, Anda bisa menggunakan templat berikut. Di sini, Anda menentukan nama bot, ARN peran yang Anda buat sebelumnya, pengaturan privasi data, dan lainnya:

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

Anda dapat unduh templat yang diperbarui. Menyebarkan templat yang diperbarui memungkinkan Anda membuat peran dan definisi bot. Perhatikan bahwa Anda memperbarui tumpukan Anda buat pada langkah sebelumnya.

Langkah terakhir memerlukan pendefinisian BotLocales, yang merupakan sebagian besar fungsi bot. Ini termasuk, misalnya, Intents dan Slot types. Berikut ini adalah template YAML:

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

Dalam hal ini, Anda membangun BookHotel maksudnya, yang memerlukan jenis slot khusus untuk jenis kamar. Anda mengatur LocaleId, lalu VoiceSettings. Kemudian Anda menambahkan SlotTypes dan nilai-nilai yang sesuai.

Langkah selanjutnya adalah menentukan Intents, dimulai dengan niat pertama, BookHotel, yang melibatkan penambahan ucapan, slot, dan prioritas slot. Detail node ini ditunjukkan pada template yang disediakan. Terakhir, Anda menambahkan maksud kedua, yaitu FallbackIntent. Lihat kode berikut:

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"

Anda dapat unduh templat CloudFormation untuk pekerjaan yang telah dilakukan sampai sekarang. Setelah kamu perbarui tumpukan Anda dengan templat ini, bot fungsional akan diterapkan. Di konsol Amazon Lex, Anda dapat mengonfirmasi bahwa terdapat versi draf bot, dan alias default bernama TestBotAlias telah dibuat.

alias bot

Buat versi bot dan alias baru

Amazon Lex mendukung penerbitan Versi bot, maksud, dan jenis slot sehingga Anda dapat mengontrol implementasi aplikasi klien Anda. Versi adalah cuplikan bernomor dari definisi bot yang dapat Anda terbitkan untuk digunakan di berbagai bagian alur kerja Anda, seperti pengembangan, penerapan beta, dan produksi. Bot Amazon Lex juga mendukung alias. Alias โ€‹โ€‹adalah penunjuk ke versi bot tertentu. Dengan alias, Anda dapat memperbarui versi aplikasi klien Anda. Dalam skenario praktis, alias bot digunakan untuk penerapan biru/hijau dan mengelola konfigurasi spesifik lingkungan seperti lingkungan pengembangan dan produksi.

Sebagai ilustrasi, katakanlah Anda mengarahkan alias ke versi 1 bot Anda. Jika sudah waktunya memperbarui bot, Anda dapat memublikasikan versi 2 dan mengubah alias agar mengarah ke versi baru. Karena aplikasi Anda menggunakan alias dan bukan versi tertentu, semua klien menerima fungsionalitas baru tanpa memerlukan pembaruan.

Ingatlah bahwa saat Anda memodifikasi templat CloudFormation dan memulai penerapan, perubahan tersebut diterapkan dalam versi draf, terutama dimaksudkan untuk pengujian. Setelah menyelesaikan tahap pengujian, Anda dapat membuat versi baru untuk menyelesaikan perubahan yang telah Anda terapkan sejauh ini.

Selanjutnya, Anda membuat versi bot baru berdasarkan draf Anda, menyiapkan alias baru, dan menautkan versi tersebut ke alias ini. Berikut ini adalah dua sumber daya baru untuk ditambahkan ke templat Anda:

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

Anda dapat unduh templat versi baru dan terapkan dengan memperbarui tumpukan Anda. Anda dapat melihat di konsol Amazon Lex bahwa versi baru dibuat dan dikaitkan dengan alias baru yang disebut BookHotelDemoAlias.

alias demo

Saat Anda membuat versi baru bot Amazon Lex, biasanya bot tersebut menambah nomor versi secara berurutan, dimulai dari 1. Untuk membedakan versi tertentu, Anda dapat merujuk pada deskripsinya.

versi awal

Tambahkan fungsi Lambda

Untuk menginisialisasi nilai atau memvalidasi input pengguna untuk bot Anda, Anda dapat menambahkan fungsi Lambda sebagai pengait kode ke bot Anda. Demikian pula, Anda juga dapat menggunakan fungsi Lambda untuk pemenuhan, misalnya menulis data ke database atau memanggil API untuk menyimpan informasi yang dikumpulkan. Untuk informasi lebih lanjut, lihat Mengaktifkan logika kustom dengan fungsi AWS Lambda.

Mari tambahkan sumber daya baru untuk fungsi Lambda ke templat CloudFormation. Meskipun secara umum tidak disarankan untuk menyematkan kode di templat CloudFormation, kami melakukannya di sini semata-mata demi membuat penerapan demo menjadi lebih mudah. Lihat kode berikut:

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

Untuk menggunakan fungsi Lambda ini untuk pemenuhan, aktifkan pengaturan kait kode dalam maksud Anda:

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

Karena Anda membuat perubahan pada bot, Anda dapat membuat versi bot baru dengan menambahkan sumber daya baru bernama BookHotelVersionWithLambda dalam templat:

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

Fungsi Lambda dikaitkan dengan alias bot. Amazon Lex V2 dapat menggunakan satu fungsi Lambda per alias bot per bahasa. Oleh karena itu, Anda harus memperbarui alias Anda di templat untuk menambahkan sumber daya fungsi Lambda. Anda dapat melakukannya di BotAliasLocalSettings bagian. Anda juga perlu mengarahkan alias ke versi baru yang Anda buat. Kode berikut adalah konfigurasi alias yang dimodifikasi:

  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

Hingga saat ini, Anda hanya menghubungkan fungsi Lambda dengan alias. Namun, Anda perlu memberikan izin untuk mengizinkan alias memanggil fungsi Lambda. Dalam kode berikut, Anda menambahkan izin pemanggilan Lambda untuk Amazon Lex dan menentukan alias ARN sebagai ARN sumber:

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

Anda dapat unduh versi terbaru dari templat. Setelah memperbarui tumpukan Anda dengan versi ini, Anda akan memiliki bot Amazon Lex yang terintegrasi dengan fungsi Lambda.

versi kedua

alis yang diperbarui

Cabang bersyarat

Sekarang mari kita jelajahi fitur cabang bersyarat dari bot Amazon Lex dan pertimbangkan skenario di mana pemesanan lebih dari lima malam di Seattle tidak diperbolehkan untuk minggu depan. Sesuai kebutuhan bisnis, percakapan harus diakhiri dengan pesan yang sesuai jika pengguna mencoba memesan lebih dari lima malam di Seattle. Cabang bersyarat untuk itu diwakili dalam templat CloudFormation di bawah 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

Karena Anda mengubah definisi bot, Anda perlu membuat versi baru di template dan menghubungkannya dengan alias. Ini adalah perubahan sementara karena bisnis berencana mengizinkan pemesanan dalam jumlah besar di Seattle dalam waktu dekat. Berikut ini adalah dua sumber daya baru yang Anda tambahkan ke templat:

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

Anda dapat unduh templat yang diperbarui. Setelah Anda memperbarui tumpukan Anda dengan versi templat ini, alias akan diarahkan ke versi yang menggabungkan fitur percabangan bersyarat. Untuk membatalkan modifikasi ini, Anda dapat memperbarui alias kembali ke versi sebelumnya.

versi ketiga

alias untuk versi ketiga

Log

Anda juga dapat mengaktifkan log untuk bot Amazon Lex Anda. Untuk melakukannya, Anda harus memperbarui peran bot untuk memberikan izin menulis amazoncloudwatch log. Berikut ini adalah contoh penambahan kebijakan CloudWatch ke peran tersebut:

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

Untuk memastikan perilaku yang konsisten dan dapat diprediksi, Anda harus sespesifik mungkin saat menentukan nama dan properti sumber daya di templat CloudFormation. Hal ini karena penggunaan karakter wildcard (*) di templat CloudFormation dapat menimbulkan potensi risiko keamanan dan menimbulkan konsekuensi yang tidak diinginkan. Oleh karena itu, disarankan untuk menghindari penggunaan wildcard dan sebagai gantinya gunakan nilai eksplisit jika memungkinkan.

Selanjutnya, Anda membuat sumber daya grup log CloudWatch, seperti yang ditunjukkan dalam kode berikut, untuk mengarahkan log Anda ke grup ini:

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

Terakhir, Anda memperbarui alias Anda untuk mengaktifkan pengaturan log percakapan:

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

Saat Anda memperbarui tumpukan dengan templat ini, Anda mengaktifkan log percakapan untuk bot Anda. Versi baru tidak dibuat pada langkah ini karena tidak ada perubahan pada sumber daya bot Anda. Kamu bisa unduh templat versi terbaru.

Membersihkan

Untuk mencegah timbulnya biaya di masa mendatang, hapus tumpukan CloudFormation yang Anda buat.

Kesimpulan

Dalam postingan ini, kita membahas proses langkah demi langkah untuk membuat template CloudFormation untuk bot Amazon Lex V2. Awalnya, kami menerapkan bot dasar, lalu kami mengeksplorasi potensi alias dan versi serta cara menggunakannya secara efisien dengan templat. Selanjutnya, kita mempelajari cara mengintegrasikan fungsi Lambda dengan bot Amazon Lex V2 dan menerapkan percabangan bersyarat dalam alur percakapan bot untuk mengakomodasi kebutuhan bisnis. Terakhir, kami menambahkan fitur logging dengan membuat sumber daya grup log CloudWatch dan memperbarui peran bot dengan izin yang diperlukan.

Templat ini memungkinkan penerapan dan pengelolaan bot secara mudah, dengan kemampuan untuk mengembalikan perubahan jika diperlukan. Secara keseluruhan, templat CloudFormation berguna untuk mengelola dan mengoptimalkan bot Amazon Lex V2.

Sebagai langkah selanjutnya, Anda bisa menjelajah contoh bot Amazon Lex dan terapkan teknik yang dibahas dalam postingan ini untuk mengubahnya menjadi template CloudFormation. Praktik langsung ini akan memperkuat pemahaman Anda tentang pengelolaan bot Amazon Lex V2 melalui infrastruktur sebagai kode.


Tentang Penulis

Thomas Rindfuss adalah Sr. Solutions Architect di tim Amazon Lex. Dia menciptakan, mengembangkan, membuat prototipe, dan memperkenalkan fitur dan solusi teknis baru untuk layanan AI Bahasa yang meningkatkan pengalaman pelanggan dan memudahkan adopsi.

Rijeesh Akkambeth Chathoth adalah Konsultan Layanan Profesional di AWS. Dia membantu pelanggan dalam mencapai bisnis yang diinginkan
hasil di bidang Pusat Kontak dengan memanfaatkan fitur Amazon Connect, Amazon Lex, dan GenAI.

tempat_img

Intelijen Terbaru

tempat_img