AWS Lambda 함수 호출 - Amazon Connect

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

AWS Lambda 함수 호출

Amazon Connect 해당 시스템과 상호 작용할 수 있으며 흐름에서 다른 경로를 동적으로 사용할 수 있습니다. 이를 위해 를 호출합니다.AWS Lambda흐름에서 함수를 가져오고, 서비스를 호출하거나 다른 서비스와 상호 작용합니다.AWS데이터 저장소 또는 서비스 자세한 내용은 AWS Lambda 개발자 안내서를 참조하세요.

흐름에서 Lambda 함수를 호출하려면 다음 작업을 완료하십시오.

Lambda 함수 생성

런타임을 사용해 Lambda 함수를 생성하고 이 함수를 구성합니다. 자세한 내용을 알아보려면 다음 섹션을 참조하세요.Lambda 시작하기AWS Lambda개발자 안내서.

고객 센터와 동일한 리전에 Lambda 함수를 생성하는 경우 그다음 작업인 에 설명된 대로 Amazon Connect 콘솔을 사용해 Lambda 함수를 인스턴스에 추가하십시오.Amazon Connect 인스턴스에 Lambda 함수 추가. 이렇게 하면 Amazon Connect Connect에서 Lambda 함수를 호출하도록 허용하는 리소스 권한이 자동으로 추가됩니다. 그렇지 않으면 Lambda 함수가 다른 지역에 있는 경우 흐름 디자이너를 사용하여 흐름에 함수를 추가하고 를 사용하여 리소스 권한을 추가할 수 있습니다.추가 권한 사용명령, 주도자 포함connect.amazonaws.com및 Amazon Connect 인스턴스의 ARN. 자세한 내용을 알아보려면 다음 섹션을 참조하세요.에서 리소스 기반 정책 사용AWS LambdaAWS Lambda개발자 안내서.

Amazon Connect 인스턴스에 Lambda 함수 추가

흐름에서 Lambda 함수를 사용하려면 먼저 Amazon Connect 인스턴스에 추가해야 합니다.

인스턴스에 Lambda 함수를 추가합니다.

  1. 에서 Amazon Connect 콘솔을 엽니다.https://console.aws.amazon.com/connect/.

  2. 인스턴스 페이지에서 인스턴스 이름을 선택합니다.인스턴스 별칭column. 이 인스턴스 이름은 Amazon Connect Connect에 액세스하는 데 사용하는 URL에 표시됩니다.

  3. 탐색 창에서 [] 를 선택합니다.Flows.

  4. AWS Lambda 섹션에서 함수 드롭다운 상자를 사용하여 인스턴스에 추가할 함수를 선택합니다.

    작은 정보

    드롭다운에는 인스턴스와 동일한 리전에 있는 함수만 나열됩니다. 나열된 함수가 없는 경우 다음을 선택하십시오.새 Lambda 함수 생성그러면AWS Lambda콘솔.

    다른 지역 또는 계정에서 Lambda를 사용하려면AWS Lambda 함수 호출, 아래에서함수를 선택합니다.에서 Lambda ARN을 입력할 수 있습니다. 그런 다음 해당 Lambda에 해당하는 리소스 기반 정책을 설정하여 흐름에서 이를 호출할 수 있도록 합니다.

    를 호출하기lambda:AddPermission, 다음을 수행해야 합니다.

    • 주도자를 다음과 같이 설정합니다.커넥트.Amazonaws.com

    • 소스 계정을 인스턴스가 속한 계정으로 설정합니다.

    • 소스 ARN을 인스턴스의 ARN으로 설정합니다.

    자세한 내용을 알아보려면 다음 섹션을 참조하세요.함수에 다른 계정에 대한 액세스 권한 부여.

  5. 선택Lamda 함수 사용. 함수의 ARN이 Lambda Functions(Lambda 함수)에 추가되었는지 확인합니다.

이제 흐름에서 Lambda 함수를 참조할 수 있습니다.

