Webhooks

Webhooks

Descripción General

Crear un webhook

Configurar una campaña para disparar webhooks

Habilitar y deshabilitar webhooks

Regenerar el secreto de firma

Validar la firma del webhook

Resolviendo problemas con webhooks

Referencia de datos de webhooks

Campaña Activada

Campaña Pausada

Campaña Resumida

Campaña Cancelada

Campaña Finalizada

Llamada Terminada

Descripción General

SIP Caller puede activar webhooks para notificar a sistemas externos sobre eventos que ocurren en nuestra plataforma. De esta manera, se pueden desarrollar muchas integraciones personalizadas útiles entre SIP Caller y otros sistemas.

El procedimiento consta de 2 pasos:

  1. Crear un webhook.
  2. Configurar una campaña con un webhook existente.

Crear un webhook

Para crear un webhook, inicia sesión en SIP Caller y ve a Configuración > Webhooks. Luego haz clic en el botón “Crear” para abrir el cuadro de diálogo de creación de webhooks y procede de la siguiente manera:

  • Ingresa un nombre descriptivo para el webhook, de modo que puedas seleccionarlo fácilmente más tarde.
  • Introduce la URL que deseas que SIP Caller invoque cuando se produzcan los eventos.
  • Selecciona los eventos que te interesan.
  • Configura el tiempo de espera, los reintentos máximos, la edad máxima del evento y el máximo de conexiones simultáneas, según sus necesidades.

Configurar una campaña para disparar webhooks

Una vez creado el webhook, es necesario configurar las campañas para que lo utilicen. Para ello, solo hay que seleccionar el webhook en la pestaña Comportamiento.

Habilitar y deshabilitar webhooks

Si encuentras un problema al procesar los webhooks disparados por SIP Caller, puedes pausar la generación de estos eventos. Al hacerlo, SIP Caller pondrá en cola estos eventos durante 24 horas, lo que te dará tiempo para corregir tu algoritmo de procesamiento de eventos y, luego, podrás habilitar los webhooks nuevamente. Para ello, ve a Configuración > Webhooks y presiona los botones “Habilitar” o “Deshabilitar” en la columna Acciones.

Regenerar el secreto de firma

Desde la columna Acciones de la lista de webhooks, también puedes hacer clic en el botón para regenerar el secreto de firma. Esto hará que SIP Caller comience a firmar los webhooks utilizando el nuevo secreto. Cualquier integración que tengas utilizando el secreto anterior dejará de funcionar, ya que la validación fallará, por lo que debes tener cuidado al realizar esta acción.

Validar la firma del webhook

Cada notificación de webhook enviada por SIP Caller tendrá el encabezado “Sip-Caller-Signature” en la solicitud HTTP, con un valor similar al siguiente:

t=1728776932,v1=df9da282f3ffe9a7d855cc11589d86d33852ee0bbc1abaacab854c7f52e6efae

El valor asignado a “t” es una marca de tiempo informando cuando el evento fue generado. El valor asignado a “v1” es la firma del webhook. Necesitarás ambos valores para hacer la verificación, de la siguiente manera:

  1. Concatena la marca de tiempo (como texto), un punto (.), y los datos con formato JSON recibidos en el cuerpo de la solicitud HTTP. Por ejemplo:

1728776932.{"id" : "01928322-860c-77f9-9c3b-7f8abe3b6afd".......}

  1. Calcula la firma del webhook esperada, computando un HMAC utilizando la función de hash SHA256. Utiliza el secreto de firma del webhook como la clave, y el valor resultante de la concatenación en el punto previo como el mensaje.
  2. Compara la firma del webhook calculada con el valor tomado del parámetro “v1” en el encabezado de la solicitud HTTP. Si ambos valores coinciden, entonces puedes proceder con el procesamiento del evento del webhook en forma segura.

Resolviendo problemas con webhooks

Desde la consola de SIP Caller > Configuración > Webhooks, puedes hacer click sobre un webhook y ver todos los eventos que fueron notificados.

La lista puede ser filtrada para identificar el evento que estás buscando. Luego, cuando un evento es presionado, se abrirá un panel del lado derecho mostrando todos los detalles de cada intento de notificación.

Referencia de datos de webhooks

Los webhooks generados por SIP Caller son solicitudes HTTP POST que contienen JSON como datos. A continuación se describe el detalle de los datos JSON enviados para cada evento:

Campaña Activada

