Skip to content

Envoyer un message POST sur Microsoft Teams

Récemment, j'ai dû refaire une pipeline CI/CD et je souhaitais que les messages d'avancement soient envoyés sur un canal Teams. Auparavant, j'avais facilement configuré cela avec des connecteurs et le "Incoming Webhook" sur le canal, un système très similaire à Slack.

Cependant, j'ai découvert ce message : "Office 365 Connectors within Teams will be retired soon. The Workflows app provides similar functionality with more scalability and security."

Passons donc à ce système de Workflow.

C'est beaucoup plus complet, peut-être un peu trop, et les documentations n'étant pas très à jour, j'ai cherché un moment comment adapter les messages "Incoming Webhook" en "Workflow".

Configuration Teams

Voici donc une procédure simplifiée pour envoyer un message sur Teams avec un simple POST, dans mon cas avec une fonction bash et curl.

Étapes :

I. Créer un nouveau canal sur Teams

II. Clique droit sur ce canal et aller dans le menu Workflow

III. Sélectionner "Post to a channel when a webhook request is received"

IV. Configuration

Récupérer votre "HTTP POST URL" et configuration qui sera nécessaire pour le script bash. Sélectionner "attachments" pour l'output et ajouter la ligne suivante dans le message :

triggerBody()['attachments'][0]['content']['body'][0]['text']
Puis sauvegarder.

Fonction bash

Voici la fonction bash que j'utilise, il faut maintenant forcement envoyer un Json :

function message_teams() {
    local url_webhook="https://***********************"
    local message=$1
    local payload=$(jq -nc --arg msg "$message" '{
        "type": "message",
        "attachments": [
            {
                "contentType": "application/vnd.microsoft.card.adaptive",
                "content": {
                    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
                    "type": "AdaptiveCard",
                    "version": "1.2",
                    "body": [
                        {
                            "type": "TextBlock",
                            "text": $msg
                        }
                    ]
                }
            }
        ]
    }')
    curl -X POST -H "Content-Type: application/json" -d "$payload" "$url_webhook"
    echo "${message}"
}
Pensez a mettre votre url_webhook.

L'utilisation après est très simple :

message_teams "Hello World"
Teams_message

Voilà, j'espère que cette mini-procédure pourra vous aider. Ma configuration actuelle n'est pas parfaite : il serait préférable de poster avec le nom d'un bot et non pas avec mon nom d'utilisateur. Cependant, j'ai un problème de permissions sur le bot et je vois qu'il y a la même issue ouverte par de nombreuses autres personnes. Donc, en attendant que cela soit corrigé côté Microsoft, nous faisons ainsi.

N'hésitez pas à intervenir dans les commentaires si vous avez des questions.

Commentaires

Commentez cet article de blog en utilisant un compte compatible Fediverse (Mastodon ou similaire).