SNIPPET 작업에서 API 호출 수행

SNIPPET 작업에서 REST 또는 SOAP API 호출을 수행할 수 있습니다. 이는 Studio 스크립트에서 API 호출을 수행하는 지원되는 방법 중 하나입니다. SOAP 웹 서비스에 연결하거나 API 호출에 XML이 포함되어 있는 경우 사용해야 하는 방법입니다. 하지만 RESTful API 호출 또는 JSON을 포함한 호출 수행에 권장하는 방법은 REST API 작업을 사용하는 것입니다.

응답에 HTTP 상태 코드가 표시되는 것은 물론, -1 코드도 표시될 수 있습니다. 응답에 오류가 발생했음을 나타내는 내부 코드입니다.

SNIPPET 작업을 사용하여 RESTful 웹 서비스에 연결하기

Studio 스크립트를 사용하여 Snippet 작업에서 REST 프록시를 사용하는 RESTful API에 연결할 수 있습니다. GetRestProxy() 함수로 이 서비스에 액세스할 수 있습니다. REST 프록시를 사용하면 스크립트가 원격 웹 서버와 상호작용할 수 있습니다. REST 프록시는 이를 수행하기 위해 사용할 수 있는 속성과 함수를 제공합니다. 속성과 기능은 이 섹션의 이후 내용에서 설명합니다. CXone플랫폼을(를) 사용하면 REST API가 최대 32KB의 데이터를 반환할 수 있습니다. 이 제한플랫폼 수준에서 적용되며, 엄격하게 적용됩니다.

REST 프록시는 동적 데이터 개체를 사용해야 합니다. 동적 데이터 유형을 사용하면 스크립트가 형식이 XML 및 JSON인 응답을 작업할 수 있습니다. 동적 데이터 개체는 이러한 형식으로 데이터를 수신하고 이를 읽도록 허용할 수 있습니다. 또한 XML 또는 JSON으로 변환할 수 있는 개체를 동적으로 생성할 수 있습니다. 이러한 기능은 RESTful API를 사용할 때 반드시 필요합니다.

REST 프록시를 사용하려면 스크립트에 Snippet 작업을 추가하고 Snippet editor 창을 엽니다. 다음 구문을 사용하여 GetRESTProxy() 함수를 호출합니다.

ASSIGN proxy = GetRESTProxy() 
 proxy.<property | function>([parameters]) 

<property | function>의 경우, 다음 섹션에서 설명하는 속성 및 함수를 선택합니다.

속성

속성 세부사항
StatusCode

MakeRestRequest()에 대한 호출 후 HTTP 상태 코드를 보유합니다. 이 속성은 수정할 수 없습니다. 이 함수가 실패하면 상태 코드를 더 이상 보유하지 않습니다.

StatusDescription MakeRestRequest()에 대한 호출 후 HTTP 상태 설명을 보유합니다. 이 속성은 수정할 수 없습니다.
ContentType

기본 콘텐츠 유형 헤더를 재정의할 수 있게 됩니다. 기본값은 application/x-www-form-urlencoded입니다.

거는 통화에 따라 헤더를 변경해야 할 수 있습니다. 예를 들어 JSON을 전송하는 경우에는 이를 application/json(으)로 변경합니다. 이 속성을 수정해야 합니다.

ProxyTimeoutSeconds 요청 타임아웃을 변경할 수 있게 됩니다. 기본값은 10초입니다. 이 속성을 수정해야 합니다.

기능

다음 테이블에서는 RESTful API에 연결할 때 사용할 수 있는 함수에 관한 정보를 제공합니다. 문자열을 인코딩 및 해싱할 수 있는 추가 REST 프록시 함수가 있습니다.

기능 세부사항
MakeRestRequest(p1, p2, p3, p4)

