API-oproepen plaatsen vanaf een SNIPPET-actie

U kunt REST- of SOAP API-oproepen plaatsen vanaf een SNIPPET-actie. Dit is een van de ondersteunde methoden om API-oproepen te plaatsen in Studio-scripts. Als u verbinding maakt met een SOAP-webservice of als uw API-oproepen XML bevatten, is dit de methode die u moet gebruiken. Maar de voorkeursmethode voor het plaatsen van RESTful API-oproepen of oproepen die JSON omvatten, is het gebruik van de REST API -actie.

U zit niet alleen de HTTP-statuscodes in responsen, maar u kunt ook een -1 code zien. Dit is een interne code die een fout aangeeft die is opgetreden met de respons.

Verbinden met RESTful-webservices met een SNIPPET-actie

U kunt Studio-scripts gebruiken voor het verbinden met RESTful-API's met de REST-proxy in een Snippet -actie. Deze service is toegankelijk met de GetRestProxy()-functie. Met de REST-proxy kunnen uw scripts interactief werken met externe webservers. Dit biedt enkele eigenschappen en functies die u hiervoor kunt gebruiken. De eigenschappen en functies worden later in deze sectie beschreven. De CXoneplatform laat REST API's tot 32 KB gegevens retourneren. Deze beperking wordt opgelegd op het platform-niveau en wordt strikt afgedwongen.

De REST-proxy vereist het gebruik van dynamische gegevensobjecten. Met het dynamische gegevenstype kunnen uw scripts werken met reacties die zijn opgemaakt in XML en JSON. Dynamische gegevensobjecten kunnen gegevens ontvangen in deze indelingen zodat ze kunnen worden gelezen. U kunt ook dynamisch objecten maken die kunnen worden omgezet in XML of JSON. Deze capaciteiten zijn nodig wanneer RESTful API's worden gebruikt.

Om de REST-proxy te gebruiken, voegt u een Snippet-actie toe aan uw script en opent u het Snippet editor venster. Roep de GetRESTProxy()-functie op met de volgende syntaxis:

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

Voor <property | function> kiest u uit de eigenschappen en functies die zijn beschreven in de volgende secties.

Eigenschappen

Vertakking Details
StatusCode

Bevat de HTTP-statuscode na een aanroep naar MakeRestRequest(). Deze eigenschap kan niet worden gewijzigd. Als de functie mislukt, behoudt deze niet langer de statuscode.

StatusDescription Bevat de HTTP-statusbeschrijving na een aanroep naar MakeRestRequest(). Deze eigenschap kan niet worden gewijzigd.
ContentType

Hiermee kunt u de standaard content-type header overschrijven. De standaardwaarde is application/x-www-form-urlencoded.

Afhankelijk van de aanroep die u maakt, kunt u de koptekst wijzigen. Als u bijvoorbeeld JSON verzendt, moet u dit wijzigen naar application/json. U moet deze eigenschap wijzigen.

ProxyTimeoutSeconds Hiermee kunt u de time-out voor de aanvraag wijzigen. De standaardwaarde is 10 seconden. U moet deze eigenschap wijzigen.

Functies

De volgende tabel biedt informatie oer de functies die beschikbaar zijn voor gebruik wanneer u verbindt met RESTful API's. Er zijn extra REST-proxyfuncties waarmee u strings kunt coderen en hashen.

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

Voert een HTTP-verzoek uit naar de aangewezen URL, waar:

  • P1: URL van he verzoek; string
  • P2: payload voor de API-oproep; string
  • P3: selector voor koptekst Accepteren en reponsparser; Numeriek of String:
    • 0:  applicatie/json
    • 1: tekst/xml
    • 2: applicatie/json (inhoud respons negeren)
    • 3: tekst/xml (inhoud respons negeren)
      • "JSON" - applicatie/json
      • "XML - tekst/xml
  • P4: REST API-werkwoord; string
AddHeader Voegt een aangepaste header toe aan het HTTP-verzoek.
ClearHeaders Wist alle aangepaste headers die zijn toegevoegd met AddHeader.

Voorbeelden

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 met SOAP-webservices met een SNIPPET-actie

U kunt op SOAP gebaseerde webservices gebruiken in uw Studio-scripts. Dit vereist dat u een WSDL of Proxy DLL importeert in Studio. De geïmporteerde DLL moet worden geautoriseerd door NICE CXone. Na het autoriseren van de DLL, wordt dit opgeslagen in de hoofdmap van de bestandopslag van CXonesysteem.

Het gebruik van SOAP-webservices vereist hulp van NICE CXone. Neem voor meer informatie contact op met uw CXone-accountmanager.

Wanneer u een op SOAP gebaseerde webservice wilt gebruiken in een Studio-script, moet u een fragment maken. Voeg een Snippet -actie toe aan uw script. Voeg in het Snippet-editorvenster een USES verklaring toe die het proxy DLL-bestand benoemt dat u hebt gegenereerd en opgeslagen in de bestandsopslag van uw bedrijfseenheid.

De volgende snippet is een voorbeeld van het gebruik van een op SOAP gebaseerde webservice met een Studio-script:

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)
	

SOAP-oproepen plaatsen met een REST-wrapper

Met deze optie kunt u de REST API-methodologieën gebruiken om op SOAP gebaseerde webservices te plaatsen. Elke webservice reageert anders, afhankelijk van de manier waarop het is gebouwd. U moet mogelijk de voorbeeldcode wijzigen om te werken met de service die u belt.

De XML die u gebruikt, kan geen dubbele aanhalingstekens bevatten wanneer u deze gebruikt in een SNIPPET -actie. U kunt elk van de volgende alternatieven gebruiken:

  • Vervang elk dubbel aanhalingsteken door {char(34)}, wat een dubbel aanhalingsteken direct in de tekenreeks invoegt. Deze optie wordt geïllustreerd in het eerste voorbeeld in stap 2 verder in deze sectie.
  • Vervang elk dubbel aanhalingsteken door een enkel aanhalingsteken ( ' ). Dit is acceptabel in XML en in SNIPPET-acties. Deze optie wordt geïllustreerd in het tweede voorbeeld in stap twee verder in deze sectie.

U hoeft alleen maar de dubbele aanhalingstekens die verschijnen in de XML, te vervangen. Variabele toewijzingen in de snippetcode moeten nog steeds tussen dubbele aanhalingstekens staan.

  1. Maak een REST-proxy, wijs de koptekst ContentType toe als de webservice waarmee u verbinding maakt, dit vereist en de URL van de openbare webservice:

    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. Maak uw SOAP-envelop die in SML-opmaak is om alle vereiste parameters te coderen. U kunt dit op twee manieren doen:

    • Scheid elke lijn. Deze optie is gemakkelijker te lezen.

    • Voeg alles samen in één lijn.

    Voorbeelden van beide opties zijn inbegrepen in deze stap.

    In dit voorbeeld is de envelop in regels verdeeld. Daarnaast toont dit voorbeeld dubbele aanhalingstekens die zijn vervangen door {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>"

    Het volgende voorbeeld toont de enveloppecode, samengevoegd op één lijn. In dit voorbeeld zijn de dubbele aanhalingstekens vervangen door enkele aanhalingstekens.

    //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. Voer de REST-aanvraag uit. Het volgende voorbeeld wordt uitgevoerd als een POST.

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