九保すこひ@フリーランスエンジニア|累計300万PVのブログ運営中
さてさて、ビール醸造所を累計 50件以上回ったことがある私が、ITを活用してこんな施策をやったらどうだろう?と思うものがあります。
それは、特に飲食店のような実店舗ビジネスに重要なのですが、この名前を聞いたことはあるでしょうか。
MEO(マップ・エンジン・オプティマイゼーション)
つまり「Googleマップに特化して」自分のお店を優位にする施策のことです。というのも、飲食店を探すときよく使われるのが「Googleマップ」だからなんですね。
そして、「飲食店はMEOゲー(MEOが最も大事なゲーム)」と解説しているマーケターさんもいるぐらい影響が大きいので、ここを攻略することが飲食店にとっても売上につながるわけです。
そして、MEO
では評価のいいクチコミが重要な指標になっていると言われています。
そこで❗
今回はLaravel
を使って「クチコミを増やす施策」を実装してみたいと思います。
ぜひ最後まで読んでくださいね。😊✨
「ウェストコースト系
のクラフトビール🍺
うまいよねぇ!!!」
開発環境: Laravel 11.x
目次
【前提として】Google マップのクチコミ施策には LINE Messaging API を使う
今回の施策は以下の流れで実装します。
- 会計のとき LINE公式アカウントでお友達になってもらう
- 帰宅したぐらいを見計らってアフターフォロー
- Google マップへのレビュー投稿を依頼する
※ ただしタイマーを実装すると複雑すぎるので、今回はリアルタイムで返信するようにします。
そのため、LINE Messaging API
が使えるようになっていることが前提です。
以下のページを見て、準備しておいてください。
- LINE Messaging API を有効にする
- ウェブフックを有効にする
- パッケージ「linecorp/line-bot-sdk」をインストールする
- CSRFトークンのチェックを解除
📝 参考ページ1: Line Messaging API で画像つき通報システムをつくる(神戸市に影響されて)
📝 参考ページ2: おまけ: ngrok について
📝 参考ページ3: CSRFトークンのチェックを解除する
※なお、Laravel 11.x
からCSRF
トークン解除の設定方法が変わっていますので注意してください。
Google マップのクチコミ URL を取得しておく
まず、特定のお店のレビュー投稿がすぐできるURL
を先に取得しておきましょう。
手順は以下のとおりです。
Google マップで対象のお店をクリックする
クチコミを投稿させたいお店をGoogle
マップで検索し、詳細を表示する
「共有」をクリック
詳細の中にある「共有をクリック」する
クチコミリンクをクリック
「地図を埋め込む」タブを選択し、口コミのリンクをクリック。
クチコミを書くボタンをクリック
すると、クチコミのポップアップが出るので右上の「クチコミを書く」をクリック。
URLを取得
表示が変わったら、その状態でブラウザのURL
を取得してください。
このURL
にアクセスするといきなりレビューフォームが表示されることなります。
※ただし、Google
にログインする必要があります。
では、忘れないように.env
へ以下のようにセットしておきましょう。
GOOGLE_MAP_REVIEW_URL="(ここにあなたのURL)"
Google マップのクチコミを返信するコントローラーをつくる
では、LINE
からウェブフックが来たら自動でGoogle
マップのURL
を返信するコントローラーをつくりましょう。
以下のコマンドを実行してください。
php artisan make:controller LineWebhookController
そして、作成されたファイルを以下のように変更してください。
app/Http/Controllers/LineWebhookController.php
<?php namespace App\Http\Controllers; use GuzzleHttp\Client as GuzzleClient; use Illuminate\Http\Request; use LINE\Clients\MessagingApi\Configuration; use LINE\Clients\MessagingApi\Api\MessagingApiApi; use LINE\Clients\MessagingApi\Model\ReplyMessageRequest; use LINE\Clients\MessagingApi\Model\TextMessage; use LINE\Parser\EventRequestParser; use LINE\Webhook\Model\FollowEvent; class LineWebhookController extends Controller { private $channel_secret, $access_token; public function __construct() { $this->channel_secret = env('LINE_CHANNEL_SECRET'); // 本来は config から取得すべきです $this->access_token = env('LINE_ACCESS_TOKEN'); // 本来は config から取得すべきです } public function receive(Request $request) { logger($this->channel_secret); $request_body = $request->getContent(); $hash = hash_hmac('sha256', $request_body, $this->channel_secret, true); $signature = base64_encode($hash); if($signature === $request->header('X-Line-Signature')) { $client = new GuzzleClient; $config = new Configuration(); $config->setAccessToken($this->access_token); $this->api = new MessagingApiApi( client: $client, config: $config, ); try { $event_parser = EventRequestParser::parseEventRequest($request_body, $this->channel_secret, $signature); foreach($event_parser->getEvents() as $event) { if($event instanceof FollowEvent) { // お友達の登録したとき $reply_token = $event->getReplyToken(); $line_id = $event->getSource()->getUserId(); $mode = $event->getMode(); $profile = $this->api->getProfile($line_id); $display_name = $profile->getDisplayName(); if(is_null($line_id) || is_null($mode)) { continue; } $google_map_review_url = env('GOOGLE_MAP_REVIEW_URL'); $text = view('line_webhook.google_map_review', [ 'display_name' => $display_name, 'google_map_review_url' => $google_map_review_url, ])->render(); $this->replyText($reply_token, $text); } } } catch (\Exception $e) {} } else { abort(404); } } private function replyText(string $reply_token, string $text) { $message = new TextMessage([ 'type' => 'text', 'text' => $text, ]); $request = new ReplyMessageRequest([ 'replyToken' => $reply_token, 'messages' => [$message], ]); $this->api->replyMessage($request); } }
この中ではLINEウェブフックの基本的な返信をしているだけです。
Google マップのクチコミをうながす返信テキストをつくる
では、先ほどのLineWebhookController
でセットした「クチコミを促す文章」をblade
でつくります。
以下のコマンドを実行してください。
php artisan make:view line_webhook.google_map_review
すると、ビューファイルが作成されるので中身を以下のように変更します。
resources/views/line_webhook/google_map_review.blade.php
{{ $display_name }} さん、本日は「ビアバーすこひ」へご来店いただきありがとうございます! お店独自で醸造しているビールのお味はいかがでしたか? ぜひ、Googleマップにてお店のクチコミを投稿していただけると嬉しいです! Google マップに感想を書き込む ↓↓↓ {{ $google_map_review_url }} また、当店公式のオンラインショップもございますので、お気軽にご利用ください。 オンラインショップはこちら ↓↓↓ https://sukohi-beer-bar.example.com 今後とも「ビアバーすこひ」をよろしくお願いいたします!
ちなみに、この中の$google_map_review_url
の部分が先ほどGoogle
マップで取得したURL
になります。
Google マップのクチコミ返信するためのルートをつくる
では、先ほどのコントローラーがウェブフックとしてアクセスできるようにルートを登録しておきましょう。
<?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\LineWebhookController; Route::post('line_webhook', [LineWebhookController::class, 'receive']);
Google マップのクチコミ返信するウェブフックの CSRF ブロックを解除する
Laravel
は初期状態ではCSRF
攻撃ができないように必ずトークン付きでしかフォーム送信できないようになっています。
しかし、これだとウェブフックも拒否されてしまうのでウェブフックのURL
を解除しておきます。
bootstrap/app.php
<?php use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { $middleware->validateCsrfTokens(except: [ // 👈 ここを追加しました 'line_webhook', ]); }) ->withExceptions(function (Exceptions $exceptions) { // })->create();
Laravel 11.x
から設定が変更になりましたね。
気をつけてください!
これで作業は完了です。
お疲れ様でした!😊✨
テストしてみる
では、実際にテストしてみましょう❗
では、実際にLINEでお友達になってみましょう。
すると・・・・・・
では、マップのURL
にアクセスしてみます。
どうなるでしょうか・・・・・・
はい❗
レビューフォームが表示されました。(ダークモードですみません!)
成功です😊✨
Google マップのクチコミを施策として考えている企業様へ
今回の機能を実際に使うとしたら以下のようにするとよりプラスになるんじゃないかと考えてます。
- 会計時にお友達登録してもらうわけですが、評価を低くしそうな人には話を振らない(触らぬ神にたたりなしです)
- 今回はリアルタイムで返信しましたが、本当は家に帰って「あのビールうまかったな」ぐらいのタイミングが一番かもしれません。なので、タイマー実行で、帰宅のタイミングか数日後にプッシュ送信してもいいかもしれません。
- GoogleマップのURLは長いので短縮URLを使った方がいいかもですね。
- もしプッシュ通知も実装するなら、新しい商品が出たときとか、あまりお客さんがいないときに「割引情報」とかを送信してもいいかもですね。
もしこういった施策をお考えの方はぜひお問い合わせからご相談ください。
お待ちしております。😊✨
おわりに
ということで、今回はLaravel
でGoogle
の口コミ施策を実装してみました。
LINE
を使ってリストをとっておくと、いろいろな広がりをもったマーケティングに繋げられますね。
ちなみに実際のビール醸造所であった例では、以下のような流れにしているところもありました。
- 注文フォームへ移動する QRコードを読み取る
- 読み取ったら、まずは LINE の友達登録をお願いする(←うまい!)
- 友達になる、ならない関係なくウェブサイトで注文
- 数日後アンケート依頼
- 回答したら割引クーポンゲット(←リピーター施策!!)
こんなふうに見てみるとやはりご商売する人はいろんなアイデアを考えているんだな、と感心します。
ということで、今後もビールを飲みに行って頭の中で「ここのお店はこうすればもっと…」みたいなトレーニングを続けたいと思います。
いや、ビールが飲みたいだけじゃなくて。
いやいや、ホントのホントに。
ではでは〜🍻
「Twitter マスター講座の影響で
趣味アカウントのいいね数が
増えてきた!」