3 votes

Les boutons interactifs de Slack n'apparaissent pas dans les messages provenant d'un webhook entrant.

J'ai créé une application Slack avec un webhook entrant et une commande slash. Le processus OAUTH fonctionne comme prévu et je suis en mesure de déployer avec succès l'application, de récupérer et de stocker le jeton d'application.

J'ai créé et envoyé un message (avec des boutons interactifs) dans Slack, via le webhook entrant de l'application. Le problème est que les boutons ne fonctionnent pas et génèrent un message d'erreur dans le canal Slack.

Slack Error Message

Après avoir lu la documentation de Slack, je constate que les robots qui envoient des messages à Slack doivent inclure le jeton d'application dans le message. J'ai cependant lu en détail la documentation sur les webhooks et je n'ai pas trouvé d'exigence similaire. Le guide du webhook mentionne juste le format JSON nécessaire mais rien sur le jeton d'application. Est-ce que quelque chose m'échappe ? Le guide indique clairement que les messages des webhooks peuvent inclure des boutons interactifs, pourtant le bouton ne fonctionne pas. Je crée la réponse comme suit :

    $actions = [
        [
            "name"  => "save",
            "text"  => "Save",
            "type"  => "button",
            "value" => "save"
        ]
    ];

    $attachments = [
        [
            "fallback"      => "fallback message",
            "title"         => "Attachment 1",
            "text"          => "foobar attachment",
            "color"         => "#0066ff",
            "callback_id"   => "btn_action",
            "actions"       => $actions
        ]
    ];

    $payload = [
        "channel"       => "#test",
        "response_type" => "ephemeral",
        "icon_emoji"    => ":rocket:",
        "username"      => "Test User",
        "attachments"   => $attachments
    ];

    $data = 'payload=' . json_encode($payload);

    $ch = curl_init($webhook);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data);    
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);

J'aimerais avoir des conseils sur la façon de résoudre ce problème ! A la vôtre, Andrew.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X