Tätigen von API-Aufrufen über eine SNIPPET-Aktion

Sie können REST- oder SOAP-API-Aufrufe über eine SNIPPET-Aktion tätigen. Dies ist eine der unterstützten Methoden für API-Aufrufe in Studio-Skripten. Wenn Sie eine Verbindung mit einem SOAP-Webdienst herstellen oder wenn Ihre API-Aufrufe XML enthalten, müssen Sie diese Methode verwenden. Die bevorzugte Methode für RESTful-API-Aufrufe oder Aufrufe mit JSON ist jedoch die REST API-Aktion.

Außer HTTP-Statuscodes in Antworten kann auch ein -1-Code angezeigt werden. Dies ist ein interner Code, der darauf hinweist, dass bei der Antwort ein Fehler aufgetreten ist.

Verbinden mit RESTful-Webdiensten mithilfe einer SNIPPET-Aktion

Sie können Studio-Skripte verwenden, um mit dem REST-Proxy in einer Snippet-Aktion eine Verbindung mit RESTful-APIs herzustellen. Der Zugriff auf diesen Dienst ist mithilfe der Funktion GetRestProxy() möglich. Über den REST-Proxy können Ihre Skripte mit Remote-Webservern interagieren. Dazu stehen einige Eigenschaften und Funktionen zur Verfügung. Die Eigenschaften und Funktionen werden später in diesem Abschnitt beschrieben. In der CXone-Plattform können REST-APIs eine Datenmenge von 32 KB zurückgeben. Diese Einschränkung wird auf der Plattform-Ebene auferlegt und wird strikt erzwungen.

Für den REST-Proxy müssen dynamische Datenobjekte verwendet werden. Über den dynamischen Datentyp können Ihre Skripte mit Antworten im XML- und JSON-Format arbeiten. Dynamische Datenobjekte können Daten in diesen Formaten empfangen und ermöglichen das Lesen dieser Daten. Sie können auch dynamisch Objekte erstellen, die in das XML- oder JSON-Format konvertiert werden können. Diese Fähigkeiten sind zur Verwendung von RESTful-APIs erforderlich.

Um den REST-Proxy zu verwenden, fügen Sie Ihrem Skript eine Snippet-Aktion hinzu und öffnen Sie das Snippet editor -Fenster. Rufen Sie die Funktion GetRESTProxy() mit der folgenden Syntax auf:

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

Verwenden Sie für <property | function> eine der Eigenschaften bzw. Funktionen, die in den folgenden Abschnitten beschrieben werden.

Eigenschaften

Eigenschaft Details
StatusCode

Enthält den HTTP-Statuscode nach einem Aufruf von MakeRestRequest(). Diese Eigenschaft kann nicht geändert werden. Wenn die Funktion fehlschlägt, enthält sie den Statuscode nicht mehr.

StatusDescription Enthält die HTTP-Statusbeschreibung nach einem Aufruf von MakeRestRequest(). Diese Eigenschaft kann nicht geändert werden.
ContentType

Hiermit können Sie den Standard-Header für den Inhaltstyp überschreiben. Der Standard ist application/x-www-form-urlencoded.

Je nach dem Aufruf, den Sie tätigen, müssen Sie den Header möglicherweise ändern. Wenn Sie beispielsweise JSON senden, sollten Sie diese Angabe in application/json ändern. Sie müssen diese Eigenschaft ändern.

ProxyTimeoutSeconds Hiermit können Sie die Anfragezeitüberschreitung ändern. Der Standardwert beträgt 10 Sekunden. Sie müssen diese Eigenschaft ändern.

Funktionen

In der folgenden Tabelle finden Sie Informationen über die Funktionen, die Ihnen zur Verfügung stehen, wenn Sie eine Verbindung mit RESTful-APIs herstellen. Es gibt weitere REST-Proxy-Funktionen, mit denen Sie Strings kodieren und hashen können.

Funktion Details
MakeRestRequest(p1, p2, p3, p4)

Führt eine HTTP-Anforderung an die angegebene URL aus. Dabei gilt:

  • P1: URL der Anforderung; String
  • P2: Payload für den API-Aufruf; String
  • P3: Auswahl für Accept-Header und Antwort-Parser; numerisch oder String:
    • 0:  application/json
    • 1: text/xml
    • 2: application/json (Antworttext ignorieren)
    • 3: text/xml (Antworttext ignorieren)
      • "JSON" - application/json
      • "XML - text/xml
  • P4: REST-API-Verb; String
