ハマログ

株式会社イーツー・インフォの社員ブログ

Laravel NotificationsでChatworkに通知する

Laravel5.3より、Notificationsという仕組みが備わったので、早速試してみます。

Laravel Notification Channelsで、利用できるチャンネルの一覧が確認できます。

Chatworkのライブラリがなかったので、勉強ついでに作ってみました。

Github, Packagistに公開しました。

e2kaneko/laravel-chatwork-notification: Chatwork Notifications Channel for Laravel 5.3

e2kaneko/laravel-chatwork-notifications – Packagist

つかってみます

composerに追加します。

composer require e2kaneko/laravel-chatwork-notifications

composer update後、config/app.phpに追記します。

'providers' => [
    ...
    NotificationChannels\Chatwork\ChatworkServiceProvider::class,
],

config/services.phpにChatwork用の設定を追加します。
具体的には、以下のようにapi_tokenを書きます。

...
'chatwork' => [
    'api_token' => env('CHATWORK_API_TOKEN'),
],
...

ここまでで、初期設定は完了。
artisanでNotificationsクラスを作成します。

php artisan make:notification ChatworkPosted

できました!

引数でオブジェクトを受け取って、メッセージを通知するように実装します。

<?php
namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use NotificationChannels\Chatwork\ChatworkMessage;
use NotificationChannels\Chatwork\ChatworkInformation;
use NotificationChannels\Chatwork\ChatworkChannel;

class ChatworkPosted extends Notification
{

    use Queueable;

    public function __construct($message)
    {
        $this->message = $message;
    }

    public function via($notifiable)
    {
        return [ChatworkChannel::class];
    }

    public function toChatwork($notifiable)
    {
        return (new ChatworkMessage())->message($this->message->body);
    }
}

UserクラスにNotifiableトレイトを設定して、通知先Room情報を設定します。

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable;

    public function routeNotificationForChatwork()
    {
        return '99999999'; // chatwork room id
    }
}

準備できました!
では、通知してみます。

$user = new User;
$message = new stdClass();
$message->body = "✂-----------------12時----------------------------------------------";
$user->notify(new \App\Notifications\ChatworkPosted($message));

Chatworkに通知されました!

以下のように、NotificationクラスのFacadeを利用することもできます。

Notification::send($user, new \App\Notifications\ChatworkPosted($a));

とてもいい感じです

ChatChatworkLaravelnotificationPHP

  kaneko tomo   2017年1月19日


関連記事

LaravelでのSymfony脆弱性対応について(CVE-2015-2308)

Symfonyのコードインジェクション(CVE-2015-2308: Esi C…

Laravelのログファイル分割

Laravelのログは、デフォルトでstorage/logs/laravel.l…


← 前の投稿

次の投稿 →