3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

概要

みなさん!
アプリケーションからSlackに通知する仕組みを作ったものの、通知量が多くお目当ての通知を探せない!!なんてことありませんか?

この記事を読むと、Slack通知をスレッド形式で行うことで通知わかりやすくする方法がわかるはずです!

Laravel既存の通知機能

Laravelにはとても便利なSlackへの通知機能があるんですよね。

Slack Webhookの発行を行い、ドキュメントに従って実装するとSlackへ通知すること機能が簡単にできてしまいます!

ただ通知量が増えてくるとスレッドを使いたくなるのですよね...。

そうだSlackAPIを使おう

chat.postMessageのthread_tsを設定することでどうやら特定のメッセージにリプライが送れるようです。
image.png

LaravelからSlackAPIを呼ぶためのライブラリ

今回はこちらのライブラリを使います!
https://github.com/jolicode/slack-php-api

README見て使いやすそうと思ったのが決め手!

Slack Web APIのすべてのエンドポイント、リクエスト、レスポンスに対する完全なオブジェクト指向インターフェイスを提供します。

image.png

いざ、実装

Get Started通りにcomposerを設定

composer require symfony/http-client nyholm/psr7
composer require jolicode/slack-php-api

image.png

Slack ボットの作成を作成してBotUserOAuthTokenを入手

image.png

Laravel環境で下記コードを動かしてみると!?

$yourSlackToken = "[BotUserOAuthToken]";
$client = ClientFactory::create($yourSlackToken);
$client->chatPostMessage([
    'text' => '全部通知しちゃうゾ!',
    'channel' => '#bot-practice'
]);

指定のチャンネルに通知が!
image.png

スレッド形式で通知


$client = ClientFactory::create($yourSlackToken);
$response = $client->chatPostMessage([
    'text' => '全部通知しちゃうゾ!',
    'channel' => '#bot-practice'
]);

dump($response);

Slack通知した後のレスポンスを除くと...
tsという返却値が!

image.png

このtsの値をthread_tsとして渡してあげると無事スレッド形式で通知できます!

$client = ClientFactory::create($yourSlackToken);
$response = $client->chatPostMessage([
    'text' => '全部スレッド通知しちゃうゾ!',
    'channel' => '#bot-practice',
    'thread_ts' => '1689573862.454549'
]);

image.png

まとめ

通知BOT多すぎて欲しい通知が見つけられないという方はスレッド化を検討してみてはいかがでしょうか?

備考

BOT名の変更はSlackApp管理画面からできます!
image.png

リッチな感じにもできます!
image.png

動かしてみたコード

        $attachments = [];
        $attachments[] = [
            'fallback' => 'fallback',
            'color' => '#36a64f',
            'pretext' => '*お肉を食べましょう!*',
            'title' => 'どこで食べますか?',
            'title_link' => '#',
            'fields' => [
                [
                    'title' => '北海道',
                    'value' => 'ジンギスカンが美味しい',
                    'short' => true,
                ],
                [
                    'title' => '沖縄',
                    'value' => 'ステーキが美味しい',
                    'short' => true,
                ],
            ],
        ];



        $yourSlackToken = "[TOKEN]";
        $client = ClientFactory::create($yourSlackToken);
        $client->chatPostMessage([
            'attachments' => json_encode($attachments),
            'channel' => '#bot-practice',
            'thread_ts' => '1689573862.454549'
        ]);

参考資料

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?