PHPでSlackへメッセージ送信

PHPでSlackへメッセージ送信するサンプル。

Slackの該当チャンネルで、チャンネル詳細〜インテグレーション〜アプリを追加する、でIncomming Webhookを追加。
その際に、チャンネルを指定(ここで新規作成も可)&投稿者名を設定し、Webhook URLを拾う。
あとはChatWorkとほぼ一緒。(要php-curl)

<?php

class SlackComponent
{
    /**
     * Slackへメッセージ送信
     * @param $url : Incomming WebhookのWebhook URL
     * @param $channel : #チャンネル名
     * @param $bodyText : 内容
     * @return  string | false
     *      error : ?
     *      success: "ok"
     */
    public static function send(string $url, string $channel, string $bodyText) : string | false
    {
        $ch = curl_init();
        $options = [
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => http_build_query([
                'payload' => json_encode([
                    'channel' => $channel, // #チャンネル名
                    'text' => $bodyText, //本文
                ]),
            ])
        ];
        curl_setopt_array($ch, $options);
        $res = curl_exec($ch);
        curl_close($ch);

        if ($res === false) {
            return false;
        }
        return $res;
    }
}

呼び出し側は、

$url = 'https://hooks.slack.com/services/XXXXXXXXX/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$channel = '#test';

$res = SlackComponent::send($url, $channel, 'this is test');
if ($res !== 'ok') {
    //fail
}
else {
    //success
}

こんな感じでするっと’ok’が返ってくる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です