Saltar al contingut principal

Webhooks

Webhooks és una funcionalitat que permet integrar Portal amb eines de tercers per a l'enviament de notificacions quan es produeixen determinats esdeveniments a la organització.

Esdeveniments disponibles:

  • Alerta activada
  • Microservei executat
  • Objecte creat
  • Objecte modificat
  • Objecte eliminat
  • Operació executada
  • Operació executada en un workspace

Quan ocorre un d'aquests esdeveniments, Portal realitza una crida HTTP a la URL configurada per l'organització i envia un missatge amb la informació corresponent. L'aplicació de destí pot utilitzar aquestes dades per executar accions com crear un tiquet en un sistema ITSM, enviar un missatge per Slack o Microsoft Teams, enviar un correu electrònic, entre altres.

Aquesta eina només pot ser configurada per un usuari amb rol de Administrador d'organització.

Visió general​

La pantalla principal mostra el llistat de webhooks configurats a la organització, indicant si estan habilitats o deshabilitats. La taula inclou:

  • Nom. Nom assignat al webhook. En fer clic s'accedeix a la seva vista de detall.
  • Tipus d'esdeveniment. Esdeveniment que activarà el webhook.
  • URL de destí. Adreça del sistema extern que rep l'esdeveniment i actua segons la informació proporcionada en el missatge.
  • Estat. Indica si el webhook està Habilitat o Deshabilitat.

webhook-intg

Crear una integració webhook​

Per crear un nou webhook s'han de seguir els següents passos:

  1. En Portal, accedir a Configuració -> Integracions Webhook.

  2. Fer clic a Nou.

  3. Omplir i configurar cada secció del formulari:

    Visió general

    webhook-create1

    • Nom. Nom assignat al webhook.
    • Tipus d'esdeveniment. Esdeveniment que activarà el webhook.
    • URL de destí. Adreça del sistema extern que rep l'esdeveniment i actua segons la informació proporcionada en el missatge.

    Elements

    webhook-create2

    El contingut d'aquesta taula depèn del tipus d'esdeveniment seleccionat.

    • Alerta activada

      • Mostra el llistat d'alertes actives de la organització per seleccionar quines enviaran el webhook.

      • Enviar webhook per a totes les alertes - Activa el webhook per a totes les alertes.

    • Microservei executat

      • Mostra el llistat de microserveis habilitats per seleccionar quins enviaran el webhook.

      • Enviar webhook per a tots els microserveis - Activa el webhook per a tots els microserveis.

      • En ambdós casos, el botó Veure permet accedir a la vista de detall del recurs.

    • Objecte creat, Objecte modificat o Objecte eliminat

      • Mostren un llistat per seleccionar l'objecte que enviarà el webhook després de l'acció corresponent.

      • Enviar webhook per a tots els objectes - Activa el webhook per a tots els objectes.

    • Operació executada

      • Mostra un llistat per seleccionar l'operació que enviarà el webhook quan s'executi.

      • Enviar webhook per a totes les operacions - Activa el webhook per a totes les operacions.

    • Operació executada en un workspace

      • Mostra un llistat per seleccionar l'operació que enviarà un webhook per cada dispositiu en què s'ha executat.

      • Enviar webhooks per a totes les operacions executades en cada workspace - Activa el webhook per a totes les operacions per dispositiu.

      nota
      • Les operacions poden executar-se en un o més dispositius.

      • L'esdeveniment Operació executada permet enviar un webhook a nivell global.

      • L'esdeveniment Operació executada en un workspace permet enviar un webhook per cada un dels dispositius en què s'ha executat l'operació.

        Exemple:

        Si s'executa l'operació Reiniciar en tres dispositius simultàniament, es generaran:

        • Una notificació webhook de tipus Operació executada.
        • Tres notificacions webhook de tipus Operació executada en un workspace.

    Configuració del missatge

    webhook-create3

    En aquest apartat es defineix el missatge que s'enviarà quan occorri l'esdeveniment. La configuració utilitza format JSON i determina l'estructura i el contingut del missatge transmès al sistema extern.

    Les variables es substitueixen automàticament per valors reals quan es produeix l'esdeveniment.

  4. Fer clic a Guardar.

avis

Una organització no hauria de tenir dos webhooks amb la mateixa configuració perquè podria generar enviaments duplicats.

