Home Машинное обучение Управляйте своим ботом Amazon Lex с помощью шаблонов AWS CloudFormation. | DeepTech

Управляйте своим ботом Amazon Lex с помощью шаблонов AWS CloudFormation. | DeepTech

0
Управляйте своим ботом Amazon Lex с помощью шаблонов AWS CloudFormation.
 | DeepTech

Amazon Lex — это полностью управляемый сервис искусственного интеллекта (ИИ) с расширенными моделями естественного языка для проектирования, создания, тестирования и развертывания диалоговых интерфейсов в приложениях. Он использует передовые технологии глубокого обучения для понимания пользовательского ввода, что позволяет разработчикам создавать чат-ботов, виртуальных помощников и другие приложения, которые могут взаимодействовать с пользователями на естественном языке.

Управление ботами Amazon Lex с помощью AWS CloudFormation позволяет создавать шаблоны, определяющие бота и все ресурсы AWS, от которых он зависит. AWS CloudFormation предоставляет и настраивает эти ресурсы от вашего имени, устраняя риск человеческой ошибки при развертывании ботов в новых средах. Преимущества использования CloudFormation включают в себя:

  • Последовательность – Шаблон CloudFormation обеспечивает более последовательный и автоматизированный способ развертывания ресурсов, связанных с ботом Amazon Lex, и управления ими.
  • Контроль версий – С помощью AWS CloudFormation вы можете использовать системы контроля версий, такие как Git, для управления шаблонами CloudFormation. Это позволяет вам поддерживать разные версии вашего бота и при необходимости откатиться к предыдущим версиям.
  • Многоразовое использование – Вы можете повторно использовать шаблоны CloudFormation в различных средах, таких как разработка, промежуточное хранение и производство. Это экономит время и усилия при определении одного и того же бота в разных средах.
  • Расширяемость – По мере того как ваш бот Amazon Lex становится все сложнее, управлять им через Консоль управления AWS становится все сложнее. AWS CloudFormation обеспечивает более рациональный и эффективный подход к управлению определениями и ресурсами бота.
  • Автоматизация – Использование шаблона CloudFormation позволяет автоматизировать процесс развертывания. Вы можете использовать сервисы AWS, такие как AWS CodePipeline и AWS CodeBuild, для автоматического создания, тестирования и развертывания бота Amazon Lex.

В этом посте мы покажем вам, как создать шаблон CloudFormation для бота Amazon Lex V2.

Обзор решения

В качестве отправной точки для этого упражнения мы выбрали бота Book Trip. Мы используем шаблон CloudFormation для создания нового бота с нуля, включая определение намерений, слотов и других необходимых компонентов. Кроме того, мы изучаем такие темы, как контроль версий, псевдонимы, интеграция функций AWS Lambda, создание условных ветвей и включение ведения журналов.

Предварительные условия

У вас должны быть следующие предпосылки:

  • Учетная запись AWS для создания и развертывания шаблона CloudFormation.
  • Необходимые разрешения AWS Identity and Access Management (IAM) для развертывания AWS CloudFormation и ресурсов, используемых в шаблоне.
  • Базовые знания Amazon Lex, функций Lambda и связанных сервисов.
  • Базовые знания по созданию и развертыванию шаблонов CloudFormation.

Создайте роль IAM

Для начала вам необходимо создать роль IAM, которую будет использовать бот. Этого можно добиться, инициализировав шаблон CloudFormation и добавив роль IAM в качестве ресурса. Для создания роли можно использовать следующий шаблон. Если вы скачать пример шаблона и разверните его, вы увидите, что роль IAM создана. По мере прочтения этого поста мы предоставляем примеры шаблонов и объединяем их по мере продвижения.

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

Далее вам нужно добавить определение бота. Ниже приведен шаблон YAML для определения бота Amazon Lex; вы создаете необходимые компоненты один за другим:

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

Чтобы создать бота, который включает только определение бота без каких-либо намерений, вы можете использовать следующий шаблон. Здесь вы указываете имя бота, ARN ранее созданной вами роли, настройки конфиденциальности данных и многое другое:

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

Ты можешь скачать обновленный шаблон. Развертывание обновленного шаблона позволяет создать как роль, так и определение бота. Обратите внимание, что вы обновляете стек, созданный на предыдущем шаге.

Последний шаг предполагает определение BotLocales, которые составляют большую часть функций бота. Сюда входит, например, Intents и Slot types. Ниже приведен шаблон YAML:

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