다음과 같이 지정된 URL에 HTTP 요청을 수행합니다.

  • P1: 요청의 URL이며 문자열입니다.
  • P2: API 호출 페이로드며 문자열입니다.
  • P3: 헤더와 응답 구문 분석 선택기입니다. 숫자 또는 문자열입니다.
    • 0: 애플리케이션/json
    • 1: 텍스트/xml
    • 2: 애플리케이션/json (응답 본문 무시)
    • 3: 텍스트/xml (응답 본문 무시)
      • "JSON" - 애플리케이션/json
      • "XML - 텍스트/xml
  • P4: REST API 동사, 문자열
AddHeader HTTP 요청에 사용자 정의 헤더를 추가합니다.
ClearHeaders AddHeader(으)로 추가된 모든 사용자 정의 헤더를 지웁니다.

ASSIGN proxy = GetRESTProxy()
ASSIGN proxy.ContentType = "application/json"
ASSIGN url = "https://catfact.ninja/fact"
ASSIGN verb = "GET"
ASSIGN result = proxy.MakeRestRequest(url,payload,'JSON',verb)

 

ASSIGN restProxy=GetRESTProxy()

restProxy.AddHeader("x-api-key", "qwer") //Assigning incorrect header for demonstration purposes
restProxy.ClearHeaders()
restProxy.AddHeader("x-api-key", "asdf")
ASSIGN restProxy.ProxyTimeoutSeconds = "2"
ASSIGN restProxy.ContentType = "application/json"

ASSIGN uri = "http://postman-echo.com/post"

DYNAMIC beowulfCharacteristics
ASSIGN beowulfCharacteristics.name = "Beowulf"
ASSIGN beowulfCharacteristics.occupation= "Hero" 
ASSIGN beowulfCharacteristics.foe = "Grendel"
ASSIGN payloadJSON = "{beowulfCharacteristics.asJSON()}

SNIPPET 작업을 사용하여 SOAP 웹 서비스에 연결하기

SOAP 기반 웹 서비스를 Studio 스크립트에 사용할 수 있습니다. WSDL 또는 Proxy DLL을 Studio가져오기해야 합니다. 가져온 DLL은 NICE CXone에 의해 승인되어야 합니다. DLL을 승인한 이후에는 CXone시스템의 파일 저장소 루트에 저장됩니다.

SOAP 웹 서비스를 사용하려면 NICE CXone의 지원이 필요합니다. 자세한 내용은 CXone 계정 담당자에게 문의하십시오.

Studio 스크립트에서 SOAP 기반 웹 서비스를 사용하려는 경우에는 스니펫을 생성해야 합니다. 스크립트에 Snippet 작업을 추가합니다. 생성하고 사업부의 파일 저장소에 저장한 프록시 DLL 파일의 이름을 지정하는 USES Snippet 편집기 창에서 추가합니다.

다음 스니펫은 Studio 스크립트로 SOAP 기반 웹 서비스를 사용하는 예시입니다.

