Nota: Este artículo se aplica a las integraciones de acciones de datos de Adobe, AWS Lambda, Genesys Cloud, Google, Microsoft Dynamics 365, Salesforce, servicios web y Zendesk.

Puede crear acciones personalizadas para las integraciones de acciones de datos. Una acción personalizada incluye una solicitud y una respuesta en su configuración. Para más información, ver Crea una acción personalizada para integraciones.

Este artículo explica las partes de la solicitud. Para obtener información sobre la respuesta, consulte Configuración de respuesta.

Las acciones personalizadas utilizan plantillas de solicitud para definir el cuerpo de las solicitudes POST, PUT y PATCH a los puntos finales remotos o sus funciones de AWS Lambda. Los puntos finales remotos están definidos por requestUrlTemplate. Estas plantillas de solicitud admiten el uso de macros. Para más información, ver Macros de velocidad para acciones de datos.

Notas:
  • Las solicitudes GET no utilizan plantillas de solicitud. los requestTemplate El campo muestra un valor predeterminado de "$ {Input.rawRequest}".
  • Los objetos JSON excesivamente anidados pueden afectar al rendimiento del servicio de acción de datos. Para mantener el rendimiento, la profundidad de los objetos JSON se limita a 50 niveles. Para obtener más información, consulte Limits en el Centro de desarrollo de Genesys Cloud.

Advertencia: Escapa de cualquier uso de variables de entrada o salida dentro de requestTemplate, SuccessTemplate, o requestUrlTemplate. Si no se escapan correctamente las variables con caracteres especiales, las acciones de datos fallan en la ejecución.
  • Usar esc.jsonString para escapar de las cadenas dentro de los cuerpos JSON.

    Para obtener más información, consulte la sección esc.jsonString en Macros de velocidad.

  • Usar esc.url () o urlTool.optionalQueryParam () para escapar correctamente de la ruta o los parámetros de consulta para un requestUrlTemplate o requestTemplate si usa x-www.form-urlencoded valores.

    Para más información, consulte la sección de la biblioteca String-escaping en Macros de velocidad y Codificación de formularios URL para acciones de datos.

requestTemplate

Las plantillas de solicitud utilizan Velocity para definir el cuerpo de las solicitudes POST, PUT y PATCH. Después de guardar una plantilla de solicitud, la respuesta de la API hace referencia a ella como requestTemplateUri.

  • Para la integración de acciones de datos de AWS Lambda, cualquier entrada que especifique en requestTemplate estará disponible en el evento parámetro de la función AWS Lambda invocada.
  • Para Google Cloud Functions, el $ esc.jsonString macro convierte cadenas en una solicitud a JSON.

encabezados

Los encabezados son pares clave-valor que se agregan como encabezados HTTP en la solicitud que se envía al extremo remoto. Los valores del encabezado admiten la sustitución de velocidad.

Nota: Si confía en la API para manejar la autorización, no incluya autorización en el encabezado de la solicitud. La integración llenará automáticamente el encabezado. De lo contrario, incluya su propia autorización en el encabezado de la solicitud.

La integración de acciones de datos de Adobe agrega pares clave-valor a las acciones en tiempo de ejecución para el manejo de la autenticación. Los siguientes atributos se establecen automáticamente:

  • x-api-key
  • x-gw-ims-org-id
  • x-sandbox-name (si está configurado)

    Puede agregar un nombre de espacio aislado a las credenciales de integración o como encabezado en una acción. Si el nombre de la zona de pruebas se establece en ambos lugares, la integración utiliza el encabezado configurado en la acción de datos. Para más información, ver Agregar una integración de acciones de datos

La integración de acciones de datos de AWS Lambda agrega pares clave-valor como clientContext elementos de la invocación contexto objeto. If the attributes exist, the following attributes are automatically set on the context object :

  • ID de conversación ININ
  • ID-organización-ININ
  • ININ-Home-Organization-Id
  • ID de correlación ININ
  • ID de usuario ININ
  • ID de integración ININ

tipo de solicitud

tipo de solicitud define el tipo de solicitud HTTP en su acción de datos. Los tipos de solicitud HTTP disponibles incluyen POST, PUT y PATCH.

Nota: Para las integraciones de acciones de datos de AWS Lambda y Google, use POST. Este método HTTP garantiza que se envíe cualquier cuerpo de solicitud.

requestUrlTemplate

requestUrlTemplate es el punto de enlace remoto al que llega su solicitud HTTP o el ARN de la función AWS Lambda que invoca la integración de acciones de datos de AWS. requestUrlTemplate utiliza plantillas de Velocity para la sustitución de variables. 