{

   "id":"01928321-9129-7f25-8ad3-80c57b16d3ed",

   "object":"event",

   "apiVersion":1,

   "createdAt":"2024-10-12T23:47:48.133",

   "type":"CampaignActivated",

   "data":{

      "customer":{

         "id":"0192830c-58a0-7be2-8e3d-dc8997d0a631",

         "name":"SIP Caller (Demo account)"

      },

      "campaign":{

         "id":"0192831a-fbbe-735f-b385-a3252781817d",

         "name":"Campaign 1",

         "phoneSystem":{

            "id":"01928310-2d96-7a70-bdfc-4bcd24c22c95",

            "name":"My Phone System",

            "extension":{

               "id":"07bcd1de-1e5d-47b5-99bf-b846c7a12f09",

               "name":"SIP Caller Extension"

            }

         },

         "dialer":{

            "mode":"Power"

         },

         "status":"Active",

         "type":"Static",

         "startDate":"2024-10-12",

         "endDate":"2024-10-13",

         "timeZoneId":"America/Argentina/Buenos_Aires",

         "callflow":{

            "forHuman":{

               "id":"01928316-cfd7-75c7-bb6d-9128e205c53f",

               "name":"Survey"

            },

            "forMachine":null

         },

         "varNames":[

            "Customer Name",

            "Due Balance"

         ],

         "startedAt":null,

         "endedAt":null

      },

      "origin":{

         "user":{

            "id":"0192830c-589d-7384-b157-f922afab9e55",

            "name":"John Doe",

            "email":"john.doe@example.com"

         },

         "ipAddress":"98.97.134.180"

      }

   }

}

Campaña Pausada

{

   "id":"01928323-1fcd-721d-ad19-8ce4cfc1c135",

   "object":"event",

   "apiVersion":1,

   "createdAt":"2024-10-12T23:49:30.185",

   "type":"CampaignPaused",

   "data":{

      "customer":{

         "id":"0192830c-58a0-7be2-8e3d-dc8997d0a631",

         "name":"SIP Caller (Demo account)"

      },

      "campaign":{

         "id":"0192831a-fbbe-735f-b385-a3252781817d",

         "name":"Campaign 1",

         "phoneSystem":{

            "id":"01928310-2d96-7a70-bdfc-4bcd24c22c95",

            "name":"My Phone System",

            "extension":{

               "id":"07bcd1de-1e5d-47b5-99bf-b846c7a12f09",

               "name":"SIP Caller Extension"

            }

         },

         "dialer":{

            "mode":"Power"

         },

         "status":"Paused",

         "type":"Static",

         "startDate":"2024-10-12",

         "endDate":"2024-10-13",

         "timeZoneId":"America/Argentina/Buenos_Aires",

         "callflow":{

            "forHuman":{

               "id":"01928316-cfd7-75c7-bb6d-9128e205c53f",

               "name":"Survey"

            },

            "forMachine":null

         },

         "varNames":[

            "Customer Name",

            "Due Balance"

         ],

         "startedAt":"2024-10-12T23:48:05.603",

         "endedAt":null

      },

      "origin":{

         "user":{

            "id":"0192830c-589d-7384-b157-f922afab9e55",

            "name":"John Doe",

            "email":"john.doe@example.com"

         },

         "ipAddress":"98.97.134.180"

      }

   }

}

Campaña Resumida

{

   "id":"01928329-e0ae-767b-831c-eb534f0ca3ce",

   "object":"event",

   "apiVersion":1,

   "createdAt":"2024-10-12T23:56:52.78",

   "type":"CampaignResumed",

   "data":{

      "customer":{

         "id":"0192830c-58a0-7be2-8e3d-dc8997d0a631",

         "name":"SIP Caller (Demo account)"

      },

      "campaign":{

         "id":"0192831a-fbbe-735f-b385-a3252781817d",

         "name":"Campaign 1",

         "phoneSystem":{

            "id":"01928310-2d96-7a70-bdfc-4bcd24c22c95",

            "name":"My Phone System",

            "extension":{

               "id":"07bcd1de-1e5d-47b5-99bf-b846c7a12f09",

               "name":"SIP Caller Extension"

            }

         },

         "dialer":{

            "mode":"Power"

         },

         "status":"Active",

         "type":"Static",

         "startDate":"2024-10-12",

         "endDate":"2024-10-13",

         "timeZoneId":"America/Argentina/Buenos_Aires",

         "callflow":{

            "forHuman":{

               "id":"01928316-cfd7-75c7-bb6d-9128e205c53f",

               "name":"Survey"

            },

            "forMachine":null

         },

         "varNames":[

            "Customer Name",

            "Due Balance"

         ],

         "startedAt":"2024-10-12T23:48:05.603",

         "endedAt":null

      },

      "origin":{

         "user":{

            "id":"0192830c-589d-7384-b157-f922afab9e55",

            "name":"John Doe",

            "email":"john.doe@example.com"

         },

         "ipAddress":"98.97.134.180"

      }

   }

}

Campaña Cancelada

