Saltar al contenido principal

Integración domótica Rocket.Chat, gratuita y de código abierto

Integración Rocket.Chat para Gladys Assistant

Hable con Gladys desde Rocket.Chat, escriba en canales y lance escenas con mensajes o comandos.

Hable con Gladys desde Rocket.Chat, el chat de equipo libre que puede alojar usted mismo, como con el bot de Telegram de Gladys: haga una pregunta, lance una escena, reciba los mensajes de Gladys en un mensaje directo. La integración también escribe en canales de Rocket.Chat desde sus escenas, y lanza escenas cuando se escribe un mensaje o un comando como !luces off en un canal que vigila. Usa una cuenta de bot de su servidor Rocket.Chat, en la red local o en Internet.

Desarrollada sin el hardware: se agradecen sus comentarios. La integración se ha probado con un servidor Rocket.Chat real (8.9, en Docker), pero no dentro de un Gladys real ni con todos los clientes de Rocket.Chat. Indique lo que funciona y lo que no en las issues o en el foro de Gladys.

Requisitos​

  • Gladys Assistant 5.1.0 o posterior.
  • Un servidor Rocket.Chat al que Gladys pueda llegar (probado con 8.9; enviar imágenes requiere 6.8 o posterior), y una cuenta de administrador para crear el bot.
  • Un usuario para el bot, con un token de acceso personal. No use su cuenta personal: el bot responde en su nombre.
  • El nombre de usuario de cada persona autorizada a hablar con el bot, por ejemplo alice.

Configuración​

  1. En Rocket.Chat, Administración → Usuarios → Nuevo usuario: un nombre de usuario como gladys, un correo electrónico y una contraseña, los roles bot y user.
  2. Inicie sesión en Rocket.Chat con este usuario, Perfil → Tokens de acceso personal: indique un nombre, marque Ignorar la autenticación de dos factores, pulse Añadir. Copie el token y el ID de usuario que se muestran una sola vez.
  3. En Gladys, Integraciones → Rocket.Chat → Configuración:
    • Dirección del servidor: la dirección de Rocket.Chat como en el navegador, por ejemplo https://chat.example.org o http://192.168.1.20:3000.
    • ID de usuario del bot y Token de acceso personal: los dos valores del paso 2.
    • Personas autorizadas: los nombres de usuario que el bot escucha, separados por comas (alice, bob), escritos como en Rocket.Chat: las mayúsculas cuentan. Vacío, el bot no responde a nadie: ignora los mensajes de todos los que no están en esta lista.
    • Canales vigilados: los canales cuyos mensajes lanzan escenas, escritos #nombre (también se aceptan la dirección https://chat.example.org/channel/garaje o el identificador del canal), separados por comas. El bot se une solo a los canales públicos; añádalo antes a los privados.
    • Prefijo de los comandos: ! por defecto (/ lo usan los comandos slash de Rocket.Chat).
    • Idioma del bot: el idioma de lo que escribe el bot antes de vincular a una persona.
  4. Pulse Probar la conexión: el informe indica la cuenta del bot, los canales vigilados a los que se ha unido y las personas autorizadas encontradas. El estado de conexión de la página también lo indica, y nombra un canal o una persona que no se ha encontrado.

Vincular su cuenta Rocket.Chat para hablar con Gladys​

Cada usuario de Gladys que quiera hablar con Gladys desde Rocket.Chat lo hace una vez:

  1. En Gladys, Integraciones → Rocket.Chat → Configuración, bloque «Vincular mi cuenta»: pulse Generar un código de vinculación.
  2. En Rocket.Chat, abra un mensaje directo con el bot (el icono del lápiz Crear nuevo → Mensaje directo, y luego su nombre de usuario) y envíele el código (8 caracteres). El bot lo confirma: su cuenta Rocket.Chat está vinculada a su usuario de Gladys. Puede desvincularla desde el mismo bloque.