Nota: Si requestUrlTemplate hace referencia a un extremo HTTP, requestUrlTemplate debe hacer referencia a un extremo HTTP seguro (HTTPS).

requestTemplateUri

requestTemplateUri es un URI de referencia para su requestTemplate. Cuando guarde el requestTemplate, la integración lo colapsa. Para ver el contenido de su requestTemplate después de haberlo guardado, ejecute una operación GET en requestTemplateUri.

Ejemplo requestTemplate

Órgano de ejecución de la acción

La siguiente llamada REST activa la acción sampleAction123 y pasa tres propiedades definidas en el inputSchema en la acción de muestra. 

curl -X POST https://api.mypurecloud.com/api/v2/integrations/actions/sampleAction123/execute \
  -H 'authorization: bearer *****' \
  -d '{
    "USER_ID": 123,
    "FIRST_NAME":"John",
    "LAST_NAME": "Smith"
}'

El servicio de acciones busca y reemplaza cualquier valor que haga referencia a estas tres propiedades en la acción de muestra, incluido requestUrlTemplate y requestTemplate

requestTemplate

La acción está configurada para tener lo siguiente requestTemplate

"{"firstName": "$esc.jsonString(${input.FIRST_NAME})","lastName": "$esc.jsonString(${input.LAST_NAME})"},

Para obtener más información sobre cómo escapar, consulte la esc.jsonString sección en Macros de velocidad para acciones de datos.

El servicio de acción reemplaza los marcadores de posición de la plantilla Velocity en la acción de muestra, lo que da como resultado lo siguiente:

{
  "firstName": "John",
  "lastName": "Smith"
}

requestTemplate se convierte en el cuerpo del HTTP POST enviado al punto final remoto. 

Llamada de servicio web

La acción de muestra modificada da como resultado la siguiente llamada de servicio web:

curl -X POST \
  https://sample.com/users/123 \
  -H 'content-type: application/json' \
  -H 'UserAgent: GenesysCloudIntegrations/1.0' \
  -H 'Company: My company' \
  -d '{
  "firstName": "John",
  "lastName": "Smith"}'

Solicitud para crear una nueva acción

La siguiente es una acción configurada para realizar una POST para https://sample.com/users/${input.USER_ID}. inputSchema define tres propiedades utilizadas para construir una solicitud: USER_ID, PRIMER NOMBRE, APELLIDO. Estas tres propiedades están referenciadas en requestTemplate y requestUrlTemplate.

{
  "category": "Sample",
  "contract": {
    "input": {
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-04/schema#",
        "description": "Update user's first and/or last name",
        "properties": {
          "USER_ID": {
            "description": "User Id",
            "type": "number"
          },
          "FIRST_NAME": {
            "description": "Users first name",
            "type": "string"
          },
          "LAST_NAME": {
            "description": "User last name",
            "type": "string"
          }
        },
        "required": [
          "USER_ID",
          "FIRST_NAME",
          "LAST_NAME"
        ],
        "title": "Update name request",
        "type": "object"
      }
    },
    "output": {
      ...
    }
  },
  "config": {
    "request": {
      "headers": {
        "Content-Type": "application/json",
        "UserAgent": "GenesysCloudIntegrations/1.0",
        "Company": "My company"
      },
      "requestTemplate" : "{\"firstName\": \"${input.FIRST_NAME}\",\"lastName\": \"${input.LAST_NAME}\"}",
      "requestType": "POST",
      "requestUrlTemplate": "https://sample.com/users/${input.USER_ID}"
    },
    "response": {
      ...
    }
  },
  "name": "Sample Action",
  "secure": true
}

Resultado de obtener la definición de acción

{
    "id": "<action ID>",
    "name": "Sample Action", 
    ...
    "config: {
        "request": {
            "requestUrlTemplate": "https://sample.com/users/${input.USER_ID}",
            "requestTemplateUri": "/api/v2/integrations/actions/<action ID>/templates/requesttemplate.vm",
            "requestType": "POST",
            "headers": {
                "Content-Type": "application/json",
        	    "UserAgent": "GenesysCloudIntegrations/1.0",
        	    "Company": "My company"
         },
         "response": {
             ...
         }
    },
    "category": "Sample",
    "version": 1,
    "secure": true,
    "selfUri": "/api/v2/integrations/actions/<action ID>"
}

Para obtener información sobre la configuración en acciones personalizadas, consulte Agregar configuración y Modificar configuración.

Para más información, ver Acerca de las acciones personalizadas para integraciones.

Para obtener más información sobre las integraciones, consulte Acerca de las integraciones de acciones de datos.