12.5 Crear acciones en Sepiia

Crear acciones en Sepiia


 
 
Esta API permite crear o actualizar acciones en el sistema Sepiia. Las acciones se definen según el plugin utilizado, teniendo una parte fija una asociada a lo que requiere el plugin: Sección internalData.
En este documento se presenta lo requerido por el plugin smartdici.sepiia.action.PNGCommandPlugin, que permite el llamado a cualquier API Rest.
 
La biblioteca de acciones configurada se verá en el paso 4 del Wizard de reglas:
notion image
 

Endpoint

 
{ "code": "CMD1", "name": "Asignar valor a atributo", "plugin": "smartdici.sepiia.action.PNGCommandPlugin", "destinity": "API", "categoryCode": "COMMAND", "categoryLabel": "Acciones y comandos", "logic": { "fieldForm": { "fields": [ { "name": "task", "label": "Valor", "value": "", "variable": true, "emoji": true, "helpText": "", "type": "TEXTAREA", "maxLenght": 5000, "dataSource": "element.PAGE", "items": [ { "label": "Activo", "value": "active" } ] } ] }, "internalData": { "platformCode": "GENAPI", "testMode": false, "metaData": { "clave": "valor" }, "defaultValues": { "goal": "Compra de licencia microsoft", "command": { "fullUrl": "https://<host:port>/#clave#/$task", "contentType": "application/json", "getParameters": "", "headerParameters": [ { "key": "", "value": "" } ], "postParameters": { "clave": "valor" }, "customAuthorization": "", "cookie": { "name": "Identificador de la cookie", "value": "Cuerpo de la cookie", "domain": "dominio del que la genera", "path": "Path, común mente solo /" }, "files": [ "path_archivo1", "path_archivo2" ], "authGenerator": { "authPayload": {}, "authMethod": "bearer/cookie", "authUrl": "URL para la autenticación", "tokenTAG": "Variable que contiene el token", "tokenPath": "Query JsonPath" }, "conditions": { "operator": "AND", "conditions": [ { "field": "$.status", "operator": "eq", "value": "SUCCESS" } ], "nextCommand": { "true": "C3", "false": "C2" } } } }, "successfulResponses": "SUCCESS", "errorResponses": "", "quarantineMinutes": 0, "quarantineSecconds": 0, "quarantineDays": 0, "validQuarantine": false, "maxAffectPerDay": 1, "recordableOnError": "", "returnErrorInQuarantine": "", "waitMilisecond": "", "responseMapping": { "<Attribute1>": "<JsonPath>" } } } }
 

Descripción de campos