Variables disponibles per al missatge​

Tots els tipus d'esdeveniments​

VariablesDescripció
#event_typeTipus d'esdeveniment
#organization_idID de l'organització
#organization_nameNom de la organització/inquilí
#timestampData i hora de l'esdeveniment (ISO 8601)

Alerta activada​

VariablesDescripció
#alert_nameNom de l'alerta
#alert_informationInformació addicional de l'alerta
#alert_startData i hora d'inici de l'alerta (ISO 8601)
#alert_elementElement que va disparar l'alerta
#workspace_idID de l'espai de treball
#workspace_nameNom de l'espai de treball
#workspace_last_userÚltim usuari que va utilitzar l'espai de treball
#workspace_reporting_group_idID del grup de report
#workspace_reporting_group_nameNom del grup de report
#workspace_internal_idID intern de l'espai de treball

Exemple de plantilla​

{
"message": {
"event_type": "#event_type",
"organization_id": "#organization_id",
"organization_name": "#organization_name",
"workspace_id": "#workspace_id",
"workspace_name": "#workspace_name",
"workspace_last_user": "#workspace_last_user",
"reporting_group_id": "#workspace_reporting_group_id",
"reporting_group_name": "#workspace_reporting_group_name",
"alert_name": "#alert_name",
"alert_information": "#alert_information",
"alert_start": "#alert_start",
"alert_element": "#alert_element",
"timestamp": "#timestamp"
}
}

Microservei executat​

VariablesDescripció
#operation_idID de l'operació executada
#microservice_idID del microservei
#microservice_nameNom del microservei
#operation_startdateData i hora d'inici de l'operació (ISO 8601)
#operation_enddateData i hora de fi de l'operació (ISO 8601)
#operation_resultResultat de l'operació (Completed, Error, Timeout o Cancelled)
#workspace_idID de l'espai de treball
#workspace_nameNom de l'espai de treball
#workspace_last_userÚltim usuari que va utilitzar l'espai de treball
#workspace_reporting_group_idID del grup de report
#workspace_reporting_group_nameNom del grup de report
#operació_iniciadaperUsuari o component que va iniciar l'execució del microservei
#workspace_internal_idID intern de l'espai de treball

Exemple de plantilla​

{
"message": {
"event_type" : "#event_type",
"organization_id" : "#organization_id",
"organization_name" : "#organization_name",
"timestamp" : "#timestamp",
"workspace_id" : "#workspace_id",
"workspace_name" : "#workspace_name",
"workspace_last_user" : "#workspace_last_user",
"reporting_group_id" : "#workspace_reporting_group_id",
"reporting_group_name" : "#workspace_reporting_group_name",
"operation_id": "#operation_id",
"microservice_id": "#microservice_id",
"microservice_name": "#microservice_name",
"operation_startdate": "#operation_startdate",
"operation_enddate": "#operation_enddate",
"operation_result": "#operation_result"
}
}

Objecte creat, modificat o eliminat​

VariablesDescripció
#event_typeTipus d'esdeveniment
#organization_idID de l'organització
#organization_nameNom de la organització/inquilí
#timestampData i hora de l'esdeveniment (ISO 8601)
#entity_typeTipus d'entitat
#entity_nameNom de l'entitat
#entity_idID de l'entitat
#actionAcció realitzada (Creació, Modificació o Eliminació)
#triggered_by_nameNom de l'usuari que va disparar l'esdeveniment
#triggered_by_emailAdreça de correu electrònic de l'usuari que va disparar l'esdeveniment
#triggered_by_idID de l'usuari que va disparar l'esdeveniment

Exemple de plantilla​

{
"message": {
"event-type": "#event_type",
"organization": {
"id": "#organization_id",
"name": "#organization_name"
},
"entity": {
"entity-type": "#entity_type",
"object-name": "#entity_name",
"object-id": "#entity_id"
},
"metadata": {
"action": "#action",
"timestamp": "#timestamp",
"user-name": "#triggered_by_name",
"useremail": "#triggered_by_email",
"user-id": "#triggered_by_id"
}
}
}

Operació executada​