Qué hace el bot​

  • En un mensaje directo con una persona autorizada: transmite los mensajes a Gladys, con los permisos del usuario de Gladys vinculado, exactamente como el bot de Telegram: «¿Qué temperatura hace en el salón?», «Apaga las luces». Las respuestas de Gladys vuelven a este mensaje directo, con el Markdown mostrado por Rocket.Chat. Los mensajes que Gladys le envía (la acción de escena Enviar un mensaje, los mensajes del sistema) también llegan allí, incluso antes de cualquier conversación. Una imagen de cámara enviada por una escena llega como imagen.
  • En un canal vigilado: cada mensaje de una persona autorizada lanza el disparador Mensaje Rocket.Chat recibido, y un mensaje que empieza por el prefijo lanza además Comando Rocket.Chat recibido. El bot nunca responde allí por sí mismo: lo que ocurra depende de sus escenas.
  • En cualquier otra sala (un canal no vigilado, un mensaje directo con varias personas): se calla. Gladys nunca responde donde otros pueden leer.
  • Lo que ignora: a toda persona no autorizada, sus propios mensajes (una escena que escribe en un canal vigilado nunca se vuelve a lanzar a sí misma), los mensajes de webhooks entrantes y de aplicaciones (aunque escriban en nombre de una persona autorizada), los mensajes del sistema («se ha unido al canal»), las ediciones, y los mensajes de más de 5 minutos cuando los lee (un «!abre garaje» de hace dos horas no se ejecuta ahora).
  • Tras un corte (reinicio del servidor, de Gladys, una caída breve de la red): se vuelve a conectar solo, y relee los mensajes de los canales vigilados y de los mensajes directos escritos en los últimos 5 minutos.

Panel​

El widget Rocket.Chat muestra si el bot está conectado, su cuenta, los canales vigilados en los que está, los 5 últimos mensajes recibidos en los canales vigilados (autor, texto, fecha) y un botón Probar la conexión. Los mensajes directos con Gladys nunca aparecen: todos los que ven el panel ven el widget.

Escenas​