흐름에서 Lambda 함수 호출

  1. 흐름을 열거나 만듭니다.

  2. 를 추가합니다.AWS Lambda 함수 호출블록 (내부)통합그룹) 을 그리드로 이동합니다. 블록과 브랜치를 연결합니다.

  3. AWS Lambda 함수 호출 블록 제목을 선택하여 해당 속성 페이지를 엽니다.

  4. 함수 선택 아래에서 인스턴스에 추가한 함수 목록 중에 선택합니다.

  5. (선택 사항) 함수 입력 파라미터 아래에서 파라미터 추가를 선택합니다. 호출할 때 Lambda 함수에 전송되는 키-값 페어를 지정할 수 있습니다. 또한 함수의 제한 시간 값을 지정할 수 있습니다.

  6. In타임아웃 (최대 8초)에서 Lambda 가 제한 시간이 될 때까지 기다리는 시간을 지정합니다. 이 시간이 지나면 해당 고객 응대는 오류 분기로 라우팅됩니다.

흐름에서 Lambda 함수를 호출할 때마다 진행 중인 연락과 관련된 기본 정보 집합과 에 정의된 추가 속성을 전달합니다.함수 입력 파라미터를 위한 단원InvokeAWS Lambda기능블록이 추가되었습니다.

다음은 Lambda 함수에 대한 예제 JSON 요청입니다.