VariablesDescripció
#event_typeTipus d'esdeveniment
#timestampData i hora de l'esdeveniment (ISO 8601)
#organization_idID de l'organització
#organization_nameNom de la organització/inquilí
#operation_typeTipus d'operació
#descriptionDescripció de l'operació
#statusEstat actual de l'execució de l'operació
#summaryResum de l'operació (JSON)
#started_byUsuari que va iniciar l'operació
#created_atData i hora de creació de l'operació (ISO 8601)
#started_atData i hora d'inici de l'operació (ISO 8601)
#finished_atData i hora de finalització de l'operació (ISO 8601)
#total_workspacesNombre total d'espais de treball processats
#total_warningsNúmero total d'execucions amb advertències durant l'operació
#total_errorsNúmero total d'execucions amb errors durant l'operació
#flow_idID del flux associat
#microservice_idID del microservei associat
#fra_typeTipus de Flexxible Remote Assistance (FRA)
#fra_startData i hora d'inici de Flexxible Remote Assistance (FRA) (ISO 8601)
#fra_endData i hora de fi de Flexxible Remote Assistance (FRA) (ISO 8601)

Exemple de plantilla​

{
"message": {
"event_type": "#event_type",
"timestamp": "#timestamp",
"organization": {
"id": "#organization_id",
"name": "#organization_name"
},
"operation": {
"type": "#operation_type",
"description": "#description",
"status": "#status",
"summary": "#summary",
"started_by": "#started_by",
"created_at": "#created_at",
"started_at": "#started_at",
"finished_at": "#finished_at"
},
"results": {
"total_workspaces": "#total_workspaces",
"total_warnings": "#total_warnings",
"total_errors": "#total_errors"
},
"context": {
"flow_id": "#flow_id",
"microservice_id": "#microservice_id",
"fra_type": "#fra_type",
"fra_start": "#fra_start",
"fra_end": "#fra_end"
}
}
}

Operació executada en un workspace​

VariablesDescripció
#event_typeTipus d'esdeveniment
#timestampData i hora de l'esdeveniment (ISO 8601)
#organization_idID de l'organització
#organization_nameNom de la organització/inquilí
#operation_typeTipus d'operació
#descriptionDescripció de l'operació
#operation_statusEstat de l'operació
#started_byUsuari que va iniciar l'operació
#created_atData i hora de creació de l'operació (ISO 8601)
#started_atData i hora d'inici de l'operació (ISO 8601)
#finished_atData i hora de fi de l'operació (ISO 8601)
#operation_flow_idID del flux associat a l'operació
#operation_microservice_idID del microservei associat a l'operació
#operation_fra_typeTipus de Flexxible Remote Assistance (FRA)
#operation_fra_startData i hora d'inici de Flexxible Remote Assistance (FRA)(ISO 8601)
#operation_fra_endData i hora de fi de Flexxible Remote Assistance (FRA) (ISO 8601)
#workspace_idID de l'espai de treball
#workspace_nameNom de l'espai de treball
#workspace_last_userÚltim usuari que va utilitzar l'espai de treball
#workspace_reporting_group_idID del grup de report
#workspace_reporting_group_nameNom del grup de report
#workspace_operation_resultResultat de l'operació a l'espai de treball
#workspace_operation_startdateData i hora d'inici de l'operació en el workspace (ISO 8601)
#workspace_operation_enddateData i hora de finalització de l'operació en el workspace (ISO 8601)
#workspace_internal_idID intern de l'espai de treball

Exemple de plantilla​

{
"message": {
"event_type": "#event_type",
"timestamp": "#timestamp",
"organization": {
"id": "#organization_id",
"name": "#organization_name"
},
"operation": {
"type": "#operation_type",
"description": "#description",
"status": "#operation_status",
"started_by": "#started_by",
"created_at": "#created_at",
"started_at": "#started_at",
"finished_at": "#finished_at"
},
"context": {
"flow_id": "#operation_flow_id",
"microservice_id": "#operation_microservice_id",
"fra_type": "#operation_fra_type",
"fra_start": "#operation_fra_start",
"fra_end": "#operation_fra_end"
},
"workspace": {
"id": "#workspace_id",
"name": "#workspace_name",
"last_user": "#workspace_last_user",
"reporting_group": {
"id": "#workspace_reporting_group_id",
"name": "#workspace_reporting_group_name"
}
},
"execution": {
"result": "#workspace_operation_result",
"start_date": "#workspace_operation_startdate",
"end_date": "#workspace_operation_enddate"
}
}
}

Slack​