Disparadores​

  • Mensaje Rocket.Chat recibido: una persona autorizada ha escrito en un canal vigilado. Filtros (vacío = cualquiera): Canal (escrito como en la configuración, por ejemplo #garaje) y Remitente (el nombre de usuario, sin @: alice). Variables: Mensaje, Remitente, Canal, Identificador del canal.
  • Comando Rocket.Chat recibido: una persona autorizada ha escrito un comando en un canal vigilado: el prefijo, luego una palabra, luego argumentos opcionales, por ejemplo !luces off cocina. Filtro Comando: la palabra sin el prefijo, en minúsculas (luces); y Canal, Remitente. Variables: Comando (luces), Argumentos (off cocina), Mensaje, Remitente, Canal, Identificador del canal. El mismo mensaje lanza también Mensaje Rocket.Chat recibido.
  • Conexión Rocket.Chat perdida: el bot ya no alcanza el servidor, desde hace un minuto, o su token es rechazado. Variable: Error. Se lanza una vez, hasta que vuelve la conexión.
  • Conexión Rocket.Chat restablecida: el bot vuelve a alcanzar el servidor tras una pérdida de conexión. Variable: Cuenta del bot (nombre de usuario).

Acciones​

  • Enviar un mensaje Rocket.Chat: escribe un mensaje en un canal (#nombre, su dirección o su identificador), o a una persona en un mensaje directo (@alice). El mensaje acepta las variables de escena y el Markdown de Rocket.Chat (**negrita**, _cursiva_, listas, enlaces, @here). Un canal público acepta el mensaje aunque el bot no sea miembro; uno privado, solo si lo es. Resultados: Enviado (sí/no), Identificador del mensaje, Error. Un mensaje fallido no detiene la escena: compruebe Enviado con una condición si hace falta.

Para escribir a un usuario de Gladys, también sirve la acción Enviar un mensaje de Gladys: llega a su cuenta Rocket.Chat vinculada.

Ideas de escenas​

  • Garaje por comando: disparador Comando Rocket.Chat recibido, comando garaje, canal #garaje; luego una condición sobre la variable Argumentos igual a cerrar, y la acción que cierra el garaje.
  • Lavadora terminada: cuando baja la potencia del enchufe de la lavadora, Enviar un mensaje Rocket.Chat a #familia: «La lavadora ha terminado @here».
  • Alerta cuando el bot está desconectado: disparador Conexión Rocket.Chat perdida, luego una notificación por otro canal (Gotify, ntfy, SMS) con la variable Error.

Solución de problemas​

  • «no hay servidor Rocket.Chat en esta dirección»: use la dirección con la que abre Rocket.Chat en el navegador, sin /home ni canal. https://<dirección>/api/info debe responder {"version":…,"success":true}.
  • «ID de usuario o token de acceso rechazado»: el token se ha eliminado, el ID de usuario no es el del token, o la cuenta del bot se ha desactivado. Cree un token nuevo en Perfil → Tokens de acceso personal.
  • No se ha unido a un canal vigilado: el estado de la página y la prueba lo nombran. Compruebe el nombre del canal, añada el bot si es privado, y vuelva a guardar la configuración.
  • El bot no me responde: ¿está su nombre de usuario en Personas autorizadas, escrito exactamente, con las mismas mayúsculas? ¿Le escribe en un mensaje directo con el bot solo? ¿Está vinculada su cuenta (si no, el bot le da las instrucciones)?
  • Un comando no lanza la escena: el filtro Comando es la palabra sin el prefijo, en minúsculas: luces, no !Luces.
  • Detrás de un proxy inverso, también hay que reenviar el WebSocket (/websocket), como para las aplicaciones de Rocket.Chat.
  • Más detalles en los registros de la integración con LOG_LEVEL=debug.

Limitaciones​

  • Una persona vinculada a Gladys puede hacer desde Rocket.Chat todo lo que puede hacer su usuario de Gladys: mantenga corta la lista de personas autorizadas, y secreto el token del bot.
  • Una cuenta de bot por Gladys. El bot lee los mensajes por la API en tiempo real de Rocket.Chat (DDP sobre el WebSocket): un comando surte efecto en un segundo aproximadamente. Los mensajes perdidos durante un corte de más de 5 minutos se omiten.
  • Los archivos, imágenes y mensajes de voz enviados al bot se ignoran; solo cuenta el texto. Los hilos se leen como mensajes normales, y las respuestas de Gladys no van al hilo.
  • Un mensaje admite 5000 caracteres por defecto (ajuste Mensaje → Tamaño máximo permitido del mensaje): una respuesta más larga de Gladys se corta. El rol bot está exento de los límites de velocidad de la API del servidor.
  • Sin relación con Rocket.Chat Technologies Corp. Rocket.Chat es una marca de Rocket.Chat Technologies Corp.

Parámetros de configuración​

Estos son los parámetros que Rocket.Chat te pide en su pantalla de configuración en Gladys.

ParámetroTipoObligatorioDescripción
Para empezarsectionNoCree un usuario para el bot en Rocket.Chat (Administración → Usuarios, rol bot), inicie sesión con él, cree un token de acceso personal (Perfil → Tokens de acceso personal) y copie el token y el ID de usuario. Después, escríbale un mensaje directo.
Dirección del servidorstringSíLa dirección de su Rocket.Chat, como en el navegador, p. ej. https://chat.example.org o http://192.168.1.20:3000.
ID de usuario del botstringSíSe muestra junto al token al crearlo (17 o 24 caracteres).
Token de acceso personalsecretNoEl token de acceso personal de la cuenta del bot (marque «Ignorar la autenticación de dos factores» al crearlo).
Personas autorizadasstringNoNombres de usuario que el bot escucha, separados por comas, tal como en Rocket.Chat (con mayúsculas), p. ej. alice, bob. Vacío: el bot no responde a nadie.
Canales vigiladosstringNoCanales cuyos mensajes activan escenas, como #nombre, por dirección o por identificador, separados por comas. El bot se une a los canales públicos; añádalo a los privados.
Prefijo de los comandosstringNoUn mensaje que empieza por él es un comando, p. ej. !luces off. De uno a tres caracteres.
Idioma del botselectNoIdioma de lo que escribe el bot antes de vincular a una persona, y de los informes.

Cómo instalar Rocket.Chat en Gladys​

  1. En Gladys, abre Integraciones: Rocket.Chat aparece en el catálogo junto a las integraciones nativas, con una insignia de comunidad.
  2. Haz clic en Instalar. Gladys descarga la imagen Docker (ghcr.io/guim31/gladys-rocketchat:1.0.0), la ejecuta en un entorno aislado del núcleo y genera la interfaz de la integración (dispositivos, descubrimiento y configuración).
  3. Abre la pantalla de Configuración de la integración, rellena los parámetros y guarda.
  4. También puedes instalarla directamente desde la URL de su repositorio: https://github.com/guim31/gladys-rocketchat.

Rocket.Chat requiere Gladys >=5.1.0. El catálogo de Gladys se actualiza cada hora, así que una nueva versión está disponible como máximo una hora después de publicarse.

¿Todavía no usas Gladys? Es gratuito y de código abierto: sigue la guía de instalación para empezar.

Sobre las integraciones externas​

Rocket.Chat es una integración externa: una integración comunitaria empaquetada como contenedor Docker y publicada en GitHub. Gladys la instala con un clic y la ejecuta en un entorno aislado del núcleo. La publica y mantiene guim31, no el equipo principal de Gladys.

Suscríbete a la newsletter de Gladys Assistant

Unos pocos correos al mes sobre nuevas versiones y novedades del proyecto. Enviados por Pierre-Gilles Leymarie, fundador del proyecto. Puedes darte de baja cuando quieras 🙂