USES "sf.dll"
cStart="{now}"
sforce=new SforceService()
session=new SessionHeader()
loginResult=sforce.login("demo@nice.com",password6")
sforce.sessionheadervalue=session
session.sessionid=loginResult.sessionid
sforce.url=loginresult.serverUrl

t=new Task()
t.ActivityDate=#"8/20/2050"
t.Description="Call placed by {first }{Last}."
t.Subject="Call @{cStart}"
t.Status="Completed"
t.CallType="Outbound"
t.OwnerId=SF_Agent_ID
t.ReminderDateTime="{cStart}"

SWITCH Type
{
   CASE "CON" { t.WhoId=SF_Obj_ID }
   CASE "LEA" { t.WhoId=SF_Obj_ID }
   CASE "ACC" { t.WhatId=SF_Obj_ID }
   CASE "OPP" { t.WhatId=SF_Obj_ID }
   CASE "CAS" { t.WhatId=SF_Obj_ID }
}
SaveResult=sforce.create(t)
	

REST 래퍼로 SOAP 호출 수행

이 옵션을 사용하면 REST API 방법론을 사용하여 SOAP 기반 웹 서비스를 호출할 수 있습니다. 각 서비스는 구축된 방식에 따라 다른 방식으로 응답합니다. 호출하는 서비스에 작동하도록 예시 코드를 수정해야 할 수 있습니다.

사용하는XML은 SNIPPET 작업에서 사용하는 경우 큰따옴표를 포함하면 안 됩니다. 대신 다음과 같은 두 가지 대안 중 한 가지 방법을 사용할 수 있습니다.

  • 각 따옴표를 {char(34)} 기호로 변경합니다. 그러면 따옴표 문자가 직접 문자열에 입력됩니다. 이 옵션은 이 섹션 2단계 이후의 첫 번째 예시에서 설명합니다.
  • 각 큰따옴표를 작은 따옴표( ' )로 변경합니다. XML 및 SNIPPET 작업에서 사용할 수 있습니다. 이 옵션은 이 섹션 2단계 이후의 두 번째 예시에서 설명합니다.

XML에 표시되는 큰따옴표를 변경하면 됩니다. 스니펫 코드의 변수 할당은 여전히 큰따옴표로 묶어야 합니다.

  1. REST 프록시를 만들고, 연결하려는 웹 서비스에 필요한 ContentType 헤더와 공개 웹 서비스 URL을 할당합니다.

    ASSIGN RestProxy = GetRESTProxy() 
    ASSIGN RestProxy.ContentType = "text/xml; charset=utf-8"
    ASSIGN URL = "https://localhost:9031/ssodir/services/

    SSODirectoryService" //Assign the public Webservice UR
  2. 필요한 모든 매개 변수를 인코딩하는 XML 형식의 SOAP 봉투를 만듭니다. 2가지 방식으로 수행할 수 있습니다.

    • 각 줄을 구분합니다. 이 옵션은 읽기 쉽습니다.

    • 한 줄에 모든 것을 연결합니다.

    두 가지 옵션의 예시가 이 단계에 모두 포함되어 있습니다.

    이 예시에서는 엔벨로프가 여러 줄로 구분되어 있습니다. 또한 이 예시에서는 큰따옴표가 {char(34)} 기호로 변경되어 있습니다.

    //Sample Payload:
    ASSIGN Payload = ""
    ASSIGN Payload = "{Payload}<?xml version={char(34)}1.0{char(34)} encoding={char(34)}UTF-8{char(34)}?>
    ASSIGN Payload = "{Payload}<soapenv:Envelope"
    ASSIGN Payload = "{Payload}	xmlns:soapenv={char(34)}http://schemas.xmlsoap.org/soap/envelope/{char(34)}"
    ASSIGN Payload = "{Payload}	xmlns:xsd={char(34)}http://www.w3.org/2001/XMLSchema{char(34)}"
    ASSIGN Payload = "{Payload}	xmlns:xsi={char(34)}http://www.w3.org/2001/XMLSchema-instance{char(34)}>"
    ASSIGN Payload = "{Payload}<soapenv:Body>"
    ASSIGN Payload = "{Payload}<ns1:getIDPList"
    ASSIGN Payload = "{Payload}        soapenv:encodingStyle="
    ASSIGN Payload = "{Payload}	           {char(34)}http://schemas.xmlsoap.org/soap/encoding/{char(34)} ""
    ASSIGN Payload = "{Payload}xmlns:ns1="
    ASSIGN Payload = "{Payload}            {char(34)}https://localhost:9031/ssodir/services/"
    ASSIGN Payload = "{Payload}                 SSODirectoryService{char(34)}/>"
    ASSIGN Payload = "{Payload}</soapenv:Body>"
    ASSIGN Payload = "{Payload}</soapenv:Envelope>"

    다음 예시에서는 엔벨로프 코드가 한 줄로 연결되어 있습니다. 이 예시에서는 큰따옴표가 작은따옴표로 변경되어 있습니다.

    //Sample Payload:
    ASSIGN Payload = "<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'><soapenv:Body><ns1:getIDPList soapenv:encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' xmlns:ns1='https://localhost:9031/ssodir/services/SSODirectoryService'/> </soapenv:Body></soapenv:Envelope>"
    
  3. REST 요청을 실행합니다. 다음 예시는 POST로 실행됩니다.

    Result = RestProxy.MakeRestRequest(URL,Payload,1,"POST")