laravelからchatworkへCommandの実行お知らせ


◆目的

前回、Commandをやったので、通知をやろうと思う
今回は、実行時間をお知らせする。

◆Batchとは

Commandクラスを毎日指定した時間に(cronで管理)裏で実行してくれるやつ
今回は手動実行

◆chatworkのapiトークンの作成

apiトークン = 認証情報のようなもの

サイト参考に作成

◆Commandクラス作成

コマンド
php artisan make:command SampleBatch
class SampleBatch extends Command
{
    protected $signature = 'sample-batch';

    protected $description = 'チャットワークに通知する';

    private $apiToken  = 'サイトを参考に取得したapiトークン';
    private $myChatUrl = 'https://api.chatwork.com/v2/rooms/サイトを参考に自分のルームID/messages';

    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        //バッチの実行時間
        $startTime = Carbon::now();
    }
}

◆外部apiにhttps(post)通信したいので、Guzzleを導入する

Guzzleとは

コマンド
composer require guzzlehttp/guzzle

◆通知を実装

public function handle()
{
    //バッチの実行時間
    $startTime = Carbon::now()->toString();

    $client = new Client();

    $client->post($this->myChatUrl, [
        'form_params' => [
            'body' => $startTime
        ],
        'headers' => [
             'X-ChatWorkToken' =>$this->apiToken
        ]
    ]);
}

ClientクラスがGuzzleを利用するためのクラスで、post送信メソッド(第一引数でurl指定)第二引数はオプションを指定していく。
・format_paramsの中のbodyの中に送信したい内容を記述する(文字列方じゃないとエラーになる)
・headersにchatworkのapiTokenくっつけて、認証してもらってる。

コマンド
php artisan sample-batch

通知完了OK

[参考にさせていただいた記事]
https://qiita.com/zaburo/items/13bfdc349e1421421c98
https://qiita.com/komatzz/items/faa8f97efdfc5da84aad