1000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Conectar aplicaciones externas a kChat
Esta guía le permite gestionar aplicaciones externas con kChat utilizando webhook.
Preámbulo
- un webhook es un método que permite a una aplicación ser informada inmediatamente cuando ocurre un evento particular en otra aplicación, en lugar de estar preguntando constantemente a esa aplicación si ha llegado algo nuevo (lo que se llama "polling")
- no es posible importar el historial de discusiones desde otra aplicación (Slack, Teams, Jabber, etc.) o desde otra organización
- webhook saliente: kChat comunica información a otras aplicaciones cuando ocurre un evento en kChat
- webhook entrante: kChat recibe información de otras aplicaciones para desencadenar acciones en kChat
Acceder a la interfaz de webhooks de kChat
Requisitos previos
- no ser un usuario externo (no verá el menú Integraciones)
Para configurar un webhook, encontrar aplicaciones e integraciones autoalojadas o de terceros:
- abrir la aplicación kChat (en su dispositivo o desde un navegador en la URL kchat.infomaniak.com)
- hacer clic en la flecha hacia abajo a la derecha del nombre de su organización en kChat
- hacer clic en Integraciones
- acceder a las categorías:
Ejemplo de integración
Crear un webhook entrante simple
Para ello:
- hacer clic en la categoría Webhooks entrantes
- hacer clic en el botón azul Agregar webhooks entrantes
- agregar un nombre y una descripción (máx. 500 caracteres) para el webhook
- seleccionar el canal que recibirá los mensajes
- guardar para obtener la URL (no divulgar públicamente) de tipo:
https://su-servidor-kchat.xyz/hooks/xxx-clave-generada-xxx
Uso del webhook
En la aplicación que debe publicar en kChat:
ajustar el código a continuación según la URL obtenida:
POST /hooks/xxx-clave-generada-xxx HTTP/1.1 Host: su-servidor-kchat.xyz Content-Type: application/json Content-Length: 63 { "text": "Hola, este es un texto\nEste es otro texto." }
- opcionalmente, puede usar la misma solicitud, pero en curl (para probar desde una Terminal en macOS, por ejemplo):
curl -i -X POST -H 'Content-Type: application/json' -d '{"text": "Hola, este es un texto\nEste es otro texto."}' https://su-servidor-kchat.xyz/hooks/xxx-clave-generada-xxx
Si no se establece un encabezado Content-Type, el cuerpo de la solicitud debe precederse con payload= de la siguiente manera:
payload={"text": "Hola, este es un texto\nEste es otro texto."}
Una solicitud exitosa recibirá la siguiente respuesta:
HTTP/1.1 200 OK
Content-Type: application/json
X-Version-Id: 4.7.1.dev.12799dvd77e172e8a2eba0f4041ec1471.false
Date: Sun, 01 Jun 2023 17:00:00 GMT
Content-Length: 58
{
"id":"x",
"create_at":1713198308869,
"update_at":1713198308869,
"delete_at":0,
"user_id":"x",
"channel_id":"x",
"root_id":"",
"original_id":"",
"participants":null,
"message":"test",
"type":"",
"props":{
"override_username":"webhook",
"override_icon_url":null,
"override_icon_emoji":null,
"webhook_display_name":"test",
"attachments":[
],
"card":null,
"from_webhook":"true"
},
"hashtags":null,
"metadata":{
"embeds":[
{
"type":"message_attachment"
}
],
"files":[
],
"reactions":[
]
},
"file_ids":null,
"has_reactions":false,
"edit_at":0,
"is_pinned":false,
"remote_id":null,
"reply_count":0,
"pending_post_id":null,
"is_following":false
}
Si deseas tener el mismo formato de respuesta que Slack:
HTTP/1.1 200 OK
Content-Type: text/plain
X-Request-Id: hoan69ws7rp5xj7wu9rmystry
X-Version-Id: 4.7.1.dev.12799dvd77e172e8a2eba0f4041ec1471.false
Date: Sun, 01 Jun 2023 17:00:00 GMT
Content-Length: 2
ok
debes agregar ?slack_return_format=true
al final de la URL del webhook.
Parámetros
Además del campo text
, aquí está la lista completa de parámetros admitidos:
Parámetro | Descripción | Requerido |
---|---|---|
text | Mensaje en formato Markdown que se mostrará en la publicación. Para desencadenar notificaciones, utiliza @<nombre_de_usuario> , @channel y @here como lo harías en otros mensajes de kChat. | Si no se define attachments , sí |
channel | Reemplaza el canal donde se publicará el mensaje. Utiliza el nombre del canal, no el nombre que se muestra, p. ej., town-square , no Plaza de la ciudad .Utiliza "@" seguido del nombre de usuario para enviar un mensaje directo. Por defecto, se usará el canal establecido al crear el webhook. El webhook puede publicar en cualquier canal público y privado donde el creador del webhook esté presente. Las publicaciones en mensajes directos aparecerán en el mensaje directo entre el usuario objetivo y el creador del webhook. | No |
username | Reemplaza el nombre de usuario bajo el cual se publica el mensaje. Por defecto, utiliza el nombre de usuario definido al crear el webhook; si no se ha definido ningún nombre de usuario, se utiliza webhook .El parámetro de configuración Permitir integraciones para sobrescribir nombres de usuario debe estar habilitado para que la sobrescritura del nombre de usuario tenga efecto. | No |
icon_url | Reemplaza la imagen de perfil con la que se publica el mensaje. Por defecto, utiliza la URL definida al crear el webhook; si no se ha definido un ícono, se mostrará el ícono estándar de webhook (). El parámetro de configuración Permitir integraciones para sobrescribir íconos de fotos de perfil debe estar habilitado para que la sobrescritura del ícono tenga efecto. | No |
icon_emoji | Reemplaza la imagen de perfil y el parámetro icon_url .Por defecto, no se define nada al crear el webhook. El valor esperado es el nombre de un emoji, tal como se introduce en un mensaje, con o sin dos puntos ( : ).El parámetro de configuración Permitir integraciones para sobrescribir íconos de fotos de perfil debe estar habilitado para que la sobrescritura sea efectiva. | No |
attachments | Adjuntos al mensaje que se utilizan para opciones de formato más ricas. | Si no se define text , sí |
type | Define el type de la publicación, principalmente para su uso por complementos.Si no está vacío, debe comenzar con " custom_ ". | No |
Ejemplo de código con parámetros
Así es como puedes generar un mensaje más completo con parámetros, algunos de los cuales pueden sobrescribir parámetros que ya se han establecido al crear el webhook (nombre de usuario, canal preferido, avatar...), como se indica en la tabla anterior:
POST /hooks/xxx-clave-generada-xxx HTTP/1.1
Host: su-servidor-kchat.xyz
Content-Type: application/json
Content-Length: 630
{
"channel": "kchatemp",
"username": "test-automation",
"icon_url": "https://domain.xyz/wp-content/uploads/2023/06/icon.png",
"text": "#### Resultados de las pruebas para el 27 de julio de 2023\n@channel por favor revise las pruebas fallidas.\n\n| Componente | Pruebas realizadas | Pruebas fallidas |\n|:-----------|:-----------:|:-----------------------------------------------|\n| Servidor | 948 | 0 |\n| Cliente Web | 123 | 2 [(Ver detalles)](https://linktologs) |\n| Cliente iOS | 78 | 3 [(Ver detalles)](https://linktologs) |"
}
Esto dará lugar a que este mensaje se muestre en el canal kchatemp de la organización: