StartBotConversation - Amazon Chime SDK

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

StartBotConversation

StartBotConversation 작업은 최종 사용자와 Amazon Lex v2 봇 간에 음성 대화를 설정합니다. 사용자는 봇에 필요한 정보를 제공합니다. 그런 다음 봇은 공중 교환 전화망(PSTN) 오디오 Lambda 함수에 정보를 반환하고 함수는 요청된 작업을 수행합니다.

예를 들어 봇은 대화 시작 시 선택적 환영 메시지를 재생하여 PSTN 오디오 Lambda 함수가 수행할 수 있는 작업을 간략하게 설명할 수 있습니다. 봇이 필요한 정보를 수집할 때까지 사용자와 봇 간에 대화가 오갑니다. 대화가 끝나면 Amazon Chime SDK는 봇이 수집한 정보가 포함된 작업 성공 이벤트와 함께 PSTN 오디오 Lambda 함수를 간접 호출합니다. PSTN 오디오 Lambda 함수는 정보를 처리하고 요청된 작업을 수행합니다.

오디오 서비스는 사용자와 실제와 같은 대화형 상호 작용을 제공합니다. 예를 들어 사용자는 오디오 프롬프트가 끝나기 전에 봇을 중단하고 질문에 답할 수 있습니다. 또한 사용자는 음성과 DTMF 숫자를 조합하여 정보를 제공할 수 있습니다. 봇은 응답하기 전에 사용자가 입력을 제공할 때까지 기다립니다. 봇이 음성 입력을 해석하기 전에 사용자가 말을 마칠 때까지 기다리는 시간을 구성할 수 있습니다. 또한 사용자는 통화 중에 신용 카드 번호와 같은 추가 정보를 찾을 시간이 필요한 경우 봇에게 대기하도록 지시할 수 있습니다.

StartBotConversation 액션은 봇 대화가 진행되는 동안 Amazon Lex와 Amazon Polly를 사용합니다. 표준 Amazon Lex 및 Amazon Polly 요금이 적용됩니다. 자세한 요금 정보는 Amazon Lex 스트리밍 대화 요금Amazon Polly 요금 페이지를 참조하세요.

참고

다중 통화 또는 Amazon Chime SDK 회의에 참여한 통화에서는 이 작업을 실행할 수 없습니다.

중요

Amazon Lex 및 Amazon Polly를 사용할 경우 AWS 기계 학습 및 인공 지능 AWS 서비스 관련 약관을 포함한 서비스 약관이 적용됩니다.

StartBotConversation 구문

다음은 예제는 일반적인 StartBotConversation 구문을 보여줍니다.

{ "SchemaVersion": "1.0", "Actions":[ { "Type": "StartBotConversation", "Parameters": { "CallId": "string", "ParticipantTag": "string", "BotAliasArn": "string", "LocaleId": "string", "Configuration": { "SessionState": { "SessionAttributes": { "string": "string" }, "DialogAction" : { "Type": "string" } }, "WelcomeMessages": [ { "Content": "string", "ContentType": "string" } ] } } } ] }
CallId

설명 — AWS Lambda 함수 호출에 참여한 CallDetails 사람의 모습입니다. CallID StartBotConversation 액션은 이 ID를 봇의 SessionId로 사용합니다. 통화에서 이루어지는 모든 봇 대화는 동일한 대화 세션을 공유합니다. Amazon Lex PutSession API를 사용하여 사용자와 봇 사이의 세션 상태를 수정할 수 있습니다. 자세한 내용은 Amazon Lex 개발자 안내서Amazon Lex v2 API로 세션 관리를 참조하세요.

허용된 값 - 유효한 호출 ID

필수 - 아니요(ParticipantTag가 있는 경우)

기본값 – 없음

ParticipantTag

설명 - CallDetails의 연결된 참가자 중 한 명의 ParticipantTag입니다.

허용된 값 - LEG-A

필수 - 아니요(CallId가 있는 경우)

기본값 - 간접 호출된 callLegParticipantTag. CallDetails를 지정한 경우 무시됩니다.

BotAliasArn

설명 - Lex 봇의 봇 별칭 ARN입니다. 봇은 PSTN 오디오 애플리케이션과 동일한 AWS 리전에 생성해야 합니다. 유효한 Amazon Lex 봇 별칭의 형식은 arn:aws:lex:region:awsAccountId:bot-alias/botId/botAliasId입니다. 여기서 region은 봇이 위치한 AWS 리전입니다. awsAccountId는 Amazon Lex 봇이 생성된 AWS 계정 ID입니다. botId 값은 봇을 만들 때 봇에 할당한 식별자입니다. Amazon Lex 콘솔의 봇 세부 정보 페이지에서 봇 ID를 확인할 수 있습니다. botAliasId는 봇을 만들 때 봇 별칭에 할당한 식별자입니다. Amazon Lex 콘솔의 봇 별칭 페이지에서 봇 별칭 ID를 확인할 수 있습니다.

허용된 값 - 유효한 봇 ARN

필수 - 예

기본값 – 없음

LocaleId

설명 – 봇에 사용한 로캘의 식별자입니다. 로캘 및 언어 코드 목록은 Amazon Lex에서 지원하는 언어 및 로캘을 참조하세요.

허용된 값 - Amazon Lex에서 지원하는 언어 및 로캘

필수 - 아니요

기본값en_US

Configuration

설명 - 세션 상태 및 환영 메시지를 포함한 대화 구성입니다. Configuration 객체의 JSON 문자열 표현의 총 크기는 10KB로 제한됩니다.

허용된 값 - Configuration 객체

필수 - 아니요

기본값 – 없음

Configuration.SessionState

설명 - Amazon Lex v2를 사용한 사용자 세션의 상태입니다.

허용된 값 - SessionState 객체

필수 - 아니요

기본값 – 없음

Configuration.SessionState.SessionAttributes

설명 – 세션별 컨텍스트 정보를 나타내는 키/값 페어의 맵입니다. 이 맵에는 Amazon Lex v2와 클라이언트 애플리케이션 간에 전달되는 애플리케이션 정보가 포함되어 있습니다.

허용된 값 - 문자열 간 맵

필수 - 아니요

기본값 – 없음

Configuration.SessionState.DialogAction.Type

설명 - 봇이 사용자와의 상호작용에서 취하는 다음 작업입니다. 가능한 값은 다음과 같습니다.

  • Delegate Amazon Lex v2가 다음 작업을 결정합니다.

  • ElicitIntent다음 작업은 사용자의 인텐트를 이끌어냅니다.

허용된 값 -Delegate | ElicitIntent

필수 - 아니요

기본값 – 없음

Configuration.WelcomeMessages

설명 - 대화를 시작할 때 사용자에게 보낼 메시지 목록입니다. welcomeMessage 필드를 설정하는 경우 DialogAction.Type 값을 ElicitIntent로 설정해야 합니다.

허용된 값 - 메시지 객체

필수 - 아니요

기본값 – 없음

Configuration.WelcomeMessages.Content

설명 - 환영 메시지 텍스트입니다.

허용된 값 - 문자열

필수 - 아니요

기본값 – 없음

Configuration.WelcomeMessages.ContentType

설명 - 환영 메시지 유형을 나타냅니다.

허용된 값: – PlainText | SSML

  • PlainText— 메시지에는 일반 UTF-8 텍스트가 포함되어 있습니다.

  • SSML – 메시지가 음성 출력용으로 형식이 지정된 텍스트를 포함합니다.

필수 - 예

기본값 – 없음

StartBotConversation액션 사용

다음은 예제는 일반적인 StartBotConversation 작업을 보여줍니다.

{ "SchemaVersion": "1.0", "Actions":[ { "Type": "StartBotConversation", "Parameters": { "CallId": "call-id-1", "BotAliasArn": "arn:aws:lex:us-east-1:123456789012:bot-alias/ABCDEFGHIH/MNOPQRSTUV", "LocaleId": "en_US", "Configuration": { "SessionState": { "SessionAttributes": { "mykey1": "myvalue1" }, "DialogAction" : { "Type": "ElicitIntent" } }, "WelcomeMessages": [ { "Content": "Welcome. How can I help you?", "ContentType": "PlainText" } ] } } } ] }

ACTION_SUCCESSFUL이벤트 처리

다음은 예제는 StartBotConversation 작업의 일반적인 ACTION_SUCCESSFUL 이벤트를 보여줍니다.

