Slack
Vue d’ensemble
Section intitulée « Vue d’ensemble »Le fournisseur Slack intègre votre travailleur numérique aux espaces de travail Slack. Il prend en charge :
- Les messages directs (DM)
- Les messages de canal
- Les mentions de l’application
- Les composants interactifs (boutons, menus)
- Les messages riches Block Kit
- Les commandes slash
- Les réponses dans les fils
Prérequis
Section intitulée « Prérequis »- Un espace de travail Slack
- Un accès administrateur pour créer une application Slack
Configuration
Section intitulée « Configuration »-
Créer une paire de jetons de configuration Slack
Allez sur api.slack.com/apps et créez une paire de jetons de configuration d’application. Copiez les deux valeurs :
- Configuration access token (
xoxe.xoxp-...) - Configuration refresh token (
xoxe-1-...)
- Configuration access token (
-
Configurer le fournisseur
answers.json {"setup_answers": {"messaging-slack": {"slack_configuration_access_token": "xoxe.xoxp-xxx","slack_configuration_refresh_token": "xoxe-1-xxx"}}} -
Exécuter la configuration
Fenêtre de terminal gtc setup --answers answers.json ./my-bundle -
Cliquer sur Add to Slack
La configuration enregistre ou met à jour l’application Slack et expose une action Add to Slack. Ouvrez l’URL d’autorisation Slack générée, choisissez l’espace de travail, vérifiez les scopes demandés et approuvez l’installation.
Quand la redirection OAuth revient vers la configuration, Greentic enregistre l’app id Slack, le client id, le client secret et les réponses OAuth d’exécution pour le tenant. Si le callback n’a pas été traité automatiquement, exécutez de nouveau
gtc setup --answers answers.json ./my-bundleaprès avoir approuvé l’installation. -
Ajouter l’application dans Slack
Ouvrez Slack et vérifiez que l’application est installée dans l’espace de travail. Pour les conversations de canal, ajoutez l’application au canal où le worker doit répondre. Vous pouvez le faire depuis les paramètres d’intégration du canal ou en mentionnant/invitant l’application dans le canal.
-
Démarrer ou redémarrer le runtime
Fenêtre de terminal gtc start ./my-bundleAu démarrage, la
slack_app_idenregistrée et la paire de jetons de configuration sont utilisées pour mettre à jour le manifeste de l’application Slack avec l’URL de webhook actuelle. -
Tester le canal
Envoyez un message direct à l’application ou mentionnez l’application dans le canal Slack auquel vous l’avez ajoutée. Les événements de canal arrivent uniquement pour les canaux où l’application est membre et où les scopes installés autorisent l’événement.
Options de configuration
Section intitulée « Options de configuration »| Option | Requis | Description |
|---|---|---|
slack_configuration_access_token | Oui | Jeton de configuration Slack de courte durée utilisé pour les mises à jour du manifeste de l’application |
slack_configuration_refresh_token | Oui | Refresh token utilisé pour renouveler le configuration access token |
slack_app_id | Généré | Slack app id créée ou renvoyée par la configuration |
slack_client_id | Généré | Slack OAuth client id renvoyé par l’enregistrement de l’application |
client_secret | Secret généré | Slack OAuth client secret renvoyé par l’enregistrement de l’application |
Features
Section intitulée « Features »Text Messages
Section intitulée « Text Messages »- id: reply type: reply config: message: "Hello! How can I help you?"Markdown Formatting
Section intitulée « Markdown Formatting »Slack uses mrkdwn format:
- id: formatted type: reply config: message: | *Bold* _Italic_ `code` >Blockquote • Bullet pointBlock Kit Messages
Section intitulée « Block Kit Messages »Use Slack’s Block Kit for rich layouts:
- 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"Interactive Buttons
Section intitulée « Interactive Buttons »- 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"Select Menus
Section intitulée « Select Menus »- 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"Thread Replies
Section intitulée « Thread Replies »Reply in a thread:
- id: thread_reply type: reply config: message: "This replies in the thread" thread_ts: "{{original_message.thread_ts}}"File Uploads
Section intitulée « File Uploads »Les API de fichiers Slack évoluent dans le temps. Utilisez ceci uniquement si le pack messaging-slack installé expose la prise en charge des fichiers pour votre version ; sinon, envoyez un lien ou utilisez le flux d’upload externe actuel de Slack.
- id: upload_file type: reply config: files: - url: "https://example.com/report.pdf" filename: "report.pdf" title: "Monthly Report"Ephemeral Messages
Section intitulée « Ephemeral Messages »Messages only visible to one user:
- id: ephemeral type: reply config: message: "Only you can see this" ephemeral: true user: "{{user_id}}"Handling Interactions
Section intitulée « Handling Interactions »Button Clicks
Section intitulée « Button Clicks »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_actionSelect Menu Changes
Section intitulée « Select Menu Changes »- id: handle_select type: branch config: conditions: - expression: "selected_value == 'technical'" to: technical_flow - expression: "selected_value == 'billing'" to: billing_flowSlash Commands
Section intitulée « Slash Commands »- Go to Slash Commands in your app settings
- Create a command (e.g.,
/support) - Set Request URL to your webhook
Handle in your flow:
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_commandChannel Configuration
Section intitulée « Channel Configuration »Single Channel
Section intitulée « Single Channel »tenants: demo: teams: support: channels: slack: provider: messaging-slack config: channel_id: "C1234567890"Multiple Channels
Section intitulée « Multiple Channels »tenants: demo: teams: support: channels: slack-general: provider: messaging-slack config: channel_id: "C1234567890" slack-vip: provider: messaging-slack config: channel_id: "C0987654321"Troubleshooting
Section intitulée « Troubleshooting »App Not Receiving Messages
Section intitulée « App Not Receiving Messages »-
Verify Event Subscriptions:
- Check Request URL is correct
- Ensure events are enabled
- Verify bot is subscribed to correct events
-
Check Bot Permissions:
- Reinstall app after adding scopes
- Verify bot is in the channel
-
Test Webhook:
Fenêtre de terminal curl https://your-domain.com/v1/messaging/ingress/messaging-slack/demo/default
“not_authed” Error
Section intitulée « “not_authed” Error »Your bot token is invalid or expired. Get a fresh token from OAuth & Permissions.
”channel_not_found” Error
Section intitulée « ”channel_not_found” Error »- Verify channel ID is correct
- Ensure bot is added to the channel
- Check channel is not archived
Rate Limiting
Section intitulée « Rate Limiting »Slack rate limits vary by method. Handle gracefully:
- id: reply type: reply config: message: "Response" retry_on_rate_limit: true max_retries: 3Security
Section intitulée « Security »Greentic automatically validates:
- Request timestamp
- Signature using signing secret
- Token verification
Next Steps
Section intitulée « Next Steps »- Block Kit Builder - Design rich messages
- Fournisseur Teams - Ajouter l’intégration Teams
- Guide des flows - Construire des workflows complexes