Aller au contenu

Slack

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
  • Un espace de travail Slack
  • Un accès administrateur pour créer une application Slack
  1. 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-...)
  2. Configurer le fournisseur

    answers.json
    {
    "setup_answers": {
    "messaging-slack": {
    "slack_configuration_access_token": "xoxe.xoxp-xxx",
    "slack_configuration_refresh_token": "xoxe-1-xxx"
    }
    }
    }
  3. Exécuter la configuration

    Fenêtre de terminal
    gtc setup --answers answers.json ./my-bundle
  4. 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-bundle après avoir approuvé l’installation.

  5. 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.

  6. Démarrer ou redémarrer le runtime

    Fenêtre de terminal
    gtc start ./my-bundle

    Au démarrage, la slack_app_id enregistré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.

  7. 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.

OptionRequisDescription
slack_configuration_access_tokenOuiJeton de configuration Slack de courte durée utilisé pour les mises à jour du manifeste de l’application
slack_configuration_refresh_tokenOuiRefresh token utilisé pour renouveler le configuration access token
slack_app_idGénéréSlack app id créée ou renvoyée par la configuration
slack_client_idGénéréSlack OAuth client id renvoyé par l’enregistrement de l’application
client_secretSecret généréSlack OAuth client secret renvoyé par l’enregistrement de l’application
- id: reply
type: reply
config:
message: "Hello! How can I help you?"

Slack uses mrkdwn format:

- id: formatted
type: reply
config:
message: |
*Bold* _Italic_ `code`
>Blockquote
• Bullet point

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"
- 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"
- 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"

Reply in a thread:

- id: thread_reply
type: reply
config:
message: "This replies in the thread"
thread_ts: "{{original_message.thread_ts}}"

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"

Messages only visible to one user:

- id: ephemeral
type: reply
config:
message: "Only you can see this"
ephemeral: true
user: "{{user_id}}"
flows/on_interaction.ygtc
name: handle_interaction
version: "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_action
- id: handle_select
type: branch
config:
conditions:
- expression: "selected_value == 'technical'"
to: technical_flow
- expression: "selected_value == 'billing'"
to: billing_flow
  1. Go to Slash Commands in your app settings
  2. Create a command (e.g., /support)
  3. Set Request URL to your webhook

Handle in your flow:

flows/slash_command.ygtc
name: slash_command
version: "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_command
greentic.demo.yaml
tenants:
demo:
teams:
support:
channels:
slack:
provider: messaging-slack
config:
channel_id: "C1234567890"
tenants:
demo:
teams:
support:
channels:
slack-general:
provider: messaging-slack
config:
channel_id: "C1234567890"
slack-vip:
provider: messaging-slack
config:
channel_id: "C0987654321"
  1. Verify Event Subscriptions:

    • Check Request URL is correct
    • Ensure events are enabled
    • Verify bot is subscribed to correct events
  2. Check Bot Permissions:

    • Reinstall app after adding scopes
    • Verify bot is in the channel
  3. Test Webhook:

    Fenêtre de terminal
    curl https://your-domain.com/v1/messaging/ingress/messaging-slack/demo/default

Your bot token is invalid or expired. Get a fresh token from OAuth & Permissions.

  • Verify channel ID is correct
  • Ensure bot is added to the channel
  • Check channel is not archived

Slack rate limits vary by method. Handle gracefully:

- id: reply
type: reply
config:
message: "Response"
retry_on_rate_limit: true
max_retries: 3

Greentic automatically validates:

  • Request timestamp
  • Signature using signing secret
  • Token verification