今の運用ではChatworkにAPIでメッセージを送信していたのだけれど、Chatworkの無料制限の変更によってslackに変わることになりました。
同じような運用をさせるためには、slackへのAPIメッセージ送信が必要になったので、その構築方法を記録しておきます。
Slackの事前準備
Chatworkにメッセージ送信をするときには、Tokenだけわかればよかったのですが、slackへメッセージを送信するためには、あらかじめSlack APIに事前設定をしなければいけません。
Slack APIとは、slackと関連したアプリケーションを開発するときに必要となるAPIの集合です。
APIを使えば、Slackとメッセージのやりとりや、イベントの受信、リアルタイムメッセージなどの開発に役に立つでしょう。
今回は、Slackにメッセージを送信するだけなので、HTTP通信のPOSTを使って開発していきます。
Slack API Icoming Webhook API の作成
Slack APIにアクセスします。
Create an Appボタンをクリックします。
From scrach をクリックします。
App Name は作成するアプリ名を入力(あとで変更可能です)。 Pick a workspace to develop your app in: からメッセージを送信するワークスペースを選択します。 入力が完了したら、Create App をクリックします。
Incoming Webhooks をクリックします。
Activate Incoming Webhooks をON に設定します。
Add New Webhook to Workspace をクリックします。
アクセスしたいチャンネルを選択し、許可する をクリックします。
メッセージ送信用のURLが作成されるので、これを使ったメッセージを送ります。
※別のチャネルが必要になったときには、同様にしてURLを作成しましょう。
メッセージの送信
windowsのcurlでテストをしてみましょう。
POSTでWebHookのURLにテキストを送信してみます。
curl -X POST -H "Content-type: application/json" --data "{\"text\":\"Hello World!\"}" <WebHookURL>
ちゃんとSlackにメッセージが表示されました。
Laravelでの適用
テストができたらLaravelのCurlで実行します。
Controllerで以下のコードを実行すると、Slackにメッセージが表示されました。
/**
* CONST
* SLACK_REQUEST_URL:SlackのURL
*/
private const SLACK_REQUEST_URL = '<WebHookURL>';
/**
* slackNotification
* @param Request $request
*/
public function slackNotification(Request $request)
{
// 送信パラメータ
$params = array(
'text' => ">>>*新規申込*\nテスト"
);
$data_json = json_encode($params);
// オプション設定
$options = array(
CURLOPT_URL => self::SLACK_REQUEST_URL, // URL
CURLOPT_HTTPHEADER => array('Content-type: application/json'), // JSON
CURLOPT_RETURNTRANSFER => true, // 文字列で返す
CURLOPT_POST => true, // POST設定
CURLOPT_POSTFIELDS => $data_json,
);
$ch = curl_init();
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);
return view('users/index');
}