Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

121
Vistas
Responda con un mensaje enriquecido como un bot de Slack

Estoy trabajando en una aplicación de holgura de Node.js que contiene un usuario bot. Pero no sé cómo responder a un usuario con un mensaje enriquecido como bot.

Ejemplo:

Puedo responder con mensajes simples sin problemas usando este código:

 import * as SlackClient from '@slack/client'; slackBot = new SlackClient.RtmClient(bot_access_token) slackBot.on(SlackClient.RTM_EVENTS.MESSAGE, message => { slackBot.sendMessage('Hello', message.channel); }); slackBot.start();

Pero la API RTM no admite mensajes enriquecidos:

La API RTM solo admite la publicación de mensajes simples formateados con nuestro modo de formato de mensaje predeterminado. No admite archivos adjuntos ni otros modos de formato de mensajes. Para publicar un mensaje más complejo como usuario, los clientes pueden llamar al método chat.postMessage Web API con as_user establecido en verdadero.

así que traté de usar el cliente web para responder con mensajes enriquecidos y me mudé a este código:

 import * as SlackClient from '@slack/client'; slackWebClient = new SlackClient.WebClient(access_token); slackBot = new SlackClient.RtmClient(bot_access_token) slackBot.on(SlackClient.RTM_EVENTS.MESSAGE, message => { slackWebClient.chat.postMessage(message.channel, 'Hello', { attachments: myAttachments }); }); slackBot.start();

este enfoque funciona cuando pruebo el bot con mi cuenta. Pero si otro usuario del equipo escribe un DM al bot, slackWebClient.chat.postMessage falla con el error error: channel_not_found . (También traté de agregar un parámetro as_user: true , pero el comportamiento es el mismo, excepto que los mensajes se firman con mi nombre en lugar del nombre del bot).

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Resuelto: creé una instancia de SlackClient.WebClient con el token de acceso de OAuth de usuario de bot en lugar del token de acceso de OAuth (también con as_user establecido en verdadero) y ahora funciona según lo previsto. No sabía que el token de acceso de OAuth del usuario de bot también se puede usar como un token para el cliente de API web.

Código de trabajo:

 import * as SlackClient from '@slack/client'; slackWebClient = new SlackClient.WebClient(bot_access_token); slackBot = new SlackClient.RtmClient(bot_access_token) slackBot.on(SlackClient.RTM_EVENTS.MESSAGE, message => { slackWebClient.chat.postMessage(message.channel, 'Hello', { attachments: myAttachments, as_user: true }); }); slackBot.start();
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda