Slack NotificationでProxyを使うには?
はじめに
Laravel付属のSlackの通知を仕組みを使おうと思ったら、proxyに阻まれました。Slack通知にproxyを設定をする方法をメモっておきます。
使ったもの
php artisan --version
Laravel Framework 5.4.32
答え
このように書くのが正解。SlackMesasgeクラスにhttp
メソッドがあった。
return (new SlackMessage)
->success()
->content('message')
->http( $guzzle_option );
Guzzleのオプションの組み立て方は、こちらへ
http://docs.guzzlephp.org/en/stable/request-options.html#proxy
調べたこと
まずはエラーメッセージ
Slackに投げてみたらこんなエラーが。。。Slack通知は内部的にGuzzle
を使っているのだけど、SlackMesasge
を組み立てる過程ではGuzzle
のインスタンスは出てこない。どうしたものか。。。
[GuzzleHttp\Exception\ConnectException]
cURL error 7: Failed to connect to hooks.slack.com port 443: Timed out (see http://curl.haxx.se/libcurl/c/libcurl-errors.html)
ヒント見つけた
ググってたらこのスレッドにたどり着き、
https://github.com/laravel/framework/issues/15837
そしてここにたどり着く
https://github.com/laravel/framework/pull/15882
SlackMessageにoptions
メソッド。。だと。早速、実行してみると、
[Symfony\Component\Debug\Exception\FatalThrowableError]
Call to undefined method Illuminate\Notifications\Messages\SlackMessage::options()
なんでや。
履歴を追いかけたらわかりました。
昔はoptions
という名前だったのですが、今はhttp
というメソッド名前になったようです。
参考にした資料
LaravelでSlack通知を実装する~ソーシャルではなく開発者/管理者としてのSlack通知~
https://www.ritolab.com/entry/110
Laravel5.3 NotificationsでSlackに通知してみる
https://qiita.com/amymd/items/2616368bf3969ecb1aaf