はじめに
YYPHP Advent Calendar 2018 7日目担当の@nobuhiro-kobayashiです!!
ここ1年くらいでやたらとSlackを使う機会が増えたのですが、プログラムから利用したことがなかったので、メッセージを投稿するPHPクラスを作ってみます。
いろんな人が実装してますが、練習も兼ねてやってみます。
Slackの設定
ワークスペースにログイン
ワークスペースにログインする。
※作成から行いたい方はこちらからどうぞ。
ログインしたらSlack Appディレクトリにアクセスします。
右上にワークスペース名が出ていることを確認してください。
Incoming WebHookを追加する
これで外部のサービスからslackにメッセージを送れるようになります。
検索窓に「Incoming WebHook」と入力して検索して、サジェストされたらクリックして下さい。
投稿先のチャンネルを指定する
セレクトボックスに先ほど設定したワークスペースに登録済のチャンネルが表示されますので、お好きなものを選んで下さい。
選択後、すぐ下の「Incoming Webhook インテグレーションの追加」をクリックします。
Webhook URLを取得
下の方にスクロールしていくと「インテグレーションの設定」という見出しがあります。
Slackに投稿する際に必要なWebhook URLが記載されていますので保存しておいてください。
以上でslack側の設定は完了です!!
PHP
今回はユーザー名、アイコン、メッセージの3つを投稿してみます。
いろいろ設定ができるようなのでまた今度追加してみよう。
<?php
// メッセージ送信用
class SlackSender
{
/**
* @var string
*/
private $webHookUrl;
/**
* @var []
*/
private $data;
public function __construct(string $webHookUrl)
{
$this->webHookUrl = $webHookUrl;
}
public function userName(string $userName)
{
$this->data['username'] = $userName;
return $this;
}
public function text(string $text)
{
$this->data['text'] = $text;
return $this;
}
public function iconEmoji(string $emoji)
{
$this->data['icon_emoji'] = $emoji;
return $this;
}
public function post()
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->webHookUrl);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, 'payload=' . urlencode(json_encode($this->data)));
curl_exec($ch);
curl_close($ch);
}
}
// 呼び出し
$url = "https://hooks.slack.com/services/XXXX/"; // 各自設定してください
$slackClient = new SlackSender($url);
$slackClient->userName('ビードル')
->iconEmoji(':bug:')
->text('PHPから投稿したよ')
->post();
実行結果
まとめ
今回は人生初のアドベントカレンダーに参加してみました。
簡単な内容でも意外と記事にするとなると大変でした。。
日々記事を執筆されている皆様本当にありがとうございます。
明日8日目の YYPHP Advent Calendar 2018 は@clown0082さんの投稿です!!