{

   "id":"01928761-9826-7ca4-9283-eb6f7a338c91",

   "object":"event",

   "apiVersion":1,

   "createdAt":"2024-10-13T19:36:13.093",

   "type":"CampaignCanceled",

   "data":{

      "customer":{

         "id":"0192830c-58a0-7be2-8e3d-dc8997d0a631",

         "name":"SIP Caller (Demo account)"

      },

      "campaign":{

         "id":"01928761-27c6-7355-9add-0c4f40154847",

         "name":"Campaign 1",

         "phoneSystem":{

            "id":"01928310-2d96-7a70-bdfc-4bcd24c22c95",

            "name":"My Phone System",

            "extension":{

               "id":"07bcd1de-1e5d-47b5-99bf-b846c7a12f09",

               "name":"SIP Caller Extension"

            }

         },

         "dialer":{

            "mode":"Power"

         },

         "status":"Canceled",

         "type":"Static",

         "startDate":"2024-10-13",

         "endDate":"2024-10-13",

         "timeZoneId":"America/Argentina/Buenos_Aires",

         "callflow":{

            "forHuman":{

               "id":"01928316-cfd7-75c7-bb6d-9128e205c53f",

               "name":"Survey"

            },

            "forMachine":null

         },

         "varNames":[

            "Customer Name",

            "Due Balance"

         ],

         "startedAt":null,

         "endedAt":"2024-10-13T19:36:13.093"

      },

      "origin":{

         "user":{

            "id":"0192830c-589d-7384-b157-f922afab9e55",

            "name":"John Doe",

            "email":"john.doe@example.com"

         },

         "ipAddress":"98.97.134.223"

      }

   }

}

Campaña Finalizada

{

   "id":"01928735-88af-7fc5-ae74-81ff77bf6e61",

   "object":"event",

   "apiVersion":1,

   "createdAt":"2024-10-13T18:48:05.526",

   "type":"CampaignFinished",

   "data":{

      "customer":{

         "id":"0192830c-58a0-7be2-8e3d-dc8997d0a631",

         "name":"SIP Caller (Demo account)"

      },

      "campaign":{

         "id":"0192831a-fbbe-735f-b385-a3252781817d",

         "name":"Campaign 1",

         "phoneSystem":{

            "id":"01928310-2d96-7a70-bdfc-4bcd24c22c95",

            "name":"My Phone System",

            "extension":{

               "id":"07bcd1de-1e5d-47b5-99bf-b846c7a12f09",

               "name":"SIP Caller Extension"

            }

         },

         "dialer":{

            "mode":"Power"

         },

         "status":"Finished",

         "type":"Static",

         "startDate":"2024-10-12",

         "endDate":"2024-10-13",

         "timeZoneId":"America/Argentina/Buenos_Aires",

         "callflow":{

            "forHuman":{

               "id":"01928316-cfd7-75c7-bb6d-9128e205c53f",

               "name":"Survey"

            },

            "forMachine":null

         },

         "varNames":[

            "Customer Name",

            "Due Balance"

         ],

         "startedAt":"2024-10-12T23:48:05.603",

         "endedAt":"2024-10-13T18:48:05.526"

      },

      "origin":null

   }

}

Llamada Terminada

{

   "id":"01928322-860c-77f9-9c3b-7f8abe3b6afd",

   "object":"event",

   "apiVersion":1,

   "createdAt":"2024-10-12T23:48:50.824",

   "type":"CallEnded",

   "data":{

      "customer":{

         "id":"0192830c-58a0-7be2-8e3d-dc8997d0a631",

         "name":"SIP Caller (Demo account)"

      },

      "campaign":{

         "id":"0192831a-fbbe-735f-b385-a3252781817d",

         "name":"Campaign 1",

         "varNames":[

            "Customer Name",

            "Due Balance"

         ]

      },

      "callDetails":{

         "callId":"01928322-32a3-7000-bf0d-bf1af7eda4c5",

         "number":"18035551004",

         "varValues":[

            "Stefan Robertson",

            "$99.00 "

         ],

         "attempt":1,

         "phoneSystem":{

            "id":"01928310-2d96-7a70-bdfc-4bcd24c22c95",

            "name":"My Phone System",

            "extension":{

               "id":"07bcd1de-1e5d-47b5-99bf-b846c7a12f09",

               "name":"SIP Caller Extension"

            }

         },

         "timeZoneId":"America/Argentina/Buenos_Aires",

         "startedAt":"2024-10-12T23:48:29.479",

         "ringResult":"Answer",

         "sipResponse":{

            "code":200,

            "descrip":"OK"

         },

         "answeredAt":"2024-10-12T23:48:33.735",

         "answerType":"Human",

         "callflow":{

            "id":"01928316-cfd7-75c7-bb6d-9128e205c53f",

            "name":"Survey"

         },

         "endedAt":"2024-10-12T23:48:50.819",

         "endType":"CallflowComplete",

         "lastAction":{

            "id":"535248e9-c9a2-4a15-8c1c-9d175f82ac21",

            "type":"TextPrompt"

         },

         "duration":{

            "setup":"00:00:04.256",

            "established":"00:00:17.084",

            "total":"00:00:21.34"

         },

         "gatheredData":"Question1=4|Question2=1",

         "outcome":"Success",

         "retryAt":null

      }

   }

}



SIP Caller
© 2024 Easy Caller LLC Todos los Derechos Reservados
LinkedinYou Tube