Slack
Resumen
Sección titulada «Resumen»El proveedor de Slack integra tu trabajador digital con espacios de trabajo de Slack. Admite:
- Mensajes directos (DMs)
- Mensajes de canal
- Menciones de app
- Componentes interactivos (botones, menús)
- Mensajería enriquecida de Block Kit
- Slash commands
- Respuestas en hilos
Requisitos previos
Sección titulada «Requisitos previos»- Un espacio de trabajo de Slack
- Acceso de administrador para crear una app de Slack
Configuración
Sección titulada «Configuración»-
Crea un par de tokens de configuración de Slack
Ve a api.slack.com/apps y crea un par de tokens de configuración de app. Copia ambos valores:
- Token de acceso de configuración (
xoxe.xoxp-...) - Token de actualización de configuración (
xoxe-1-...)
- Token de acceso de configuración (
-
Configura el proveedor
answers.json {"setup_answers": {"messaging-slack": {"slack_configuration_access_token": "xoxe.xoxp-xxx","slack_configuration_refresh_token": "xoxe-1-xxx"}}} -
Ejecuta la configuración
Ventana de terminal gtc setup --answers answers.json ./my-bundle -
Haz clic en Add to Slack
La configuración registra o actualiza la app de Slack y expone una acción Add to Slack. Abre la URL de autorización de Slack generada, elige el espacio de trabajo, revisa los scopes solicitados y aprueba la instalación.
Cuando la redirección de OAuth vuelve a la configuración, Greentic guarda el id de la app de Slack, el id de cliente, el secreto de cliente y las respuestas OAuth de runtime para el tenant. Si el callback no se gestionó automáticamente, ejecuta
gtc setup --answers answers.json ./my-bundlede nuevo después de aprobar la instalación. -
Agrega la app en Slack
Abre Slack y comprueba que la app esté instalada en el espacio de trabajo. Para conversaciones de canal, agrega la app al canal donde el trabajador debe responder. Puedes hacerlo desde la configuración de integraciones del canal o mencionando/invitando a la app en el canal.
-
Inicia o reinicia el runtime
Ventana de terminal gtc start ./my-bundleEl arranque usa el
slack_app_idalmacenado y el par de tokens de configuración para actualizar el manifiesto de la app de Slack con la URL de webhook actual. -
Prueba el canal
Envía un mensaje directo a la app o menciona la app en el canal de Slack al que la agregaste. Los eventos de canal solo llegan para canales donde la app es miembro y los scopes instalados permiten el evento.
Opciones de configuración
Sección titulada «Opciones de configuración»| Opción | Requerido | Descripción |
|---|---|---|
slack_configuration_access_token | Sí | Token de configuración de Slack de corta duración usado para actualizaciones del manifiesto de la app |
slack_configuration_refresh_token | Sí | Token de actualización usado para rotar el token de acceso de configuración |
slack_app_id | Generado | Id de app de Slack creado o devuelto por la configuración |
slack_client_id | Generado | Id de cliente OAuth de Slack devuelto por el registro de la app |
client_secret | Secreto generado | Secreto de cliente OAuth de Slack devuelto por el registro de la app |
Funcionalidades
Sección titulada «Funcionalidades»Mensajes de texto
Sección titulada «Mensajes de texto»- id: reply type: reply config: message: "Hello! How can I help you?"Formato Markdown
Sección titulada «Formato Markdown»Slack usa el formato mrkdwn:
- id: formatted type: reply config: message: | *Bold* _Italic_ `code` >Blockquote • Bullet pointMensajes de Block Kit
Sección titulada «Mensajes de Block Kit»Usa Block Kit de Slack para layouts enriquecidos:
- id: rich_message type: reply config: blocks: - type: section text: type: mrkdwn text: "*Welcome!*\nHow can I assist you today?" - type: divider - type: actions elements: - type: button text: type: plain_text text: "Get Help" action_id: "help_clicked" value: "help" - type: button text: type: plain_text text: "View Status" action_id: "status_clicked" value: "status"Botones interactivos
Sección titulada «Botones interactivos»- id: ask_action type: reply config: message: "What would you like to do?" blocks: - type: actions elements: - type: button text: type: plain_text text: "Create Ticket" style: primary action_id: "create_ticket" - type: button text: type: plain_text text: "Cancel" style: danger action_id: "cancel"Menús de selección
Sección titulada «Menús de selección»- id: select_option type: reply config: blocks: - type: section text: type: mrkdwn text: "Select a category:" accessory: type: static_select action_id: "category_select" options: - text: type: plain_text text: "Technical Support" value: "technical" - text: type: plain_text text: "Billing" value: "billing" - text: type: plain_text text: "General" value: "general"Respuestas en hilos
Sección titulada «Respuestas en hilos»Responde en un hilo:
- id: thread_reply type: reply config: message: "This replies in the thread" thread_ts: "{{original_message.thread_ts}}"Subidas de archivos
Sección titulada «Subidas de archivos»Las API de archivos de Slack cambian con el tiempo. Usa esto solo cuando el pack messaging-slack instalado exponga soporte de archivos para tu versión; de lo contrario, envía un enlace o usa el flujo actual de carga externa de Slack.
- id: upload_file type: reply config: files: - url: "https://example.com/report.pdf" filename: "report.pdf" title: "Monthly Report"Mensajes efímeros
Sección titulada «Mensajes efímeros»Mensajes visibles solo para un usuario:
- id: ephemeral type: reply config: message: "Only you can see this" ephemeral: true user: "{{user_id}}"Manejo de interacciones
Sección titulada «Manejo de interacciones»Clics en botones
Sección titulada «Clics en botones»name: handle_interactionversion: "1.0"
nodes: - id: route_action type: branch config: conditions: - expression: "action_id == 'help_clicked'" to: show_help - expression: "action_id == 'create_ticket'" to: create_ticket default: unknown_action
- id: show_help type: reply config: message: "Here's how I can help..."
triggers: - type: block_action target: route_actionCambios en menús de selección
Sección titulada «Cambios en menús de selección»- id: handle_select type: branch config: conditions: - expression: "selected_value == 'technical'" to: technical_flow - expression: "selected_value == 'billing'" to: billing_flowSlash Commands
Sección titulada «Slash Commands»- Ve a Slash Commands en la configuración de tu app
- Crea un comando (por ejemplo,
/support) - Define Request URL hacia tu webhook
Manéjalo en tu flujo:
name: slash_commandversion: "1.0"
nodes: - id: handle_command type: reply config: message: "Support bot at your service!" response_type: in_channel # or "ephemeral"
triggers: - type: slash_command command: "/support" target: handle_commandConfiguración de canales
Sección titulada «Configuración de canales»Canal único
Sección titulada «Canal único»tenants: demo: teams: support: channels: slack: provider: messaging-slack config: channel_id: "C1234567890"Varios canales
Sección titulada «Varios canales»tenants: demo: teams: support: channels: slack-general: provider: messaging-slack config: channel_id: "C1234567890" slack-vip: provider: messaging-slack config: channel_id: "C0987654321"Solución de problemas
Sección titulada «Solución de problemas»La app no recibe mensajes
Sección titulada «La app no recibe mensajes»-
Verifica Event Subscriptions:
- Comprueba que Request URL sea correcta
- Asegúrate de que los eventos estén habilitados
- Verifica que el bot esté suscrito a los eventos correctos
-
Comprueba los permisos del bot:
- Reinstala la app después de agregar scopes
- Verifica que el bot esté en el canal
-
Prueba el webhook:
Ventana de terminal curl https://your-domain.com/v1/messaging/ingress/messaging-slack/demo/default
Error “not_authed”
Sección titulada «Error “not_authed”»Tu token de bot no es válido o ha caducado. Obtén un token nuevo desde OAuth & Permissions.
Error “channel_not_found”
Sección titulada «Error “channel_not_found”»- Verifica que el ID de canal sea correcto
- Asegúrate de que el bot esté agregado al canal
- Comprueba que el canal no esté archivado
Limitación de velocidad
Sección titulada «Limitación de velocidad»Los límites de velocidad de Slack varían según el método. Manéjalos correctamente:
- id: reply type: reply config: message: "Response" retry_on_rate_limit: true max_retries: 3Seguridad
Sección titulada «Seguridad»Greentic valida automáticamente:
- Marca de tiempo de la solicitud
- Firma usando el secreto de firma
- Verificación del token
Próximos pasos
Sección titulada «Próximos pasos»- Block Kit Builder - Diseña mensajes enriquecidos
- Teams Provider - Agrega la integración de Teams
- Flows Guide - Crea flujos de trabajo complejos