はじめに
YYPHP Advent Calendar 2018 7日目担当の@nobuhiro-kobayashiです!!
ここ1年くらいでやたらとSlackを使う機会が増えたのですが、プログラムから利用したことがなかったので、メッセージを投稿するPHPクラスを作ってみます。
いろんな人が実装してますが、練習も兼ねてやってみます。
Slackの設定
ワークスペースにログイン
ワークスペースにログインする。
※作成から行いたい方はこちらからどうぞ。
ログインしたらSlack Appディレクトリにアクセスします。
右上にワークスペース名が出ていることを確認してください。
Incoming WebHookを追加する
これで外部のサービスからslackにメッセージを送れるようになります。
検索窓に「Incoming WebHook」と入力して検索して、サジェストされたらクリックして下さい。
投稿先のチャンネルを指定する
![4.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F203751%2F207fdc86-e492-0edc-09f9-4dbbea35920b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=13ad26b5a2d70d7a5a73f8051869acdb)
セレクトボックスに先ほど設定したワークスペースに登録済のチャンネルが表示されますので、お好きなものを選んで下さい。
選択後、すぐ下の「Incoming Webhook インテグレーションの追加」をクリックします。
Webhook URLを取得
下の方にスクロールしていくと「インテグレーションの設定」という見出しがあります。
Slackに投稿する際に必要なWebhook URLが記載されていますので保存しておいてください。
![6.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F203751%2Fac51d779-3e74-4e84-5c80-d2d7eb0c134b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=fc6b3bd57d5c312a849ff3452665f542)
以上で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.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.amazonaws.com%2F0%2F203751%2Fb41478cf-d168-300c-1af6-9ee2117f06a2.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=194ceb51b601f553e685e9f813b6e8dc)
まとめ
今回は人生初のアドベントカレンダーに参加してみました。
簡単な内容でも意外と記事にするとなると大変でした。。
日々記事を執筆されている皆様本当にありがとうございます。
明日8日目の YYPHP Advent Calendar 2018 は@clown0082さんの投稿です!!