Effectuer des appels d’API à partir d’une action EXTRAIT DE CODE

Vous pouvez effectuer des appels d’API REST ou SOAP à partir d’une action SNIPPET. Il s’agit de l’une des méthodes prises en charge pour effectuer des appels d’API dans les scripts Studio. Si vous vous connectez à un service Web SOAP ou si vos appels d’API incluent du XML, c’est la méthode que vous devez utiliser. Cependant, la méthode préférée pour effectuer des appels d’API RESTful ou des appels incluant du JSON est d’utiliser l’action REST API.

En plus des codes d’état HTTP dans les réponses, vous pouvez voir un code -1. Il s’agit d’un code interne qui indique qu’une erreur s’est produite dans la réponse.

Connexion à des services Web RESTful avec une action EXTRAIT DE CODE

Vous pouvez utiliser les scripts Studio pour vous connecter aux API RESTful en utilisant le mandataire REST dans une action Snippet. Vous pouvez accéder à ce service avec la fonction GetRestProxy(). Le mandataire REST permet à vos scripts d’interagir avec des serveurs Web distants. Il fournit des propriétés et des fonctions que vous pouvez utiliser à cette fin. Les propriétés et les fonctions sont décrites plus loin dans cette section. La CXoneplateforme permet aux API REST de renvoyer jusqu’à 32 ko de données. Cette limitation est imposée au niveau de la plateforme et est strictement appliquée.

Le mandataire REST nécessite l’utilisation d’objets de données dynamiques. Le type de données dynamiques permet à vos scripts de travailler avec des réponses formatées en XML et JSON. Les objets de données dynamiques peuvent recevoir des données dans ces formats et permettre leur lecture. Vous pouvez également créer dynamiquement des objets qui peuvent être convertis en XML ou en JSON. Ces capacités sont nécessaires lors de l’utilisation d’API RESTful.

Pour utiliser le mandataire REST, ajoutez une action Snippet à votre script et ouvrez la fenêtre Snippet editor . Appelez la fonction GetRESTProxy() en utilisant la syntaxe suivante :

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

Pour <property | function>, choisissez parmi les propriétés et fonctions décrites dans les sections suivantes.

Propriétés

Propriété Détails
StatusCode

Contient le code d’état HTTP à la suite d’un appel à MakeRestRequest(). Cette propriété ne peut pas être modifiée. Si la fonction échoue, elle ne contient plus le code d’état.

StatusDescription Contient la description de l’état HTTP à la suite d’un appel à MakeRestRequest(). Cette propriété ne peut pas être modifiée.
ContentType

Permet de remplacer l’en-tête content-type par défaut. La valeur par défaut est application/x-www-form-urlencoded.

En fonction de l’appel que vous effectuez, il se peut que vous deviez modifier l’en-tête. Par exemple, si vous envoyez du JSON, vous devriez le remplacer par application/json. Vous devez modifier cette propriété.

ProxyTimeoutSeconds Permet de modifier le dépassement de délai de la requête. La valeur par défaut est 10 secondes. Vous devez modifier cette propriété.

Fonctions

Le tableau suivant fournit des informations sur les fonctions disponibles pour la connexion aux API RESTful. Il existe des fonctions mandataires REST supplémentaires qui permettent l’encodage et le hachage des chaînes.

Fonction Détails
MakeRestRequest(p1, p2, p3, p4)

Exécute une demande HTTP vers l’URL désignée, où :

  • P1 : URL de la demande; chaîne
  • P2 : Charge utile pour l’appel API; chaîne
  • P3 : Sélecteur d’en-tête d’acceptation et d’analyseur de réponse; numérique ou chaîne:
    • 0 : application/json
    • 1 : text/xml
    • 2 : application/json (ignorer le corps de la réponse)
    • 3 : text/xml (ignorer le corps de la réponse)
      • « JSON » - application/json
      • « XML » - text/xml
  • P4 : Verbe API REST; chaîne
AddHeader Ajoute un en-tête personnalisé à la demande HTTP.
ClearHeaders Efface tous les en-têtes personnalisés ajoutés avec AddHeader.

Exemples

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

Connexion à de services Web SOAP avec une action EXTRAIT DE CODE

Vous pouvez utiliser des services Web basés sur SOAP avec des scripts Studio. Pour ce faire, vous devez importer un fichier mandataire WSDL ou DLL dans Studio. La DLL importée doit être autorisée par NICE CXone. Après avoir autorisé la DLL, celle-ci est enregistrée dans la racine du stockage de fichiers de votre CXonesystème.

L’utilisation des services Web SOAP nécessite l’assistance de NICE CXone. Contactez votre Représentant de compte CXone pour plus d’informations.

Lorsque vous souhaitez utiliser un service Web basé sur SOAP dans un script Studio, vous devez créer un extrait de code. Ajoutez une action Snippet à votre script. Dans la fenêtre de l’éditeur Snippet, ajoutez une instruction USES qui nomme le fichier mandataire DLL que vous avez généré et stocké dans le stockage de fichiers de votre unité commerciale.

L’extrait de code suivant est un exemple d’utilisation d’un service Web SOAP avec un script Studio :

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)
	

Effectuer un appel SOAP avec un enveloppeur REST

Cette option vous permet d’utiliser les méthodologies API REST pour appeler des services Web SOAP. Chaque service Web réagit différemment selon la manière dont il est construit. Il se peut que vous deviez modifier le code de l’exemple pour l’adapter au service que vous appelez.

Le XML que vous utilisez ne peut pas comporter de guillemets lorsque vous l’utilisez dans une action SNIPPET. Vous pouvez utiliser l’une des alternatives suivantes :

  • Remplacez chaque guillemet double par {char(34)}, qui insère un guillemet double directement dans la chaîne. Cette option est illustrée dans le premier exemple de l’étape 2, plus loin dans cette section.
  • Remplacez chaque guillemet double par un guillemet simple ( ’ ). Ceci est acceptable en XML et dans les actions SNIPPET. Cette option est illustrée dans le deuxième exemple de l’étape 2, plus loin dans cette section.

Vous ne devez remplacer que les guillemets doubles qui apparaissent dans le XML. Les assignations de variables dans le code de l’extrait doivent toujours être placées entre guillemets.

  1. Créez un mandataire REST, attribuez l’en-tête ContentType, comme exigé par le service Web auquel vous vous connectez, et l’URL du service Web public :

    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. Créez votre enveloppe SOAP, qui est formatée en XML pour encoder tous les paramètres requis. Vous pouvez le faire de deux manières :

    • Séparer chaque ligne. Cette option est plus facile à lire.

    • Concaténer le tout en une seule ligne.

    Des exemples de ces deux options sont inclus dans cette étape.

    Cet exemple montre l’enveloppe séparée en lignes. En outre, cet exemple montre que les guillemets doubles sont remplacés par {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>"

    L’exemple suivant montre le code de l’enveloppe concaténé en une seule ligne. Dans cet exemple, les guillemets doubles ont été remplacés par des guillemets simples.

    //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. Exécutez la demande REST. L’exemple suivant est exécuté en tant que POST.

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