CAMPO
Descripción
code
Identificador del comando que lo hará único dentro del tenant
operationId
Identificador del tenant.
user
Usuario de administración.
name
Nombre identificatorio de la acción.
plugin
Siempre se usa este plugin.
destinity
Código identificatorio de la acción. Siempre es "API" en este escenario.
categoryCode
Categoría de acción donde se mostrará en el paso 4 del wizard de reglas. Dejar así.
categoryLabel
Nombre de la categoría de acción. Dejar así.
logic
Lógica de invocación de la API.
logic.fieldForm
Formulario para que el usuario ingrese datos en el paso 4 del Wizard de reglas.
logic.fieldForm.fields
Los campos pueden ser utilizados como metadatos en todo el segmento "internalData" anteponiendo $ al nombre del campo, ejemplo: $name.
logic.fieldForm.fields.name
Nombre interno del campo.
logic.fieldForm.fields.label
Etiqueta que verá el usuario.
logic.fieldForm.fields.value
Valor por defecto que aparecerá en el formulario.
logic.fieldForm.fields.variable
Valor booleano que indica si activa el botón '@' de Metadatos.
logic.fieldForm.fields.emoji
Valor booleano que indica si activa el botón de emoticons.
logic.fieldForm.fields.helpText
Texto de ayuda sobre el campo.
logic.fieldForm.fields.type
Tipo de datos. Por defecto es STRING; otros valores son TEXTAREA y SELECTION.
logic.fieldForm.fields.maxLenght
Largo del campo.
logic.fieldForm.fields.dataSource
Data source en formato JsonPath para desplegar un dropdown con valores de la base de datos. Las posibles fuentes son: element para Elementos, custom para dominios propios del tenant, sepiia para fuentes propios de Sepiia. Solo utilizable con tipo SELECTION.
logic.fieldForm.fields.items
Lista de valores estáticos para desplegar en un dropdown.
logic.fieldForm.fields.items.label
Etiqueta que ve el usuario en el dropdown.
logic.fieldForm.fields.items.value
Valor que se envía en el comando.
logic.internalData
Sección de datos internos que interpreta el plugin. Se pueden utilizar como metadatos además de los campos del FieldForm y de la sección "metaData", los atributos del evento, de la siguiente forma: @@<nombre_atributo>@@.
logic.internalData.platformCode
Código de la plataforma.
logic.internalData.testMode
Modo de prueba.
logic.internalData.metaData
Lista de metadatos que pueden ser utilizados en la sección "defaultValues", cuando el comando es muy extenso y hay valores configurables repetitivos. Los mismos se referencian así: ##<clave_campo_metadato>##.
logic.internalData.metaData.clave
Clave del metadato.
logic.internalData.metaData.valor
Valor del metadato.
logic.internalData.defaultValues
Valores predeterminados.
logic.internalData.defaultValues.goal
Código del comando para poder guardar las veces que se ha enviado al elemento.
logic.internalData.defaultValues.command
Comando de la API.Si el valor está envuelto en {} como un nodo JSON, el provisionador entenderá que es un solo comando. Pero si se requiere enviar más de uno, de forma concatenada, los nodos se envuelven entre [] como un arreglo de comandos.
logic.internalData.defaultValues.command.fullUrl
URL de la API.
logic.internalData.defaultValues.command.contentType
Tipo de contenido.
logic.internalData.defaultValues.command.getParameters
Lista de parámetros a enviar por GET, si es que no se desean colocar en "fullUrl".
logic.internalData.defaultValues.command.postParameters
Lista de parámetros a enviar por POST. Se pueden enviar en formato JSON, como el ejemplo, en formato texto, contenidos en comillas dobles.
logic.internalData.defaultValues.command.customAuthorization
Método de autorización de la API. En formato "Bearer <Token>" o "Basic <Hash con usuario y password>" o "key=<Llave>".
logic.internalData.defaultValues.command.headerParameters
Lista de parámetros de cabecera HTTP a enviar opcionalmente en formato key: value.
logic.internalData.defaultValues.command.cookie
Objeto con los datos de una cookie si la API lo requiere. Se deben llenar los datos: name, value, domain y path.
logic.internalData.defaultValues.command.files
Lista de nombre de archivos en caso de que la API los reciba en modo Multipart. La URL de cada archivo debe ser pública para que Sepiia los pueda leer y enviar de forma binaria a la API.
logic.internalData.defaultValues.command.authGenerator
Objeto que permite la generación de un bearer token o de una cookie antes de hacer la llamada de la API.
logic.internalData.defaultValues.command.authPayload
Objeto JSON que contiene el payload de la autenticación que requiere la API, típicamente {“username”:””,”password”:””}.
logic.internalData.defaultValues.command.authMethod
Método de autenticación: bearer o cookie.
logic.internalData.defaultValues.command.authUrl
URL de la API de autenticación.
logic.internalData.defaultValues.command.tokenTAG
Nombre de la variable que contiene el token en la respuesta de la API.
logic.internalData.defaultValues.command.tokenPath
Ruta en formato JsonPath para recuperar el token cuando viene dentro de una estructura más compleja, por ejemplo: { "status": "OK", "response": { "token": "xxxx" }} La configuración de los parámetros tokenTAG y tokenPath serían: “tokenTAG”: “token”,“tokenPath”: “$.response”.
logic.internalData.successfulResponses
Lista de palabras clave que contenga la respuesta de la API para reconocer que ha sido exitosa. La lista se separa por |.
logic.internalData.errorResponses
Lista de palabras clave para reconocer que la ejecución fue errónea (opcional).
logic.internalData.quarantineMinutes
Minutos en que el comando no se vuelve a enviar al mismo elemento. 0 = no hay restricción.
logic.internalData.quarantineSecconds
Segundos en que el comando no se vuelve a enviar al mismo elemento. 0 = no hay restricción.
logic.internalData.quarantineDays
Días en que el comando no se vuelve a enviar al mismo elemento. 0 = no hay restricción.
logic.internalData.validQuarantine
Activa o desactiva la validación de cuarentenas.
logic.internalData.maxAffectPerDay
Máximos de veces que se envía el comando en un día.
logic.internalData.recordableOnError
Establece si deja registro histórico si el comando dio error.
logic.internalData.returnErrorInQuarantine
Establece si marca como error cuando el comando no se envía por cuarentena.
logic.internalData.waitMilisecond
Tiempo máximo de espera para enviar el comando, cuando la plataforma destino está colapsada o su control de flujo es limitado.
logic.internalData.responseMapping
Mapeo de variables rescatadas de la respuesta de la API y mapeadas en atributos de Sepiia, que puedes ser usados en las siguientes reglas o acciones del evento.
 

