GMO NIKKOのS.Tです。
Slackにメッセージを送信する機会が増えてきたのでSlack APIを使用してメッセージを送信する方法を紹介します。
設定
APIを使用するにはSlackアプリが必要なので作成します。
Customize your workspace _ Slack
1.Create an appを選択

2.From an app manifestを選択すると基本設定を入れてくれるようですが2022/11/21現在ベータ版なので
From scratchから普通に設定します。

3.作成するアプリの名前と追加するワークスペースを入力してCreate Appを選択します。
ワークスペースの設定によるかもしれませんがアプリを追加するにはワークスペース管理者の承認が必要です。

4.左のOAuth & Permissionsを選択して下にスクロールするとスコープの設定画面が表示されるのでメッセージを送信するためにchat:writeを追加します。

5.OAuth & Permissionsの上部にあるOAuth Tokens for Your WorkspaceのRequest to Installを選択して管理者にインストール依頼を出します。
先にスコープを追加しないとRequest to Installは選択できません。

6.インストールが完了すると下記のようにxoxb-から始まるアクセストークンが表示されるので保存しておきます。
設定はこれで完了です。
設定はこれで完了です。

コーディング
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php $appToken = 'xoxb-XXXXXXXXXXXX-XXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXX'; $channelId = '#XXXXXXXXXXX'; $message = '太字の書式設定を適用したテキスト: *対象のテキスト* イタリック体の書式設定を適用したテキスト: _対象のテキスト_ 取り消し線の書式設定を適用したテキスト: ~対象のテキスト~ コードの書式設定を適用したテキスト: `対象のテキスト` ブロック引用の書式設定を適用したテキスト: >対象のテキスト コードブロックの書式設定を適用したテキスト: ```対象のテキスト```'; $option = array( CURLOPT_URL => 'https://slack.com/api/chat.postMessage', CURLOPT_HTTPHEADER => array('Content-Type: application/x-www-form-urlencoded;charset=UTF-8'), CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query(array('text' => $message, 'token' => $appToken, 'channel' => $channelId, 'parse' => 'none')) ); $ch = curl_init(); curl_setopt_array($ch, $option); $result = json_decode(curl_exec($ch), true); curl_close($ch); |
今回は設定よりコーディングのほうが短いですね。
$appToken… 設定で保存しておいたxoxb-から始まるアクセストークンを指定
$channelId… 送信先の#から始まるチャンネルIDを指定。そのチャンネルに作成したアプリを追加する必要があります。
$message… 送信するメッセージ
メンションする場合はメッセージに<@メンバーID>のように記述します。
メンバーIDはSlackのプロフィールの︙ボタンを選択すると表示されるメニューからコピーできます。
CURLOPT_POSTFIELDSに指定している‘parse’ => ‘none‘ですが、メッセージにURLが含まれていると変換されて文字化けしたことがあったので指定していますが、
Slackにリンクとして表示されなくなるので状況に応じて使い分けてください。

実行するとこのようにメッセージが表示されます。
メッセージの書式は例えば太字にする場合は*対象のテキスト*のようにします。ブロック引用が反映されていませんが、>を行頭にしないと無効になるようですね。
コードブロックは対象テキストの前に3つのバッククォートを追加だけでは反映されず最後にも入れて囲む必要がありました。
書式の詳細は下記URLを確認してください。メッセージの書式設定 _ Slack