{ "SchemaVersion": "1.0", "Sequence": number, "InvocationEventType": "ACTION_SUCCESSFUL", "ActionData": { "CallId": "string", "Type": "StartBotConversation", "Parameters": { // parameters provided in the StartBotConversation action. }, "CallDetails": { // Information about the call associated with the AWS Lambda invocation. }, "IntentResult": { "SessionId": "string", "SessionState": { "SessionAttributes": { "string": "string" }, "Intent": { "Name": "string", "Slots": { "string": { "Value": { "OriginalValue": "string", "InterpretedValue": "string", "ResolvedValues": ["string"] }, "Values": [] } }, "State": "string", "ConfirmationState": "string" } }, "Interpretations": [ { "NluConfidence": { "Score": number }, "Intent": { "Name": "string", "Slots": { "string": { "Value": { "OriginalValue": "string", "InterpretedValue": "string", "ResolvedValues": ["string"] }, "Values": [] } }, "State": "string", "ConfirmationState": "string" } } ] } } }
IntentResult

사용자와 봇 간의 대화 결과입니다.

SessionId

봇 대화 세션의 식별자입니다. 사용자가 봇과 대화를 시작할 때 Amazon Lex는 세션을 생성합니다. 세션은 사용자와 봇 간에 교환되는 정보를 캡슐화합니다. StartBotConversation 작업은 통화 ID를 봇의 SessionId로 사용합니다. Lex PutSessionAPI를 사용하여 사용자와 봇 사이의 세션 상태를 수정할 수 있습니다. 자세한 내용은 Amazon Lex 개발자 안내서Amazon Lex V2 API로 세션 관리를 참조하세요.

SessionState

사용자의 Amazon Lex v2 세션 상태입니다.

SessionState.SessionAttributes

세션별 컨텍스트 정보를 나타내는 키/값 페어의 맵입니다. 맵에는 봇에 연결된 Lambda 함수와 PSTN 오디오 Lambda 함수 간에 전달된 봇 대화 정보가 포함되어 있습니다.

Interpretations

Amazon Lex에서 도출한 고객의 말을 만족시킬 수 있는 의도의 목록입니다. 가장 높은 NluConfidence 점수를 받은 의도는 SessionState의 의도가 됩니다.

해석. NluConfidence. 점수

Amazon Lex v2에서 의도가 사용자의 의도를 충족한다고 확신하는 정도를 나타내는 점수입니다. 범위는 0.00에서 1.00 사이입니다. 점수가 높을수록 신뢰도가 높습니다.

Intent

사용자가 수행하고자 하는 작업입니다.

Intent.Name

의도의 이름.

Intent.Slots

의도에 대한 모든 슬롯의 맵입니다. 슬롯의 이름은 슬롯의 값에 매핑됩니다. 슬롯이 채워지지 않은 경우 값은 null입니다.

Intent.Slots.Value

슬롯의 값입니다.

Intent.Slots.Values

슬롯에 사용자가 제공한 하나 이상의 값 목록입니다.

Intent.Slots.Value.OriginalValue

슬롯에 입력된 사용자 응답 텍스트입니다.

Intent.Slots.Value.InterpretedValue

설명 - Amazon Lex v2가 슬롯에 대해 결정하는 값입니다. 실제 값은 봇의 값 선택 전략 설정에 따라 달라집니다. 사용자가 입력한 값을 사용하거나 Amazon Lex v2가 resolvedValues 목록의 첫 번째 값을 선택하도록 할 수 있습니다.

Intent.Slots.Value.ResolvedValues

Amazon Lex v2가 슬롯에 대해 인식하는 추가 값의 목록입니다.

Intent.State

설명 - 의도 충족에 대한 정보입니다. 가능한 값은 다음과 같습니다.

  • Failed— Lambda 함수가 인텐트를 수행하지 못했습니다.

  • Fulfilled— Lambda 함수가 인텐트를 충족했습니다.

  • ReadyForFulfillment— 인텐트에 대한 정보가 있으며 Lambda 함수가 인텐트를 충족할 수 있습니다.

Intent.ConfirmationState

설명 - 의도 확인을 나타냅니다. 가능한 값은 다음과 같습니다.

  • Confirmed - 의도가 충족되었습니다.

  • Denied – 사용자가 확인 프롬프트에 “아니요”라고 응답했습니다.

  • None – 사용자에게 확인 프롬프트가 표시되지 않았거나 표시되었지만 확인 또는 거부하지 않았습니다.

이벤트 처리 ACTION_FAILED

다음은 예제는 StartBotConversation 작업의 일반적인 ACTION_FAILED 이벤트를 보여줍니다.

{ "SchemaVersion": "1.0", "Sequence": number, "InvocationEventType": "ACTION_FAILED", "ActionData":{ "CallId": "string", "Type": "StartBotConversation", "Parameters": { // parameters provided in the StartBotConversation action }, "ErrorType": "string", "ErrorMessage": "string" }, "CallDetails":{ } }
ErrorType

오류 상태를 식별하는 고유한 문자열입니다.

ErrorMessage

오류 상태의 일반적인 설명입니다.

오류 코드

다음 표에는 Lambda 함수가 ACTION_FAILED 이벤트에서 반환할 수 있는 오류 메시지가 나와 있습니다.

Error 설명

InvalidActionParameter

하나 이상의 작업 파라미터가 유효하지 않습니다. 오류 메시지가 잘못된 파라미터를 설명합니다.

SystemException

작업을 실행하는 동안 시스템 오류가 발생했습니다.

ResourceNotFound

지정된 봇을 찾을 수 없습니다.

ResourceAccessDenied

봇에 대한 액세스가 거부됩니다.

ActionExecutionThrottled

봇 대화 서비스 한도를 초과했습니다. 오류 메시지가 초과된 특정 서비스 한도를 설명합니다.

봇 사용 권한 부여

다음 예제는 Amazon Chime SDK에 Amazon Lex API를 호출할 수 있는 권한을 부여합니다. StartConversation 봇을 사용할 수 있는 오디오 서비스 권한을 명시적으로 부여해야 합니다. 조건 블록은 서비스 보안 주체에게 필요합니다. 조건 블록은 글로벌 컨텍스트 키 AWS:SourceAccountAWS:SourceArn을 사용해야 합니다. AWS:SourceAccount는 AWS 계정 ID입니다. AWS:SourceArn은 Lex 봇을 간접 호출하는 PSTN 오디오 애플리케이션의 리소스 ARN입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowChimePstnAudioUseBot", "Effect": "Allow", "Principal": { "Service": "voiceconnector.chime.amazonaws.com" }, "Action": "lex:StartConversation", "Resource": "arn:aws:lex:region:awsAccountId:bot-alias/botId/aliasId", "Condition": { "StringEquals": { "AWS:SourceAccount": "awsAccountId" }, "ArnEquals": { "AWS:SourceArn": "arn:aws:voiceconnector:region:awsAccountId:sma/smaId" } } } ] }

음성 및 DTMF 시간 제한 구성

사용자 입력을 캡처할 때 음성 및 DTMF 시간 제한을 구성할 수 있습니다. 봇과 대화를 시작할 때 세션 속성을 통해 시간 제한을 구성하고 필요한 경우 Lex 봇의 Lambda 함수에서 이를 덮어쓸 수 있습니다. Amazon Lex를 사용하면 의도 또는 봇에 대해 여러 개의 슬롯을 설정할 수 있습니다. 세션 속성이 의도 및 슬롯 수준에 적용되도록 지정할 수 있으므로 특정 유형의 입력을 수집하는 경우에만 속성이 설정되도록 지정할 수 있습니다. 예를 들어 계정 번호를 수집할 때는 날짜를 수집하는 경우보다 더 긴 시간 제한을 지정할 수 있습니다. 세션 속성 키에 와일드카드를 사용할 수 있습니다.

예를 들어 모든 의도의 모든 슬롯에 대한 음성 제한 시간을 4,000밀리초로 설정하려면 x-amz-lex:start-timeout-ms:*:*를 세션 속성 이름으로, 4000을 세션 속성 값으로 사용하여 세션 속성을 제공할 수 있습니다. 자세한 내용은 Amazon Lex 개발자 안내서사용자 입력 캡처를 위한 시간 제한 구성을 참조하세요.

대화 중 DTMF 입력 사용

Amazon Lex 봇은 대화 중에 음성 및 키패드 입력을 지원합니다. 봇은 키패드 입력을 DTMF 숫자로 해석합니다. 우물 정자 키(#)를 눌러 입력을 끝내거나 별표 키(*)를 사용하여 대화를 취소하도록 할 수 있습니다. 고객에게 우물 정자 키로 입력을 종료하도록 안내하지 않으면 Lex는 5초 동안 추가 키 입력을 기다립니다.

청구 및 서비스 할당량

AWS 다음과 같은 비용을 청구합니다.

다음과 같은 서비스 할당량에도 유의해야 합니다.

  • Amazon Chime SDK에는 PSTN 오디오 작업에 사용할 수 있는 최대 Amazon Lex 봇 수에 대한 서비스 할당량이 있습니다. StartBotConversation 자세한 내용은 일반 참조의 SIP 트렁킹 및 음성 할당량을 참조하십시오.AWS

  • Amazon Lex에는 Lex 봇당 최대 동시 음성 대화 수에 대한 서비스 할당량이 있습니다. Amazon Lex 서비스 팀에 문의하여 할당량을 늘릴 수 있습니다. 자세한 내용은 Amazon Lex 개발자 안내서의 Amazon Lex 지침 및 할당량을 참조하세요.

  • Amazon Polly에는 텍스트 응답 합성에 대한 서비스 할당량이 있습니다. Amazon Polly 서비스 팀에 문의하여 할당량을 늘릴 수 있습니다. Amazon Lex 서비스 할당량에 대한 자세한 내용은 Amazon Polly 개발자 안내서Amazon Polly의 할당량을 참조하세요.