{ "Details": { "ContactData": { "Attributes": { "exampleAttributeKey1": "exampleAttributeValue1" }, "Channel": "VOICE", "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "CustomerEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" }, "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK", "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX", "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "Queue": { "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "Name": "PasswordReset" }, "SystemEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" } }, "Parameters": {"exampleParameterKey1": "exampleParameterValue1", "exampleParameterKey2": "exampleParameterValue2" } }, "Name": "ContactFlowEvent" }

보고서는 두 부분으로 나뉩니다.

  • 연락처 데이터 - 모든 연락처마다 항상 로 전달됩니다. 일부 파라미터는 선택 사항입니다.

    이 섹션에는 이전에 연락처와 연결된 속성 (예:연락처 속성 설정플로우에서 차단하세요. 이 맵은 저장된 속성이 없으면 비어 있을 수 있습니다.

    다음 이미지는 속성 페이지에서 이러한 속성이 나타나는 위치를 보여 줍니다.연락처 속성 설정.

  • 파라미터 - Lambda 함수를 생성할 때 정의되었던 이 호출에만 적용되는 파라미터입니다. 다음 이미지는 이러한 매개변수가 의 속성 페이지에서 나타나는 위치를 보여줍니다.InvokeAWS Lambda기능블록.

호출 재시도 정책

흐름에서 Lambda 호출이 제한되면 해당 요청을 재시도합니다. 일반 서비스 장애(500 오류)가 발생하는 경우에도 재시도합니다.

동시의 호출이 오류를 반환하면 Amazon Connect 최대 8초간 최대 3회 재시도합니다. 이 때 흐름은 오류 분기로 이동합니다.

Lambda 재시도 방식에 대해 자세히 알아보려면 단원을 참조하십시오.의 오류 처리 및 자동 재시도AWSLambda.

여러 Lambda 함수를 호출합니다.

Lambda 함수가 실행되는 동안 고객은 아무 소리도 듣지 못합니다. 를 추가하는 것이 좋습니다.프롬프트 재생고객이 계속 참여하고 긴 상호 작용을 잘 알고 있도록 기능 사이를 차단합니다.

이벤트 구문 분석을 위해 Lambda 함수를 구성합니다.

Lambda 함수와 Amazon Connect 간에 속성 및 파라미터를 성공적으로 전달하려면 에서 전송된 JSON 요청을 올바르게 구문 분석하고 함수를 구성합니다.InvokeAWS Lambda기능블록 또는연락처 속성 설정적용해야 할 비즈니스 로직을 정의하십시오. JSON 구문 분석은 함수에 사용하는 런타임에 따라 다릅니다.

예를 들어, 다음 코드는 에 액세스하는 방법을 보여줍니다.exampleParameterKey1...에서InvokeAWS Lambda기능블록 및exampleAttributeKey1...에서연락처 속성 설정Node.JS 를 사용하여 차단합니다.

exports.handler = function(event, context, callback) { // Example: access value from parameter (Invoke AWS Lambda function) let parameter1 = event['Details']['Parameters']['exampleParameterKey1']; // Example: access value from attribute (Set contact attributes block) let attribute1 = event['Details']['ContactData']['Attributes']['exampleAttributeKey1']; // Example: access customer's phone number from default data let phone = event['Details']['ContactData']['CustomerEndpoint']['Address']; // Apply your business logic with the values // ... }

함수 응답 확인

Lambda 함수 응답은 간단한 문자열 맵이어야 합니다. 이 맵은 최대 32k일 수 있습니다. Lambda에 연결되지 않거나, 함수 예외가 발생하거나, 응답을 이해하지 못하거나, Lambda 함수가 제한 시간보다 오래 걸리면 흐름이Error레이블.

Lambda 함수에서 반환된 출력을 테스트하여 Amazon Connect Connect로 반환될 때 올바르게 사용되는지 확인합니다. 다음 예제에서는 Node.JS를 사용한 샘플 응답을 보여줍니다.

exports.handler = function(event, context, callback) { // Extract data from the event object let phone = event['Details']['ContactData']['CustomerEndpoint']['Address']; // Get information from your APIs let customerAccountId = getAccountIdByPhone(phone); let customerBalance = getBalanceByAccountId(customerAccountId); let resultMap = { AccountId: customerAccountId, Balance: '$' + customerBalance, } callback(null, resultMap); }

또한 이 예제에서는 Python을 사용한 예제 응답을 보여줍니다.

def lambda_handler(event, context): // Extract data from the event object phone = event['Details']['ContactData']['CustomerEndpoint']['Address'] // Get information from your APIs customerAccountId = getAccountIdByPhone(phone) customerBalance = getBalanceByAccountId(customerAccountId) resultMap = { "AccountId": customerAccountId, "Balance": '$%s' % customerBalance }

함수에서 반환된 출력은 영숫자, 대시 및 밑줄 문자만 포함하는 키/값 페어의 플랫 객체여야 합니다. 중첩되고 복잡한 객체는 지원되지 않습니다. 반환되는 데이터의 크기는 32KB 이하의 UTF-8 데이터여야 합니다.

다음 예제는 Lambda 함수의 JSON 출력을 보여줍니다.

{ "AccountId": "a12345689", "Balance": "$1000" }

간단한 키-값 페어라면 어떤 결과라도 반환할 수 있습니다.

Lambda 함수 응답 사용

흐름에서 함수 응답을 사용하는 방법에는 두 가지가 있습니다. Lambda에서 반환된 변수를 직접 참조하거나 함수에서 반환된 값을 연락처 속성으로 저장한 다음 저장된 속성을 참조할 수 있습니다. Lambda 함수의 응답에 외부 참조를 사용하면 참조는 항상 가장 최근에 호출된 함수로부터 응답을 받습니다. 후속 함수가 호출되기 전에 함수의 응답을 사용하려면 응답을 연락처 속성으로 저장하거나 다음 함수에 파라미터로 전달해야 합니다.

1. 변수에 직접 액세스

변수에 직접 액세스하면 흐름 블록에서 변수를 사용할 수 있지만 연락처 레코드에는 변수가 포함되지 않습니다. 흐름 블록에서 이러한 변수에 직접 액세스하려면 다음 블록을 추가합니다.InvokeAWS Lambda기능를 차단한 후 예제와 같이 속성을 참조합니다.

Name - $.External.Name Address - $.External.Address CallerType - $.External.CallerType

소스 속성에 지정된 이름이 Lambda에서 반환된 키 이름과 일치하는지 확인합니다.

2. 변수를 연락처 속성으로 저장

변수를 연락처 속성으로 저장하면 흐름 전체에서 사용할 수 있으며 연락처 레코드에 포함됩니다.

반환된 값을 연락처 속성으로 저장한 다음 참조하려면 a를 사용하십시오.연락처 속성 설정이후 흐름을 차단하세요InvokeAWS Lambda기능블록. 선택사용,외부의 경우유형. 사용 중인 예제에 따라 를 선택합니다.대상 속성 사용MyAccountId, 그리고 설정하기속성AccountId를 위해 동일한 작업을 수행합니다.MyBalancebalance.

Address를 소스 속성으로 추가하고 returnedContactAddress대상 키로 사용합니다. 그런 다음 CallerType소스 속성으로 추가하고 returnedContactType대상 키에 사용합니다.

소스 외부 속성에 지정된 이름이 Lambda에서 반환된 키 이름과 일치하는지 확인합니다.

자습서: Lambda 함수를 생성하고 흐름에서 호출

1단계: Lambda 예제 생성

  1. AWS Management Console에 로그인하고 AWS Lambdahttps://console.aws.amazon.com/lambda/에서 콘솔을 엽니다.

  2. InAWS Lambda, 선택함수 생성.

  3. 선택새로 작성을 선택합니다., 아직 선택하지 않은 경우 기본 정보(Basic information)에서 함수 이름(Function name)MyFirstConnectLambda을 입력합니다. 다른 모든 옵션에는 기본값을 사용하겠습니다.

  4. 함수 생성(Create function)을 선택합니다.

  5. 에서코드 소스박스, 인index.js탭에서 코드 편집기에서 템플릿 코드를 삭제합니다.

  6. 다음 그림과 같이 다음 코드를 복사하여 코드 편집기에 붙여 넣습니다.

    exports.handler = async (event, context, callback) => { // Extract information const customerNumber = event.Details.ContactData.CustomerEndpoint.Address; const companyName = event.Details.Parameters.companyName; // Fetch data const balance = await fetchBalance(customerNumber, companyName); const support = await fetchSupportUrl(companyName); // Prepare result const resultMap = { customerBalance: balance, websiteUrl: support } callback(null, resultMap); } async function fetchBalance(customerPhoneNumber, companyName) { // Get data from your API Gateway or Database like DynamoDB return Math.floor(Math.random() * 1000); } async function fetchSupportUrl(companyName) { // Get data from your API Gateway or Database like DynamoDB return 'www.GGG.com/support'; }

    이 코드는 CustomerBalance에 대한 무작위 결과를 생성합니다.

  7. 배포(Deploy)를 선택합니다.

  8. 선택한 후배포, 선택테스트테스트 편집기를 실행합니다.

  9. 에서테스트 이벤트 설정대화 상자, Sestination새로운 이벤트 생성. 용이벤트 이름를 입력합니다.ConnectMock테스트 이름으로

  10. 에서이벤트 JSON상자에서 샘플 코드를 삭제하고 대신 다음 코드를 입력합니다.

    { "Details": { "ContactData": { "Attributes": {}, "Channel": "VOICE", "ContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "CustomerEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" }, "InitialContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "InitiationMethod": "INBOUND | OUTBOUND | TRANSFER | CALLBACK", "InstanceARN": "arn:aws:connect:aws-region:1234567890:instance/c8c0e68d-2200-4265-82c0-XXXXXXXXXX", "PreviousContactId": "4a573372-1f28-4e26-b97b-XXXXXXXXXXX", "Queue": { "ARN": "arn:aws:connect:eu-west-2:111111111111:instance/cccccccc-bbbb-dddd-eeee-ffffffffffff/queue/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "Name": "PasswordReset" }, "SystemEndpoint": { "Address": "+1234567890", "Type": "TELEPHONE_NUMBER" } }, "Parameters": { "companyName": "GGG" } }, "Name": "ContactFlowEvent" }
  11. 저장을 선택합니다.

  12. 테스트를 선택합니다. 다음 이미지와 유사한 결과가 출력되어야 합니다.

    귀하의 잔액은 달라질 수 있습니다. 코드는 난수를 생성합니다.

2단계: Amazon Connect 커넥트에 Lambda 추가

  1. Amazon Connect 콘솔로 이동합니다.https://console.aws.amazon.com/connect/.

  2. Amazon Connect 인스턴스 별칭을 선택합니다.

  3. 탐색 메뉴에서 를 선택합니다.Flows.

  4. 에서AWS Lambda섹션, 사용Lambda 함수드롭다운 상자 선택MyFirstConnectLambda.

  5. 선택Lamda 함수 사용.

3단계: 고객 응대 흐름 생성

다음 이미지는 이 절차의 단계를 사용하여 구축하려는 흐름의 예입니다.

  1. https://에서 고객 센터에 로그인하십시오.인스턴스 이름.my.connect.aws/.

  2. 탐색 메뉴에서 를 선택합니다.라우팅,Flows,고객 응대 흐름 생성.

  3. 를 끌기연락처 속성 설정다음 그림과 같이 그리드의 속성 페이지를 구성합니다.

    1. 대상 유형=사용자 정의.

    2. 대상 속성=회사 이름.

    3. 선택텍스트 사용. =GGG.

    4. 저장(Save)을 선택합니다.

  4. 를 끌기프롬프트 재생다음 이미지와 같이 그리드에 블록을 구성합니다.

    1. 선택Text-to-speech 또는 채팅 텍스트,직접 만들기, 및 세트로 해석SSML. 말할 텍스트에 대한 다음 텍스트를 상자에 입력합니다.

      Hello, thank you for calling $.Attributes.companyName inc.

    2. 저장(Save)을 선택합니다.

  5. 다른 다른 D프롬프트 재생다음 이미지와 같이 그리드에 블록을 구성합니다.

    1. 선택Text-to-speech 또는 채팅 텍스트,직접 만들기, 및 세트로 해석Text. 말할 텍스트에 대한 다음 텍스트를 상자에 입력합니다.

      Please try again later.

    2. 저장(Save)을 선택합니다.

  6. 를 끌기AWS Lambda 함수 호출다음 이미지에 나온 것처럼 그리드의 속성 페이지를 구성합니다.

    1. 함수를 선택합니다., 선택MyFirstConnectLambda드롭다운에서.

    2. 선택파라미터 사용. In함수 입력 파라미터, 선택사용.

    3. 대상 키를 입력합니다.회사 이름. (이것은 람다로 전송됩니다.)

    4. 유형, ST사용자 정의.

    5. 속성를 입력합니다.회사 이름.

    6. 저장(Save)을 선택합니다.

  7. 를 끌기연락처 속성 설정다음 이미지에 나온 것처럼 그리드의 속성 페이지를 구성합니다.

    1. 대상 유형=사용자 정의. 대상 속성=MyBalance.

    2. 선택사용.

    3. 유형=외부.

    4. 속성=고객 잔액. 이것이 Lambda 결과입니다.

    5. 다른 속성 추가를 선택합니다.

    6. 대상 속성=내 URL.

    7. 속성 사용을 선택합니다. 유형=외부.

    8. 속성=WebsiteURL. 이것이 Lambda 결과입니다.

    9. 저장(Save)을 선택합니다.

  8. 를 끌기프롬프트 재생다음 이미지에 나온 것처럼 그리드의 속성 페이지를 구성합니다.

    1. 선택Text-to-speech 또는 채팅 텍스트, 및 세트로 해석SSML. 다음 텍스트를 상자에 입력합니다.

      Your remaining balance is <say-as interpret-as="characters">$.Attributes.MyBalance</say-as>.

      Thank you for calling $.Attributes.companyName.

      Visit $.Attributes.MyURL for more information.

    2. 저장(Save)을 선택합니다.

  9. 를 끌기연결 해제/중단블록에 그리드를 차단합니다.

  10. 흐름이 이 절차의 맨 위에 표시된 이미지처럼 보이도록 모든 블록을 Connect.

  11. EnterMyFirstConnectFlow이름으로 를 선택합니다.게시.

  12. 탐색 메뉴에서 를 선택합니다.채널,전화 번호.

  13. 해당 전화 번호를 선택합니다.

  14. SelectMyFirstConnectFlow그리고 선택하세요Save.

이제 사용해 보십시오를 시도 번호를 호출합니다. 인사말 메시지, 잔액 및 방문할 웹 사이트를 들어야 합니다.