Slack API (Incoming Webhooks) が簡単すぎた

【スポンサーリンク】

Slack はビジネスなどでも使われているチャットツールですが、ただチャットしているだけでは Skype や LINE でグループチャットしているのと同じようなものです。Slack が真価を発揮するのは、API を利用して簡単に外部と連携できることでしょう。ここでは Slack API の中でも Incoming Webhooks を利用して、外部から Slack へ投稿する例を説明します。

まず、以下の手順で Webhook URL を取得します。

  1. Slackにログインして、左側のメニューから [Menu]-[Integrations] を選択します。 f:id:hontonodeai:20151122230302p:plain
  2. [Configured Integrations]-[Incoming WebHooks]-[Add]ボタンを押して Incoming Webhook を追加します。 f:id:hontonodeai:20151122230326p:plain
  3. [Webhook URL] 欄に今回利用するURLが表示されています。 f:id:hontonodeai:20151122230339p:plain

あとは Webhook URL に対してJSON形式のメッセージをPOSTするだけです。

<?php
// [Webhook URL]欄に表示されているURL
$webhook_url = 'https://hooks.slack.com/services/xxxxx';

// Slackに投稿するメッセージ
$msg = array(
    'username' => 'Slackテスト', 
    'text' => 'Hello, Slack Incoming WebHooks.'
);
$msg = json_encode($msg);
$msg = 'payload=' . urlencode($msg);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $webhook_url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $msg);
curl_exec($ch);
curl_close($ch);

Slackに次のように投稿されると成功です。

f:id:hontonodeai:20151122232206p:plain

Incoming Webhooks では usernametext の他にもアイコンを指定するプロパティなどが用意されています。詳細は公式ドキュメントを参照してください。

https://api.slack.com/incoming-webhooks