web-dev-qa-db-fra.com

Comment colorer une partie des messages Slack entrants sur le webhook?

Je veux composer un script python qui envoie un message au format couleur à un canal mou configuré. J'ai réussi à envoyer des phrases de texte brut à des canaux lâches mais je n'ai pas pu comprendre comment conférer une partie des phrases des couleurs que je veux.

J'ai utilisé la bibliothèque slackweb dans python comme ci-dessous

import slackweb
slack = slackweb.Slack(url = url_of_the_configured_channel)
string_to_send = "test TEST"
payload = {'text' : string_to_send}
slack.notify(text=string_to_send)

comment puis-je, par exemple, formater string_to_send ou payload pour que le mot 'test' apparaisse en bleu et 'TEST' apparaisse en rouge dans le canal mou?

Merci d'avance.

13
guldam

Malheureusement, il n'est pour le moment pas possible de colorer le texte d'un message Slack avec l'API. Vous pouvez utiliser différents styles, par exemple gras et italique, mais pas les couleurs. (Voir Formatage des messages dans la documentation de Slack sur l'utilisation des styles.)

Vous pouvez utiliser des couleurs pour vos pièces jointes. Cela entraînera cependant un marqueur de barre de couleur verticale pour l'ensemble de la pièce jointe, mais pas dans le texte en couleur. (Voir Paramètres des pièces jointes dans la documentation de Slack sur la façon de colorer vos pièces jointes.)

Voici un exemple d'utilisation des couleurs pour les pièces jointes Slack (tiré de la documentation Slack):

{
    "attachments": [
        {
            "fallback": "New ticket from Andrea Lee - Ticket #1943: Can't rest my password - https://groove.hq/path/to/ticket/1943",
            "pretext": "New ticket from Andrea Lee",
            "title": "Ticket #1943: Can't reset my password",
            "title_link": "https://groove.hq/path/to/ticket/1943",
            "text": "Help! I tried to reset my password but nothing happened!",
            "color": "#7CD197"
        }
    ]
}
12
Erik Kalkoken

Ce que vous pouvez faire (comme une solution de contournement certes maladroite jusqu'à ce que/à moins que Slack ne prenne en charge plus que le formatage primitif) est:

  • Créez votre message sous forme d'une petite image graphique sur votre serveur
  • télécharger l'adresse Web de l'image sur le canal détendu à l'aide du webhook
  • le message est maintenant affiché dans le canal

Vous pouvez utiliser ImageMagick pour cela.

.png les images permettent la transparence, vous n'avez donc pas à vous soucier trop de la correspondance de l'arrière-plan.

C'est, bien sûr, une manière terriblement inefficace de procéder, mais elle a la caractéristique agréable de faire ce que vous voulez.

2
fyngyrz