CTI API

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기18분
  • CTI API는 CTI(컴퓨터 전화 통합 시스템) 제공자가 클라우드 콜 센터 프레임워크와 상호작용할 수 있는 엔드포인트를 제공합니다.

    통합자는 이 API를 사용하여 다음을 수행할 수 있습니다.
    • 클라우드 콜 센터 프레임워크 내에서 사용자 지정 작업 핸들러를 사용하여 CTI 작업을 호출합니다.
    • CCP 공급자의 이벤트를 인스턴스로 ServiceNow 전달합니다.
    • 지정된 에이전트 통화에 대한 녹취록 및 녹음을 렌더링합니다.

    이 API는 네임스페이스에서 sn_cti_core 실행됩니다. 이 API에 액세스하려면 먼저 클라우드 콜 센터 코어(sn_cti_core) 애플리케이션을 설치해야 합니다. 이 설치에 대한 자세한 내용은 클라우드 콜 센터 애플리케이션 설치를 참조하십시오.

    클라우드 콜 센터에 대한 자세한 내용은 클라우드 콜 센터를 참조하십시오.

    CTI_API - GET /sn_cti_core/cti_api/call_analysis/{interaction_sys_id}

    지정된 에이전트 통화에 대한 녹취록 및 녹음을 렌더링합니다.

    구성요소는 에이전트 및 관리자 작업 공간에서 이 엔드포인트를 사용하여 연결된 에이전트 통화 녹취 및 기록을 렌더링합니다. 이 엔드포인트에 액세스하려면 호출에 전달하는 사용자 자격 증명에 workspace_user, interaction_agent 또는 관리자 역할이 있어야 합니다.

    이 엔드포인트에는 해당 확장점 sn_cti_core이 있습니다. CTICallAnalysisExtractor - 호출 데이터 렌더링을 담당합니다. 기본 시스템은 Amazon Connect에 대한 구현을 제공합니다. 구현이 다른 경우 이 엔드포인트를 활용하기 전에 이 확장점을 사용자 지정해야 합니다. 또한 이 엔드포인트에서 반환되는 응답 매개 변수는 이 확장점의 구현에 해당합니다. 확장점 구현에 대한 자세한 내용은 확장점을 사용하여 애플리케이션 기능 확장클라우드 콜 센터의 확장점을 참조하십시오.

    URL 형식

    기본 URL: /api/sn_cti_core/cti_api/call_analysis/{interaction_sys_id}

    지원되는 요청 매개변수

    표 1. 경로 매개변수
    이름 설명
    interaction_sys_id 녹취 및 기록에 렌더링할 에이전트 통화 Sys_id입니다. 상호작용 [interaction] 테이블에 있습니다.

    데이터 유형: 문자열

    표 2. 쿼리 매개변수
    이름 설명
    없음
    표 3. 요청 본문 매개변수(XML 또는 JSON)
    이름 설명
    없음

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.

    표 4. 요청 헤더
    헤더 설명
    수용 응답 본문의 데이터 형식입니다. 지원되는 유형은 application/json 또는 application/xml입니다.

    기본값: application/json

    표 5. 응답 헤더
    헤더 설명
    없음

    상태 코드

    다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.

    표 6. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    다양 sn_cti_core의 구현에 따라 다릅니다. CTICallAnalysisExtractor 확장점입니다.

    응답 본문 매개변수(JSON 또는 XML)

    이름 설명
    sn_cti_core의 구현에 따라 다릅니다. CTICallAnalysisExtractor 확장점입니다.

    cURL 요청

    다음 예제에서는 특정 에이전트 통화의 렌더링을 요청합니다.

    curl -X POST \
      https://instance.servicenow.com/api/sn_cti_core/cti_api/call_analysis/88f2d9b7dbd7101058f05214dc96192a \
      -H 'Accept: application/json' \
      -H 'Content-Type: application/json' \
      -u 'username':'password'

    sn_cti_core에 지정된 처리를 기반으로 렌더링된 호출 데이터입니다. CTICallAnalysisExtractor 확장점입니다.

    {
      "result":{
        "status":"success",
        "recordingData":{
          "recordingUrls":[
            "https://instance.awsapps.com/connect/get-recording?format=wav&callLegId=7626da7f-e083-4085-b77a-85bfea18fe24",
            "https://s3.console.aws.amazon.com/s3/object/connect-60f8665899b6/connect/instance/CallRecordings/2020/09/23/7626da7f-e083-4085-b77a-85bfea18fe24_20200923T18%3A24_UTC.wav"
          ],
          "status":"success"
        },
        "transcriptData":{
          "transcript":[
            {
              "content":"Okay. Hello? Mhm. Okay, okay.",
              "beginOffsetMillis":3940,
              "participantId":"CUSTOMER",
              "additionalInfo":[
                {
                  "value":"Neutral",
                  "highlightColor":"info"
                }
              ]
            },
            {
              "content":"bye.",
              "beginOffsetMillis":26040,
              "participantId":"AGENT",
              "additionalInfo":[
                {
                  "value":"Neutral",
                  "highlightColor":"info"
                }
              ]
            }
          ],
          "sentimentTrend":[
            {
              "x":0,
              "y":0
            },
            {
              "x":3939,
              "y":0
            },
            {
              "x":3940,
              "y":0
            },
            {
              "x":26450,
              "y":0
            }
          ],
          "sentimentPercents":{
            "positive":0,
            "neutral":100,
            "negative":0
          },
          "talkTimePercents":{
            "agent_talk_time":2.515491747959998,
            "customer_talk_time":28.82998956991226,
            "non_talk_time":68.65451868212774
          },
          "metadata":{
            "ctiVendor":"amazon_connect",
            "customerId":"Alice Smith",
            "agentId":"Piper Epps"
          },
          "status":"success"
        },
        "metadata":{
          "callMonitorURL":"https://instance.awsapps.com/connect/real-time-metrics?tableType=user",
          "recordingState":"success",
          "transcriptState":"success",
          "emptyStateImages":{
            "in_progress":"call_in_progress.png",
            "processing":"processing_post_call.png",
            "unavailable":"transcript_failed.png"
          }
        }
      }
    }

    CTI_API - POST /sn_cti_core/cti_api/providers/{provider}/components/{component}/versions/{version}

    클라우드 콜 센터 프레임워크 내에서 지정된 운영 핸들러를 사용하여 컴퓨터 전화 통합 시스템(CTI) 운영을 호출합니다.

    이 엔드포인트를 호출하기 전에 공급자 구성 레코드 및 연결된 메시지 변환기를 만들어야 합니다. 이 작업은 일반적으로 클라우드 콜 센터 프레임워크가 인스턴스에서 처음 구현될 때 수행됩니다. 자세한 내용은 클라우드 콜 센터의 제공자 구성을 참조하세요.

    메시지 변환기는 이 끝점의 요청 본문에 지정된 페이로드를 구문 분석하고 연결된 CTIOperationRequest 개체에 대한 페이로드 데이터를 설정하는 작업을 담당합니다. 그런 다음 작업 처리기는 CTIOperationRequest 개체에서 정보를 가져오고 데이터를 사용하여 요청된 작업을 처리해야 합니다.

    메시지 변환기가 전달된 페이로드의 구문 분석을 완료한 후 클라우드 콜 센터 프레임워크는 지정된 작업 핸들러를 인스턴스화합니다. 운영 처리기는 CTIOperationResponse CTIOperationResponse - 범위가 지정됨, 전역 API GET 메서드를 사용하여 요청된 작업을 처리하는 데 필요한 CTIOperationRequest 개체에서 필요한 정보를 가져옵니다.

    호출할 작업 처리기와 관련 매개 변수를 이 끝점 호출의 요청 본문에서 정의합니다. 지정된 운영 핸들러는 운영 핸들러 [sn_cti_operation_handler] 테이블 내의 인스턴스에 정의되어야 합니다. 작업 처리기 생성에 대한 자세한 내용은 자동화된 호출자 상호 작용에 대한 연락처 흐름 구성을 참조하세요.

    ServiceNow 기본 시스템은 Amazon Connect Connect에 연결할 수 있는 작업 핸들러 및 메시지 변환기를 제공합니다. Amazon Connect 내에서 고객 응대 흐름을 구축할 때 Amazon 서비스와 인스턴스 간에는 두 가지 통합 지점이 ServiceNow 있습니다.
    • AWS(Amazon Web Services) Lambda 프록시(AWS Lambda 함수 호출)
    • AWS Lex 봇(고객 입력 가져오기)
    작업 처리기 [sn_cti_operation_handler] 및 제공자 메시지 변환기 [sn_cti_provider_msg_transormer] 테이블에서 이러한 통합 지점에 사용 가능한 작업 핸들러 및 메시지 변환기를 찾을 수 있습니다.

    또한 호출에 전달하는 사용자 자격 증명에는 이 엔드포인트에 액세스할 수 있는 sn_cti_core.service 또는 관리자 역할이 있어야 합니다.

    클라우드 콜 센터에 대한 자세한 내용은 클라우드 콜 센터를 참조하십시오.

    URL 형식

    기본 URL: /api/sn_cti_core/cti_api/providers/{provider}/components/{component}/versions/{version}

    지원되는 요청 매개변수

    표 7. 경로 매개변수
    이름 설명
    구성요소 제공자 구성요소의 레이블(예: sn_aws_connect_lambda_proxy_component 또는 sn_aws_connect_lex_intent_processor_component)입니다. 제공자 구성요소 [sn_cti_provider_component] 테이블의 구성요소 필드에 있습니다.

    데이터 유형: 문자열

    제공자 CTI 제공자 기록의 Sys_id입니다. 제공자 구성요소 [sn_cti_provider_component] 테이블에 있습니다.

    데이터 유형: 문자열

    버전 지정된 제공자 기록의 버전입니다. 제공자 구성요소 [sn_cti_provider_component] 테이블의 버전 필드에 있습니다.

    데이터 유형: 문자열

    표 8. 쿼리 매개변수
    이름 설명
    없음
    표 9. 요청 본문 매개변수(XML 또는 JSON)
    이름 설명
    호출되는 작업 처리기와 해당 특정 구현에 따라 달라집니다.

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.

    표 10. 요청 헤더
    헤더 설명
    수용 응답 본문의 데이터 형식입니다. 지원되는 유형은 application/json 또는 application/xml입니다.

    기본값: application/json

    표 11. 응답 헤더
    헤더 설명
    없음

    상태 코드

    다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.

    표 12. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    다양 호출되는 작업과 특정 구현에 따라 달라집니다.

    응답 본문 매개변수(JSON 또는 XML)

    이름 설명
    호출되는 작업과 특정 구현에 따라 달라집니다.

    cURL 요청

    다음 예제에서는 sn_aws_connect_lambda_proxy_component 구성 요소를 통해 interactionEvent 작업 처리기를 호출합니다.

    curl -X POST \
      https://instance.servicenow.com/api/sn_cti_core/cti_api/providers/c4b12aa6e700001034b36584c2f6a9bc/components/sn_aws_connect_lambda_proxy_component/versions/v1.0 \
      -H 'Accept: application/json' \
      -H 'Content-Type: application/json' \
      -u 'username':'password'
      -d '{
      "context": {
        "callbackWaitsForEmptyEventLoop": true,
        "functionVersion": "$LATEST",
        "functionName": "snRALJNLambda",
        "memoryLimitInMB": "128",
        "logGroupName": "/aws/lambda/snRALJNLambda",
        "logStreamName": "2020/09/24/[$LATEST]b604a9579ef548a1b3f6b6739d19e1d9",
        "invokedFunctionArn": "arn:aws:lambda:us-west-2:028738656045:function:snRALJNLambda",
        "awsRequestId": "b528a5a8-bb0b-4ec8-8e76-aa568f68fdc8"
      },
      "event": {
        "Details": {
          "ContactData": {
            "Attributes": {
              "$accepted_terms": "true"
            },
            "Channel": "VOICE",
            "ContactId": "8fe7c107-78df-4eec-85b3-91c6dcb8e912",
            "CustomerEndpoint": {
              "Address": "+16693504374",
              "Type": "TELEPHONE_NUMBER"
            },
            "Description": null,
            "InitialContactId": "8fe7c107-78df-4eec-85b3-91c6dcb8e912",
            "InitiationMethod": "INBOUND",
            "InstanceARN": "arn:aws:connect:us-west-2:028738656045:instance/d276bd83-6305-4f63-abee-e66fd5bdf503",
            "LanguageCode": "en-US",
            "MediaStreams": {
              "Customer": {
                "Audio": null
               }
             },
             "Name": null,
             "PreviousContactId": "8fe7c107-78df-4eec-85b3-91c6dcb8e912",
             "Queue": {
               "ARN": "arn:aws:connect:us-west-2:028738656045:instance/d276bd83-6305-4f63-abee-e66fd5bdf503/queue/0f17b62d-d493-439a-88c6-42db0d0e652f",
               "Name": "BasicQueue",
               "OutboundCallerId": {
                 "Address": "+18335441399",
                 "Type": "TELEPHONE_NUMBER"
               }
             },
             "References": {},
             "SystemEndpoint": {
               "Address": "+18335441399",
               "Type": "TELEPHONE_NUMBER"
             }
           },
           "Parameters": {
             "sn_component": "sn_aws_connect_lambda_proxy_component",
             "sn_operation": "interactionEvent"
           }
         },
         "Name": "ContactFlowEvent"
       }
     }'

    interactionEvent 작업 핸들러 호출에 대한 응답의 예입니다.

    {
      "result": {
        "snc_user_first_name": "Jane",
        "snc_user_last_name": "Doe",
        "snc_user_sys_id": "bbe591bfdb5710100231dbdb5e9619e3",
        "snc_user_vip": "false",
        "interactionTable": "interaction",
        "interactionId": "973b07c8dbe710100231dbdb5e961908",
        "statusCode": 200,
        "message": "success"
      }
    }

    CTI_API - POST /sn_cti_core/cti_api/softphone/sources/{source}/actor/{actor}/events/{event}

    CCP(연락처 제어판) 제공자의 이벤트를 인스턴스로 ServiceNow 전달합니다.

    일반적으로 CCP UI 페이지에서 이 엔드포인트를 호출하여 에이전트의 현재 상태 변경 또는 통화 완료 시 레코드 상태 변경과 같은 다양한 작업(이벤트)을 수행합니다. 이 엔드포인트에 액세스하려면 호출에 전달하는 사용자 자격 증명에 sn_openframe_user 또는 관리자 역할이 있어야 합니다.

    이 엔드포인트에는 해당 확장점 sn_cti_core이 있습니다. SoftPhoneEventSink - 각 이벤트에 대해 이 엔드포인트 호출에서 실제로 수행하는 작업을 결정합니다. 기본 시스템은 Amazon Connect 이벤트에 대한 구현을 제공합니다. 구현이 다른 경우 이 엔드포인트를 활용하기 전에 이 확장점을 사용자 지정해야 합니다. 이 끝점의 요청 본문 및 응답 형식은 이 확장점의 구현에 해당합니다. 확장점 구현에 대한 자세한 내용은 확장점을 사용하여 애플리케이션 기능 확장클라우드 콜 센터의 확장점을 참조하십시오.

    URL 형식

    기본 URL: /api/sn_cti_core/cti_api/softphone/sources/{source}/actor/{actor}/events/{event}

    지원되는 요청 매개변수

    표 13. 경로 매개변수
    이름 설명
    배우 에이전트 또는 external_system와 같은 이벤트의 방출자입니다. 구체적인 값은 구현자에 의해 결정됩니다.

    데이터 유형: 문자열

    이벤트 컴퓨터 전화 통합 시스템(CTI) 벤더의 시스템에 있는 이벤트의 이름입니다(예: 사용 가능 또는 오프라인). 구체적인 값은 구현자에 의해 결정되지만 공백이나 특수 문자가 없는 단일 단어/구여야 합니다.

    데이터 유형: 문자열

    sources 벤더의 소프트폰 UI 페이지 식별자(예: aws_ccp)입니다.

    데이터 유형: 문자열

    표 14. 쿼리 매개변수
    이름 설명
    없음
    표 15. 요청 본문 매개변수(XML 또는 JSON)
    이름 설명
    구현에 따라 다릅니다. sn_cti_core 구현에 따라 결정됩니다. SoftPhoneEventSink 확장점입니다.

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 이 작업에 고유한 방식으로 적용됩니다. REST API에서 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하세요.

    표 16. 요청 헤더
    헤더 설명
    수용 응답 본문의 데이터 형식입니다. 지원되는 유형은 application/json 또는 application/xml입니다.

    기본값: application/json

    표 17. 응답 헤더
    헤더 설명
    없음

    상태 코드

    다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.

    표 18. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.

    응답 본문 매개변수(JSON 또는 XML)

    이름 설명
    없음

    cURL 요청

    다음 예제에서는 AgentStatusOne 이벤트 정보를 ServiceNow 인스턴스에 전달합니다. 요청 본문 매개 변수는 sn_cti_core 구현에 따라 결정됩니다. SoftPhoneEventSink 확장점입니다.

    curl -X POST \
      https://instance.servicenow.com/api/sn_cti_core/cti_api/softphone/sources/aws_ccp/actor/agent/events/AgentStatusOne \
      -H 'Accept: application/json' \
      -H 'Content-Type: application/json' \
      -u 'username':'password'
      -d '{
       "agent":{
          "sys_id":"doe.john@snc",
          "status":{
             "agentStateARN":null,
             "type":"not_routable",
             "name":"AgentStatusOne",
             "startTimestamp":"2020-09-24T21:43:20.957Z"
          }
       },
       "window":{
          "location":{
             "href":"https://instance.servicenow.com/sn_cti_amzn_cct_aws_ccp.do?id=44106eabdb5710100231dbdb5e96191d",
             "search":"?id=44106eabdb5710100231dbdb5e96191d"
          }
       },
       "aws":{
          "connect":{
             "config":{
                "ccpHost":"instance.awsapps.com",
                "ccpUrl":"https://instance.awsapps.com/connect/ccp-v2/",
                "loginPopup":true,
                "audioRecordingUrlPrefix":"https://instance.awsapps.com/connect/get-recording?format=wav&callLegId=",
                "softphone":{
                   "allowFramedSoftphone":true
                },
                "region":"us-west-2"
             }
          }
       }
    }'

    응답 매개 변수가 반환되지 않습니다.

    {
      "result": {}
    }