AddHeader Fügt der HTTP-Anforderung einen benutzerdefinierten Header hinzu.
ClearHeaders Löscht alle benutzerdefinierten Header, die mit AddHeader hinzugefügt wurden.

Beispiele

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()}

Verbinden mit SOAP-Webdiensten mithilfe einer SNIPPET-Aktion

Sie können SOAP-Webdienste mit Studio-Skripten verwenden. Dazu müssen Sie eine WSDL- oder Proxy-DLL in Studio importieren. Die importierte DLL muss von NICE CXone autorisiert sein. Nach der Autorisierung wird die DLL im Stammverzeichnis des Dateispeichers im CXone-System gespeichert.

Zur Verwendung von SOAP-Webdiensten benötigen Sie die Unterstützung von NICE CXone. Wenden Sie sich für weitere Informationen an Ihren CXone Account Representative.

Wenn Sie einen SOAP-Webdienst in einem Studio-Skript verwenden möchten, müssen Sie ein Snippet erstellen. Fügen Sie Ihrem Skript eine Snippet-Aktion hinzu. Fügen Sie im Snippet-Editor-Fenster eine USES-Anweisung hinzu, in der die Proxy-DLL-Datei genannt wird, die Sie im Dateispeicher Ihrer Geschäftseinheit generiert und gespeichert haben.

Das folgende Snippet ist ein Beispiel für die Verwendung eines SOAP-Webdienstes mit einem Studio-Skript:

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)
	

Tätigen eines SOAP-Aufrufs mit einem REST-Wrapper

Diese Option ermöglicht es Ihnen, REST-API-Methodologien zu verwenden, um SOAP-basierte Webdienste aufzurufen. Jeder Webdienst antwortet unterschiedlich, je nachdem, wie er erstellt wurde. Möglicherweise müssen Sie den Beispielcode an den aufzurufenden Dienst anpassen.

Ihr XML-Code darf keine doppelten Anführungszeichen enthalten, wenn er in einer SNIPPET-Aktion verwendet wird. Sie können eine der beiden folgenden Alternativen verwenden:

  • Ersetzen Sie jedes doppelte Anführungszeichen durch {char(34)}. Dadurch wird das Zeichen für ein doppeltes Anführungszeichen direkt in den String eingefügt. Diese Option wird im ersten Beispiel in Schritt 2 später in diesem Abschnitt veranschaulicht.
  • Ersetzen Sie jedes doppelte Anführungszeichen durch ein einzelnes Anführungszeichen ('). Dies ist in XML und in SNIPPET-Aktionen möglich. Diese Option wird im zweiten Beispiel in Schritt 2 später in diesem Abschnitt veranschaulicht.

Sie müssen nur doppelte Anführungszeichen im XML-Code ersetzen. Variablenzuweisungen im Snippet-Code müssen weiterhin in doppelte Anführungszeichen eingeschlossen werden.

  1. Erstellen Sie einen REST-Proxy, weisen Sie den ContentType-Header für den Webdienst zu, mit dem Sie eine Verbindung herstellen, und geben Sie die öffentliche URL für den Webdienst an:

    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. Erstellen Sie den SOAP-Envelope im XML-Format zur Kodierung aller erforderlichen Parameter. Sie können dies auf zwei Arten tun:

    • Trennen Sie jede Zeile ab. Diese Option verbessert die Lesbarkeit.

    • Verketten Sie alle Elemente auf einer einzelnen Zeile.

    Beispiele für beide Optionen werden in diesem Schritt gezeigt.

    Dieses Beispiel zeigt, wie der Envelope auf verschiedene Zeilen aufgeteilt ist. Das Beispiel zeigt auch, wie die doppelten Anführungszeichen durch {char(34)} ersetzt wurden.

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

    Das folgende Beispiel zeigt, wie der Envelope-Code auf einer Zeile verkettet ist. In diesem Beispiel wurden die doppelten Anführungszeichen durch einzelne Anführungszeichen ersetzt.

    //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. Führen Sie die REST-Anforderung aus. Das folgende Beispiel wird als POST ausgeführt.

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