Realice Llamadas a la API desde una Acción SNIPPET

Puede realizar Llamadas a la API REST o SOAP desde una acción SNIPPET. Este es uno de los métodos admitidos para realizar Llamadas a la API en los scripts de Studio.

Este no es el método recomendado para realizar llamadas REST, ya que tiene el potencial de hacer lento el manejo de contactos y causar problemas serios de rendimiento en la plataforma. En su lugar, utilice uno de estos métodos preferidos:

Integration Hub: Esta es la opción más segura y garantiza que las credenciales de su cliente no se almacenen en texto sin formato.

Acción API REST: El uso de la REST API acción es la alternativa recomendada si no está utilizando Integration Hub.

Sin embargo, si se está conectando a un servicio web SOAP o si sus llamadas API incluyen XML, realizar llamadas desde SNIPPET es el método que debe utilizar. Si debe usar SNIPPET, revise las recomendaciones sobre cómo realizar estas llamadas API de forma más segura.

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

Precaución

No se recomienda crear Llamadas a la API dentro de un Snippet. Esto puede generar problemas graves de rendimiento que afecten el manejo de contactos y perjudiquen a su abonado. Para una experiencia más segura y confiable, utilice uno de los siguientes métodos preferidos.

Existen DOs casos en los que realizar llamadas desde SNIPPET es el método que debe utilizar: si se está conectando a un servicio web SOAP o si sus llamadas de API incluyen XML. Si debe usar SNIPPET para llamadas de API:

  • Limite los tiempos DE espera en sus llamadas de API. Una recomendación general es que los tiempos DE espera no sean superiores a DOs segundos. Los tiempos DE espera predeterminados pueden ser más largos, por lo que siempre debe verificar los tiempos DE espera para asegurarse de que no excedan este máximo. Si encuentra que se requieren tiempos de espera más largos, ajuste su servicio web si es posible para mejorar sus tiempos de respuesta.
  • Sea extremamente cuidadoso con la lógica de bucles. La combinación de bucles y tiempos DE espera prolongados agrava el impacto potencial en su sistema.
  • ```

    El tamaño máximo de respuesta en NiCE CXone es de 32 KB. Este límite se aplica de manera estricta para evitar la inestabilidad del clúster y las interrupciones del servicio. Studio aplica este límite al guardar el script, pero Desktop Studio no lo hace. Si es posible, use la acción REST API acciónacción o Integration Hub en lugar de la acción SNIPPET para realizar Llamadas a la API. Ambas tienen el mismo límite, pero pueden manejar una carga mayor. Si debe usar la acción SNIPPET, siga estos consejos para reducir el tamaño de los datos devueltos:

    • Filtrar los datos en la respuesta de la API: Por ejemplo, si utiliza la API de generación de reportes de NiCE para obtener contactos, puede filtrar los resultados por el startDate y el endDate del contacto. Esta Llamada a la API también le permite devolver y limitar una cantidad de los mejores elementos. Consulte la documentación de la API que vino con su integración de script para determinar qué filtro puede usar.

    • Actualice la solicitud de API para que devuelva solo los datos que necesita: por ejemplo, si está utilizando la API de Reporting NiCE para obtener contactos, puede usar los campos contactId o agentId para devolver solo los datos importantes. Consulte la documentación de la API que vino con su integración de script para determinar qué límites de datos puede usar.

    • Compilar middleware: Si no puede realizar ninguna de las DOs opciones anteriores, compile middleware que realice el filtro según criterios personalizados que usted defina. Si lo hace, asegúrese de que su middleware no agregue latencia a la llamada.

    ```

Conectarse a Servicios web RESTful con una Acción Snippet

 

Puede usar scripts de Studio para conectarse con las API RESTful utilizando el proxy REST en un Snippet acción.Puede acceder 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 plataforma NiCE CXone permite que las API REST devuelvan hasta 32 KB de datos. Esta limitación se impone a nivel de la plataforma y se aplica de manera estricta.

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. You también puede crear objetos dinámicamente que se pueden convertir en XML o JSON. Estas capacidades SOn necesarias cuando se utilizan API RESTful.

Para usar el proxy de REST, agregue una acción Snippet a su script y abra la ventana del editor de Snippet. Llame a la función GetRESTProxy() con 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
Código de estado

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

Descripción de la Situación Contiene la descripción del estado HTTP posterior a una llamada a MakeRestRequest(). No se puede modificar esta propiedad.
Tipo de contenido

Permite reemplazar 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 está enviando JSON, debe 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 para usar al conectarse a las API RESTful. Existen funciones adicionales de proxy REST que le permiten codificar y aplicar hash a 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 útil para la Llamada a la API; Cadena de caracteres
  • P3: Accept header and response parser selector; Numeric or String:
    • 0: application/json
    • 1: text/xml
    • 2: application/json (ignorar el cuerpo de la respuesta)
    • 3: text/xml (ignore response body)
      • "JSON": application/JSON
      • "XML - text/xml
  • P4: verbo de API REST; Cadena de caracteres
AddHeader Agrega un encabezado personalizado a la solicitud HTTP.
ClearHeaders Borra todos los encabezados personalizados agregados con AddHeader.
currentUnixTimestamp()

Devuelve la hora actual como un sello de tiempo de Unix. Solo para usarse con getRESTProxy(). Obtenga más información sobre esta función en la página de ayuda Built-In Functions.

Ejemplos de

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

Conectarse a Servicios web SOAP con una Acción SNIPPET

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

El uso de servicios web SOAP requiere la ayuda de NiCE CXone. Comuníquese con su representante de cuenta para obtener más información.

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

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 utiliza no puede incluir comillas dobles cuando lo utiliza en un SNIPPET acción. 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 acciones de 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 Variable en el código del Snippet deben seguir estando encerradas entre 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 de REST. El siguiente ejemplo se está ejecutando como un POST.

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