¿Qué son los webhooks?
Los webhooks son una forma de comunicación entre aplicaciones que permite enviar notificaciones o datos automáticamente cuando ocurre un evento específico.En el contexto de ArcGIS Online, los webhooks pueden activarse cuando se crean, actualizan o eliminan elementos, lo que permite integraciones automatizadas con otras plataformas, como Microsoft Teams.
Escenario
Supongamos que tenemos un tablero de control en donde tenemos embebido un formulario de Survey123 que nos permite realizar la asignación de una actividad a un usuario en especifico y queremos que el usuario reciba la notificacion de la asignación a través de Microsoft Teams.
¿Qué necesito para lograrlo?
La creación de los webhooks se puede hacer a través del uso de aplicaciones de terceros. Entre los mas usados tenemos Microsoft Power Automate, Zapier o Make. Y ArcGIS ya tiene conectores de webhooks preestablecidos para aplicativos como Survey123 y Quick Capture. Para resolver el escenario se va a utilizar Power Automate y ArcGIS Online.
Flujo de trabajo y explicación

1. Tenemos un formulario de Survey123 llamado Actividades GIS y desde Power Automate se crea el conector y se crea el webhook para que cada vez que se envíe el formulario se active el flujo.
2. Vamo a trabajar con 3 personas por lo que creamos un condicional para que cada vez que se envie al usuario1 caso contrario entra al siguiente condicional si es para el usuario 2 se ejecuta sino continua, y asi sucesivamente
3. Se utiliza el componente Publicar tarjeta en un canal o chat para establecer la notificacion
4. Se revisa las notificaciones en microsoft Teams y se puede abrir el hipervinculo a un producto de ArcGIS ya sea en la web o dentro de Teams.
¿Cual es el paso a paso?
1. Para este escenario tenemos ya creado un formulario de Survey123 que esta embebido en un tablero de control que nos sirve para asignar tareas. Nota: Si quiere mas información de este flujo se implemento usando el solucion de GIS Request Management)

2. Ahora nos dirigimos a Power Automate y seleccionamos plantillas. En el buscador escribimos Survey123 y seleccionamos la primera opción de enviar un correo electrónico (esta es una plantilla, posteriormente se modificará)

Nota: Dar los permisos necesarios para trabajar
3. Se procede a eliminar el conector llamado "Send a Email" ya que no vamos a usarlo.
4. Dar clic en el elemento llamado When a survey response is submitted para proceder a configurarlo. La clave es dejarle en Sí en incluir informacion de la encuesta y en la lista desplegable seleccionar el nombre de la encuesta.

Ojo, si no aparece el nombre de la encuesta colocar el ID de la encuesta que se encuentra en la url.

5. Se procede a dar clic en el más y se selecciona condición

y en la configuración se procede a colocar los campos provenientes del formulario en este caso debe cumplir con los dos criterios la primera es que este asignado y la segunda es el nombre de la persona a la que se quiere asignar en este caso mi nombre

6. Ahora si vamos a crear la condicion para verdadero. En este caso damos clic en más y se sugiere buscar en los elementos la opcion de Microsoft Teams (no hacerlo por busqueda de nombre que no aparecen todas las opciones) y buscamos la opción de publicar tarjeta en un chat o canal

7. Para la configuración del elemento tenemos lo siguiente: Seleccionamos Bot de flow para que este vinculado a un bot. Para poder personalizar el mensaje a través de una tarjeta se usó un jason que esta detallado a continuación:

Lo que hace el Script es la creación de una tarjeta en .json y hay 4 puntos claves:
En la línea 15 se trae el atributo del survey123 nombre de la persona asignada
En la línea 23 se trae el atributo del survey123 con la urgencia
En la línea 27 se trae el atributo del survey123 del tiempo estimado
En la línea 43 se incluye la url de un tablero de control para que puedan ver las asignaciones y progresos. Se puede colocar solamente la url para que se abra en un navegador. En este caso esta configurado para que se despliegue en tablero de control dentro del mismo Teams a través del plugin de ArcGIS para Teams. ¡No te parece fantástico!
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.4",
"body": [
{
"type": "TextBlock",
"text": "Nueva Asignación",
"weight": "Bolder",
"size": "Large",
"color": "Accent"
},
{
"type": "TextBlock",
"text": "Se ha creado una nueva asignación asignada a: **@{triggerOutputs()?['body/feature/attributes/businessunit']}**.",
"wrap": true
},
{
"type": "FactSet",
"facts": [
{
"title": "Importancia Alta:",
"value": "@{triggerOutputs()?['body/feature/attributes/urgent']}"
},
{
"title": "Tiempo estimado (horas):",
"value": "@{triggerOutputs()?['body/feature/attributes/plannedeffort']}"
}
]
},
{
"type": "TextBlock",
"text": "Por favor, revisa el siguiente tablero para más detalles.",
"wrap": true
},
{
"type": "ActionSet",
"actions": [
{
"type": "Action.OpenUrl",
"title": "Abrir Tablero en ArcGIS for Teams",
"url": "https://teams.microsoft.com/l/entity/ba4eda44-cd55-4e15-855c-0debafb0490b/viewer?context=%7B%22subEntityId%22:%22itemId---866de69cbad64b4b9046b81102f86390___itemSubTypes---Dashboard___isAGOLPublicItem---false%22%7D"
}
]
}
]
}
8. Y en falso se coloca nuevamente el paso 5 al 7 pero se cambia la persona a la que se asigna en el condicional.
9. Se procede a guardar y ejecutar y ahora es tiempo de ¡ponerlo en acción!
Resultados
Desde el tablero de control usando el Survey123 se envía la asignacion con el nombre y el estado


En power Automate podemos validar que se ha ejecutado correctamente

Podemos ver como en Microsoft Teams nos llega la notificación

Y si damos clic en Abrir tablero en ArcGIS for Teams podemos visualizar el tablero de control dentro de Teams

¡Ahora es momento de ponerlo a prueba!