LINE Notifyを使ってお問い合わせがあったときに自分のLINEアカウントに通知する方法です。
※今回のカスタマイズは EC-CUBE 4.2 以上が対象です。
LINE Notify のアクセストークンを取得
以下の記事を参考にLINE Notify のアクセストークンを取得してください。
Line Notifierをインストール
以下のコマンドを実行して Line Notifier をインストールしてください。
composer req kurozumi/line-notifier
notifier.yamlを編集
Line Notifier をインストールすると notifier.yaml が自動生成されるので notifier.yaml を編集してください。
カスタマイズディレクトリ内にservices.yamlを作成して追記しても動くと思います。
framework:
notifier:
chatter_transports:
line: '%env(LINE_DSN)%'
.env を編集
.env に以下を追記してください。TOKENは取得したアクセストークンに書き換えてください。
LINE_DSN=line://TOKEN@default
services.yaml を編集
services.yamlに以下を追記してください。
カスタマイズディレクトリ内にservices.yamlを作成して追記しても動くと思います。
services:
Kurozumi\Notifier\Bridge\Line\LineTransportFactory:
parent: notifier.transport_factory.abstract
tags: ['chatter.transport_factory']
お問い合わせ内容が送信されたら自分のLINEアカウントに送信
お問い合わせ内容が送信されたら自分のLINEアカウントに送信するイベントを作成してください。
<?php
namespace Customize;
use Eccube\Event\EccubeEvents;
use Eccube\Event\EventArgs;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\Notifier\ChatterInterface;
use Symfony\Component\Notifier\Message\ChatMessage;
class Event implements EventSubscriberInterface
{
private $chatter;
public function __construct(ChatterInterface $chatter)
{
$this->chatter = $chatter;
}
public static function getSubscribedEvents()
{
return [
EccubeEvents::FRONT_CONTACT_INDEX_COMPLETE => 'onFrontContactIndexComplete'
];
}
public function onFrontContactIndexComplete(EventArgs $event)
{
$data = $event->getArgument('data');
$message = (new ChatMessage($data['name01'] . 'さんからお問い合わせがありました。'))
->transport('line');
$this->chatter->send($message);
}
}
以上で完成です。