Response

{ "status": "SUCCESS", "description": "OK", "id": 341 }
 

Descripción de campos

Campo
Descripción
status
Estado con el resultado de la operación: SUCCESS o ERROR.
description
Descripción del estado, con el detalle del error en caso de haberlo.
id
ID asignado a la acción configurada.
 

Interactuar con el provisionador para probar llamadas de API

Endpoint

(Se debe enviar el mismo token que a la API CommandConfig)
 

Request

{ "to": "GENAPI", //Siempre igual "appId": "1", //Siempre igual "extRequest": "1", //Siempre igual "request": 0, //Siempre igual "priority": true, //Siempre igual "TransactionType": 2, //Siempre igual "wait": 0, //Siempre igual "message": {} //Nodo JSON o Arreglo de JSON con llamadas a APIs a ejecutar. Es lo que se mapea dentro del campo “command” en la API CommandConfig }
 

Ejemplo de llamada encadenada de APIS

{ "to": "GENAPI", "appId": "1", "extRequest": "1", "request": 0, "priority": true, "TransactionType": 2, "wait": 5000, "message": [ { "id": "C1", "fullUrl": "https://app.sepiia.run/Sepiia6-gestion/rest/general/ExecuteJsonPathQueryFromOrigin", "contentType": "application/json", "getParameters": "", "headerParameters": [], "postParameters": { "source": "custom.PROD_CATEGORY[?(@.key == 'SECURE')]", "operationId": 20 }, "customAuthorization": "Bearer 480nwy5j92xeftb3x0hxe2w4ade0c5e8vr89q2e8l8e0102jve8y97t21lzs78c4222w577033", "responseMapping": { "typeProdLabel": "$.data[0].label", "typeProdId": "$.data[0].id" }, "conditions": { "operator": "AND", "conditions": [ { "field": "$.status", "operator": "eq", "value": "SUCCESS" }, { "operator": "OR", "conditions": [ { "field": "$.data[0].label", "operator": "eq", "value": "Seguridad perimetral" }, { "field": "$.data[0].value", "operator": "gt", "value": 1000 } ] } ], "nextCommand": { "true": "C3", "false": "C2" } } }, { "id": "C2", "fullUrl": "https://app.sepiia.run/Sepiia6-gestion/rest/general/ExecuteJsonPathQueryFromOrigin", "contentType": "application/json", "getParameters": "", "headerParameters": [], "postParameters": { "source": "custom.PROD_CATEGORY[?(@.id == '${typeProdId}')]", "operationId": 20 }, "customAuthorization": "Bearer 480nwy5j92xeftb3x0hxe2w4ade0c5e8vr89q2e8l8e0102jve8y97t21lzs78c4222w577033" }, { "id": "C3", "fullUrl": "https://app.sepiia.run/Sepiia6-gestion/rest/general/ExecuteJsonPathQueryFromOrigin", "contentType": "application/json", "getParameters": "", "headerParameters": [], "postParameters": { "source": "custom.PROD_CATEGORY", "operationId": 20 }, "customAuthorization": "Bearer 480nwy5j92xeftb3x0hxe2w4ade0c5e8vr89q2e8l8e0102jve8y97t21lzs78c4222w577033" } ] }
 

 
Reemplazar este instructivo por el link al formulario de feedback de la sección.
  1. Duplicar un formulario de feedback de CDA Usuarios de Tally (CDA-C-Nombre de sección) y colocarle el nombre de la sección actual.
    1. ⚠️
      Importante: Si esta nueva sección de Notion fue reubicada en medio de otras secciones pre-existentes, habrá que corregir la numeración todos los formularios de Tally que refirieran a las secciones que tuvieron que cambiar de numeración.
  1. Dentro del formulario, ir a “Share” > “Embed form” y seleccionar “Standard”.
    1. notion image
  1. Seleccionar “Copy embed link”.
    1. notion image
  1. Pegar el link al final de la columna central de la página de Notion y seleccionar Embed/Insertar.
  1. Ajustar el alto del formulario. El inicio de la L espejada, en la esquina inferior derecha, debe estar apenas por debajo del botón “Creado con Tally”.
    1. notion image