PHPでSlackへメッセージ送信

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

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<?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;
}
}
<?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; } }
<?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;
    }
}

呼び出し側は、

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$url = 'https://hooks.slack.com/services/XXXXXXXXX/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$channel = '#test';
$res = SlackComponent::send($url, $channel, 'this is test');
if ($res !== 'ok') {
//fail
}
else {
//success
}
$url = 'https://hooks.slack.com/services/XXXXXXXXX/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; $channel = '#test'; $res = SlackComponent::send($url, $channel, 'this is test'); if ($res !== 'ok') { //fail } else { //success }
$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’が返ってくる。

コメントを残す

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