Haga Llamadas API de una Acción SNIPPET

Puede hacer llamadas REST o API SOAP desde una acción SNIPPET. Este es uno de los métodos soportados para hacer llamadas API en los scripts Studio. Si usted se está conectando a un servicio web SOAP o si sus llamadas API incluyen XML, este es el método que puede usar. Sin embargo, el método preferido de hacer llamadas API RESTful o llamadas que incluyen JSON es usar la acción REST API.

Además de ver los códigos de estatus HTTP en las respuestas, puede ver un código -1. Este es un código interno que indica que se ha presentado un error con la respuesta.

Conectar a los Servicios Web RESTful con la Acción SNIPPET

Puede utilizar los scripts Studio para conectarse con las API RESTful mediante el proxy REST en una acción Snippet. Puede ingresar a este servicio con la función GetRestProxy(). El proxy REST permite que sus scripts interactúen con servidores web remotos. Ofrece algunas propiedades y funciones que usted puede utilizar para esto. Las propiedades y funciones se describen posteriormente en esta acción. La CXonePlataforma permite que las API REST devuelvan hasta 32 KB de datos. Esta limitación se impone al nivel Plataforma y es estrictamente obligatorio.

El proxy REST requiere el uso de objetos de datos dinámicos. El tipo de datos dinámico permite que sus scripts funcionen con respuestas con formato en XML y JSON. Los objetos de datos dinámicos pueden recibir datos en estos formatos y permitir su lectura. También puede crear objetos dinámicamente que se pueden convertir a XML o JSON. Estas habilidades son necesarias para utilizar las API RESTful.

Para usar el proxy REST, agregar una acción Snippet a su script y abrir la ventana Snippet editor . Llamar a la función GetRESTProxy() usando la siguiente sintaxis:

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

Para <property | function>, elija entre las propiedades y funciones que se describen en las siguientes secciones.

Propiedades

Propiedad Detalles
StatusCode

Contiene el código de estado HTTP después de una llamada a MakeRestRequest(). No se puede modificar esta propiedad. Si falla la función, ya no mantiene el código de estatus.

StatusDescription Mantiene la descripción del estado HTTP después de una llamada a MakeRestRequest(). No se puede modificar esta propiedad.
ContentType

Le permite anular el encabezado de tipo de contenido predeterminado. El valor predeterminado es application/x-www-form-urlencoded.

Dependiendo de la llamada que esté realizando, es posible que tenga que cambiar el encabezado. Por ejemplo, si envía JSON, debiera cambiar esto a application/json. Debe modificar esta propiedad.

ProxyTimeoutSeconds Le permite cambiar el tiempo de espera de la solicitud. El valor predeterminado es 10 segundos. Debe modificar esta propiedad.

Funciones

La siguiente tabla proporciona información sobre las funciones disponibles a usar al conectarse a las API RESTful. Hay funciones de proxy REST adicionales que le permiten codificar y hacer un hash con las cadenas.

Función Detalles
MakeRestRequest(p1, p2, p3, p4)

Realiza una solicitud HTTP a la URL designada, donde:

  • P1: URL de la solicitud, Cadena de caracteres
  • P2: Carga para la llamada API, Cadena de caracteres
  • P3: Aceptar el selector del analizador de encabezado y respuesta; Numérico o Cadena de caracteres:
    • 0:  aplicación/json
    • 1: texto/xml
    • 2: aplicación/json (ignorar el cuerpo de la respuesta)
    • 3: texto/xml (ignorar el cuerpo de la respuesta)
      • "JSON" - aplicación/json
      • "XML - texto/xml
  • P4: verbo API REST; Cadena de caracteres
AddHeader Agrega un encabezado personalizado a la solicitud HTTP.
ClearHeaders Borra cualquier encabezado personalizado agregado con AddHeader.

Ejemplos

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

Conectar a los Servicios Web SOAP con la Acción SNIPPET

Puede utilizar servicios web basados en SOAP con scripts Studio. Esto requiere que importe un WSDL o DLL proxy a Studio. La DLL importada debe ser autorizada por NICE CXone. Después de autorizar la DLL, se guarda en la raíz del almacenamiento de archivos de su CXonesistema.

El uso de servicios web SOAP requiere la ayuda de NICE CXone. Póngase en contacto con su Representante de cuenta CXone para más información.

Cuando desee utilizar un servicio web basado en SOAP en un script Studio, debe crear un snippet. Agregue una acción Snippet a su script. En la ventana del editor Snippet, agregue una USES declaración que nombre el archivo DLL proxy que generó y almacenó en el almacenamiento de archivos de su unidad de negocios.

El siguiente snippet es un ejemplo del uso de un servicio web basado en SOAP con 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)
	

Haga una Llamada SOAP con un Envoltorio REST

Esta opción le permite usar las metodologías del API REST para hacer servicios web basados en llamadas SOAP. Todos los servicios web responden de manera distinta dependiendo de la manera en que se diseñan. Puede necesitar modificar el código de ejemplo para que funcione con el servicio que está llamando.

El XML que use no puede incluir comillas dobles cuando lo use en una acción SNIPPET. Puede usar cualquiera de las siguientes alternativas:

  • Reemplace cada una de las comillas dobles con {char(34)}, que inserta un carácter de comillas dobles directamente en la cadena de caracteres. Esta opción se ilustra en el primer ejemplo en el segundo paso de esta sección.
  • Reemplace cada una de las comillas dobles con una comillas simples ( ‘ ). Esto es aceptable en XML y en las acciones SNIPPET. Esta opción se ilustra en el segundo ejemplo en el segundo paso de esta sección.

Únicamente necesita reemplazar las comillas dobles que aparecen en el XML. Las asignaciones de variables en el código del snippet deben contener comillas dobles.

  1. Haga un proxy REST, asigne el encabezado ContentType según lo demande el servicio web que esté conectando, y la URL del servicio web público.

    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. Cree su sobre SOAP, que tendrá el formato XML para codificar todos los parámetros necesarios. Puede hacer esto de dos maneras:

    • Separe cada línea. Esta opción es más fácil de leer.

    • Concatene todo en una línea simple.

    En este paso, se incluyen ejemplos de ambas opciones.

    Este ejemplo muestra el sobre separado en líneas. Además, este ejemplo muestra las comillas dobles reemplazadas con {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>"

    El siguiente ejemplo muestra el código del sobre concatenado en una línea. En este ejemplo, se han sustituido las comillas dobles con comillas 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. Ejecute la solicitud REST. El siguiente ejemplo se está ejecutando como un POST.

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