В этом случае вы строите BookHotel намерение, для которого требуется специальный тип слота для типов номеров. Вы устанавливаете LocaleIdтогда VoiceSettings. Затем вы добавляете SlotTypes и соответствующие им значения.

Следующим шагом является определение Intentsначиная с первого намерения, BookHotel, что включает в себя добавление высказываний, слотов и приоритетов слотов. Подробная информация об этих узлах продемонстрирована в предоставленном шаблоне. Наконец, вы добавляете второе намерение, то есть FallbackIntent. См. следующий код:

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"

Ты можешь скачать шаблон CloudFormation за проделанную до сих пор работу. После того, как вы обновите свой стек с помощью этого шаблона, будет развернут функциональный бот. В консоли Amazon Lex вы можете убедиться, что существует черновая версия бота и псевдоним по умолчанию с именем TestBotAlias был создан.

псевдоним бота

Создайте новую версию и псевдоним бота.

Amazon Lex поддерживает публикацию версии ботов, намерений и типов слотов, чтобы вы могли контролировать реализацию своих клиентских приложений. Версия — это пронумерованный снимок определения вашего бота, который вы можете опубликовать для использования в различных частях вашего рабочего процесса, таких как разработка, бета-развертывание и производство. Боты Amazon Lex также поддерживают псевдонимы. Псевдоним — это указатель на конкретную версию бота. С помощью псевдонима вы можете обновить версию своих клиентских приложений. В практических сценариях псевдонимы ботов используются для синего/зеленого развертывания и управления конфигурациями, специфичными для конкретной среды, такими как среды разработки и производства.

Для иллюстрации предположим, что вы указываете псевдоним версии 1 вашего бота. Когда придет время обновить бота, вы можете опубликовать версию 2 и изменить псевдоним, чтобы он указывал на новую версию. Поскольку ваши приложения используют псевдоним вместо конкретной версии, все клиенты получают новые функциональные возможности без необходимости обновлений.

Имейте в виду, что когда вы изменяете шаблон CloudFormation и начинаете развертывание, изменения реализуются в черновой версии, предназначенной в первую очередь для тестирования. После завершения этапа тестирования вы можете установить новую версию, чтобы завершить внесенные вами изменения.

Далее вы создаете новую версию бота на основе вашего проекта, настраиваете новый псевдоним и связываете версию с этим псевдонимом. Ниже приведены два новых ресурса, которые можно добавить в ваш шаблон:

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

Ты можешь скачать новую версию шаблона и разверните его, обновив свой стек. В консоли Amazon Lex можно увидеть, что создается новая версия, связанная с новым псевдонимом под названием BookHotelDemoAlias.

демо-псевдоним

Когда вы создаете новую версию бота Amazon Lex, он обычно последовательно увеличивает номер версии, начиная с 1. Чтобы узнать конкретную версию, вы можете обратиться к ее описанию.

Первоначальная версия

Добавьте лямбда-функцию

Чтобы инициализировать значения или проверить пользовательский ввод для вашего бота, вы можете добавить в бот функцию Lambda в качестве перехватчика кода. Аналогичным образом вы также можете использовать функцию Lambda для выполнения, например, записи данных в базы данных или вызова API для сохранения собранной информации. Дополнительную информацию см. в разделе Включение пользовательской логики с помощью функций AWS Lambda.

Добавим новый ресурс для функции Lambda в шаблон CloudFormation. Хотя обычно не рекомендуется встраивать код в шаблоны CloudFormation, мы делаем это здесь исключительно для того, чтобы упростить демонстрационное развертывание. См. следующий код:

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

Чтобы использовать эту лямбда-функцию для выполнения, включите настройки перехватчика кода в своем намерении:

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

Поскольку вы внесли изменения в своего бота, вы можете создать новую версию бота, добавив новый ресурс с именем BookHotelVersionWithLambda в шаблоне:

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 связана с псевдонимом бота. Amazon Lex V2 может использовать одну функцию Lambda для каждого псевдонима бота на каждом языке. Поэтому вам необходимо обновить свой псевдоним в шаблоне, чтобы добавить ресурс функции Lambda. Вы можете сделать это в BotAliasLocalSettings раздел. Вам также необходимо указать псевдоним созданной вами новой версии. Следующий код представляет собой измененную конфигурацию псевдонима:

  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