A continuació, es mostra un exemple de plantilla compatible amb Slack Incoming Webhooks, que pot utilitzar-se com a base per construir el missatge enviat des de Portal:

{
"text": "*Flexxible microservice was executed*",
"blocks": [
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Microservicio:*\n#microservice_name"
},
{
"type": "mrkdwn",
"text": "*Resultado:*\n#operation_result"
}
]
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Organización:*\n#organization_name"
},
{
"type": "mrkdwn",
"text": "*Workspace:*\n#workspace_name"
}
]
},
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Inicio:*\n#operation_startdate"
},
{
"type": "mrkdwn",
"text": "*Fin:*\n#operation_enddate"
}
]
}
]
}
nota

Per a més informació sobre el format de missatges, els blocs disponibles i les millors pràctiques, consulta la guia oficial de Slack.

Microsoft Teams​

A Microsoft Teams, les plantilles es poden consultar directament des de la configuració de cada canal.

nota

Per obtenir detalls sobre com configurar correctament un webhook entrant i quina estructura ha de tenir la plantilla JSON, consulta la guia oficial de Microsoft.

Vista de detall​

En seleccionar un webhook des de la taula s'accedeix a la seva vista de detall:

Visió general​

Presenta targetes amb informació bàsica: Estat, Creat el i Actualitzat el.

webhook-detail

1. Visió general​

  • Nom. Nom assignat al webhook.
  • Tipus d'esdeveniment. Esdeveniment que activarà el webhook.
  • Creat per. Usuari que va crear l'esdeveniment.
  • Actualitzat per. Últim usuari que va modificar el webhook.
  • URL de destí. Adreça del sistema extern que rep l'esdeveniment i actua segons la informació proporcionada en el missatge.

2. Recursos seleccionats​

Mostra els recursos associats segons el tipus d'esdeveniment.

3. Plantilla de missatge​

Presenta l'estructura JSON configurada per al webhook.

Mètriques​

Intentos de lliurament de missatges​

Aquesta pestanya presenta dos nivells d'informació. A la part superior, es mostren targetes resum amb l'estat global dels missatges enviats mitjançant el webhook:

  • Missatges exitosos
  • Missatges pendents
  • Missatges en progrés
  • Missatges fallits
  • Total de missatges
  • Índex d'èxit

delivery-attempts

A la part inferior es mostra una taula amb l'històric d'intents d'enviament de missatges corresponents als últims 28 dies. Els registres poden filtrar-se segons els següents criteris: Tots els intents, Intents exitosos, Intents pendents, Intents fallits i Intents en progrés.

La taula inclou la següent informació:

  • Estat. Resultat de l'execució.
  • Durada. En mil·lisegons, temps que va trigar en executar-se el webhook.
  • Codi de resposta. Codi HTTP retornat en executar-se el webhook.
  • Executat el. Data i hora en què es va realitzar l'execució.
  • Accions. Obre una finestra amb el detall de l'execució.

Quan una crida a la URL de destinació no es completa correctament, el sistema reintenta l'enviament del missatge de forma automàtica, segons la següent programació:

  • Immediatament
  • Als 5 segons
  • Als 5 minuts
  • Als 30 minuts
  • A les 2 hores
  • A les 5 hores
  • A les 10 hores
  • A les 10 hores (addicionals)
nota

Cada interval s'inicia a partir del fall de l'intent anterior.

informació

Si l'enviament d'un missatge falla tres vegades i es completa amb èxit en el quart intent, a la taula es mostraran quatre intents (tres fallits i un exitós). No obstant, el sistema el comptabilitzarà com un únic missatge.

Accions sobre webhooks​

La vista de detall també permet realitzar les següents accions sobre el webhook:

webhook-actions

Habilitar / Deshabilitar​

Habilita o deshabilita el webhook segons el seu estat actual.

nota

Els webhooks estan deshabilitats per defecte.

Edita​

Permet modificar:

  • Nom
  • Tipus d'esdeveniment
  • URL de destinació
  • Recursos
  • Plantilla de missatge

Suprimeix​

Elimina el webhook de forma permanent. Aquesta operació no es pot desfer.

Provar​

Envia un missatge amb el contingut de la plantilla a la URL configurada sense substituir les variables per valors reals. L'objectiu d'aquesta accion és validar la connectivitat i el format del missatge.