Solicitar configuración para acciones de datos
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.
- 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.
- 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 AWS Lambda agrega pares clave-valor como clientContext elementos de la invocación contexto objeto. Si los atributos existen, los siguientes atributos se configuran automáticamente en el contexto objeto :
- 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.
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.
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.