До сих пор вы связывали только функцию Lambda с псевдонимом. Однако вам необходимо предоставить разрешение, чтобы псевдоним мог вызывать функцию Lambda. В следующем коде вы добавляете разрешение вызова Lambda для Amazon Lex и указываете псевдоним ARN в качестве исходного ARN:

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

Ты можешь скачать последнюю версию шаблона. После обновления вашего стека этой версией у вас будет бот Amazon Lex, интегрированный с функцией Lambda.

вторая версия

обновлен Алис

Условные ветки

Теперь давайте рассмотрим функцию условного ветвления бота Amazon Lex и рассмотрим сценарий, при котором бронирование более пяти ночей в Сиэтле не разрешено на следующей неделе. Согласно бизнес-требованиям, разговор должен завершиться соответствующим сообщением, если пользователь попытается забронировать более пяти ночей в Сиэтле. Условная ветвь для этого представлена ​​в шаблоне CloudFormation под 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

Поскольку вы изменили определение бота, вам необходимо создать новую версию в шаблоне и связать ее с псевдонимом. Это временное изменение, поскольку компания планирует в ближайшее время разрешить крупные заказы в Сиэтле. Ниже приведены два новых ресурса, которые вы добавляете в шаблон:

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

Ты можешь скачать обновленный шаблон. После обновления стека этой версией шаблона псевдоним будет перенаправлен на версию, включающую функцию условного ветвления. Чтобы отменить это изменение, вы можете обновить псевдоним, чтобы вернуться к предыдущей версии.

третья версия

псевдоним для третьей версии

Журналы

Вы также можете включить журналы для своего бота Amazon Lex. Для этого необходимо обновить роль бота, чтобы предоставить разрешения на запись журналов Amazon CloudWatch. Ниже приведен пример добавления к роли политики CloudWatch:

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

Чтобы обеспечить согласованное и предсказуемое поведение, вам следует быть как можно более конкретными при определении имен и свойств ресурсов в шаблонах CloudFormation. Это связано с использованием подстановочного знака

в шаблонах CloudFormation может представлять потенциальную угрозу безопасности и приводить к непредвиденным последствиям. Поэтому рекомендуется избегать использования подстановочных знаков и вместо этого использовать явные значения, где это возможно.

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

Затем вы создаете ресурс группы журналов CloudWatch, как показано в следующем коде, чтобы направлять ваши журналы в эту группу:

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

Наконец, вы обновляете свой псевдоним, чтобы включить настройки журнала разговоров: Когда вы обновляете стек с помощью этого шаблона, вы включаете журналы разговоров для своего бота. На этом этапе новая версия не создается, поскольку в ресурсе вашего бота не вносятся изменения. Ты можешьскачать последнюю версию шаблона

.

Очистить

Чтобы избежать взимания платы в будущем, удалите созданный вами стек CloudFormation.

Заключение

В этом посте мы обсудили пошаговый процесс создания шаблона CloudFormation для бота Amazon Lex V2. Первоначально мы развернули базового бота, затем изучили потенциал псевдонимов и версий и способы их эффективного использования с шаблонами. Затем мы узнали, как интегрировать функцию Lambda с ботом Amazon Lex V2 и реализовали условное ветвление в потоке разговора бота для удовлетворения бизнес-требований. Наконец, мы добавили функции ведения журнала, создав ресурс группы журналов CloudWatch и обновив роль бота с необходимыми разрешениями.

Шаблон обеспечивает простое развертывание бота и управление им с возможностью отмены изменений при необходимости. В целом шаблон CloudFormation полезен для управления ботом Amazon Lex V2 и его оптимизации.


В качестве следующего шага вы можете изучить примеры ботов Amazon Lex и применить методы, обсуждаемые в этой публикации, для преобразования их в шаблоны CloudFormation. Эта практическая практика укрепит ваше понимание управления ботами Amazon Lex V2 с помощью инфраструктуры как кода.

Об авторах Томас Риндфусс

— старший архитектор решений в команде Amazon Lex. Он изобретает, разрабатывает, прототипирует и пропагандирует новые технические функции и решения для сервисов языкового искусственного интеллекта, которые улучшают качество обслуживания клиентов и облегчают внедрение. Риджиш Аккамбет Чатот
— консультант по профессиональным услугам в AWS. Он помогает клиентам в достижении желаемого бизнеса

результаты в пространстве контакт-центра за счет использования функций Amazon Connect, Amazon Lex и GenAI.

LEAVE A REPLY

Please enter your comment!
Please enter your name here