
「お問い合わせフォーム」の内容をLINEで受信(2)
第2回です。(前回の続き)
(1)公式LINEアカウントを含めたグループLINEを作成。
(2)LINE Developersでの事前準備
(3)「グループID取得」のためのwebhookプログラムを作成。
(4)「お問い合わせフォーム」で受け付けた内容を(2)と(3)の情報を使ってLINE Messaging APIでプッシュ通知
前回は、
(1)公式LINEアカウントを含めたグループLINEを作成(※1)。
(2)LINE Developersでの事前準備
までを掲載させていただきました。
今回は、webhookプログラムを動作させて、お問い合わせフォームで受け付けた内容を、作成したグループLINEへ送付するところまでを説明します。
(3)「グループID取得」のためのwebhookプログラム(※2)を作成。
(4)「お問い合わせフォーム」で受け付けた内容を(2)と(3)の情報を使ってLINE Messaging APIでプッシュ通知
「グループID取得」のためのwebhookプログラムを作成
「グループID」とは、「グループLINE」を特定するための固有のIDとなります。 また、「グループLINE」を使う理由は、公式LINEアカウントから通知をさせるためです。
前回も触れさせて頂きましたが、個人用アカウント2つ以上+公式LINEアカウントで「グループLINE」を作成します。
(1)LINE連携の仕組み
Webhookのプログラムを作成する前に、今回のLINE連携がどのような流れで動作しているのかを整理しておきます。
今回の構成は、大きく分けると以下の流れになります。
- グループLINE内で、任意のメッセージが送信される
- LINE Developersに設定したWebhook URLへ、イベント情報が送信される
- Webhookプログラムがその内容を受信する
- 特定の条件(固定文字列が含まれるか)を判定する
- 条件を満たしていれば、送信元の「グループID」を取得・保存する
ポイントは、
「公式LINEアカウントがグループLINEに参加している状態で、誰かがメッセージを送信する」
という点です。
このとき、LINE側からWebhookへ送られてくるデータには、以下の情報が含まれています。
- どのグループで送信されたか(groupId)
- 誰が送信したか(userId)
- どんなメッセージが送られたか(text)
- イベントの種類(message / follow など)
つまりWebhookを使うことで、
「どのグループLINEで、どんなメッセージが送られたのか」
をサーバー側で把握できる仕組みになっています。
この仕組みを利用して、「特定の固定文字列が送られたときだけ、そのグループIDを取得する」という処理を実装していきます。
(2)連携用の固定文字列の採番
webhookプログラム側では、LINEのメッセージを監視し本「固定文字列」が入ってきたメッセージの「グループID」を取得し内部に保存します。
以降は、LINE Messaging APIで本「グループID」を使うことで公式LINEアカウントからメッセージを飛ばすよう指示できます。
ですので、将来グループLINEが変わったりセキュリティ的にも、本固定文字列は変更できるようにしておいた方が良いです。
管理画面などから都度採番し本画面から「グループLINEから本固定文字列を送信してください。」としておくと良いと思います。
(3) webhookプログラム(サンプル)
ここでは、LINE Messaging API(※)を使ってWebhookを受信し、特定の固定文字列が送られてきた場合に「グループID」を取得するシンプルなサンプルコードを紹介します。
LINE Messaging APIについては、LINE Developersの公式サイトをご確認ください。
https://developers.line.biz/ja/services/messaging-api/
LINE Messaging APIは、
- LINE上のメッセージイベントをWebhookで受信できる
- 公式LINEアカウントからメッセージを送信(Push通知)できる
といった機能を提供しています。
今回は、主に以下のファンクションを利用して実装します。
- Webhookイベント(message)
- Push Message API(後半で使用)
webhookのサンプルコード(例)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
<?php // LINE Developersで発行したチャネルシークレット(署名検証で使用:今回は省略) $channelSecret = 'YOUR_CHANNEL_SECRET'; // LINE Developersで発行したチャネルアクセストークン(Reply時に使用:今回は省略) $channelAccessToken = 'YOUR_CHANNEL_ACCESS_TOKEN'; // 固定文字列(例) $fixedText = 'GROUP_ID_REGISTER'; // LINEから送られてくる生データを取得 $json = file_get_contents('php://input'); $data = json_decode($json, true); // イベントが存在するか確認 if (!isset($data['events'][0])) { exit; } $event = $data['events'][0]; // メッセージイベントのみ処理 if ($event['type'] !== 'message') { exit; } // テキストメッセージ以外は無視 if ($event['message']['type'] !== 'text') { exit; } $text = $event['message']['text']; // 固定文字列が含まれているか判定 if (strpos($text, $fixedText) === false) { exit; } // グループIDを取得 if (!isset($event['source']['groupId'])) { exit; } $groupId = $event['source']['groupId']; // ここでDBやファイルに保存する file_put_contents( __DIR__ . '/group_id.txt', $groupId ); |
上記は最低限の処理しか書いていません。
- LINEから送られてきたメッセージを受信
- 指定した固定文字列が含まれているか判定
- 含まれていれば、そのメッセージが送信された「グループID」を取得
- サーバー側に保存
一度グループIDを取得してしまえば、以降はこのIDを使って公式LINEアカウントから任意のメッセージを送信できます。
「お問い合わせフォーム」で受け付けた内容を(2)と(3)の情報を使ってLINE Messaging APIでプッシュ通知
ここまでで、
- グループLINEを作成
- グループIDを取得
- グループIDをサーバー側に保存
という準備が整いました!
次に、お問い合わせフォームで受け付けた内容を取得したグループID宛てにLINEで通知します。
全体の流れ
全体の流れとしては以下となります。
- お問い合わせフォームが送信される
- フォーム内容をサーバー側で取得
- 通知用のメッセージ本文を生成
- LINE Messaging APIの「Push Message」を実行
- グループLINEに通知が届く
Push通知のプログラム(サンプル)
お問い合わせフォーム送信後に、本処理を入れる事で「お問い合わせがあった瞬間に、グループLINEへ通知」という仕組みが完成します。
サンプルコード(例)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$channelAccessToken = 'YOUR_CHANNEL_ACCESS_TOKEN'; $groupId = file_get_contents(__DIR__ . '/group_id.txt'); // ここはフォームから取得したメッセージを編集して格納 $message = "【お問い合わせがありました】\n" . "お名前:山田 太郎\n" . "メール:test@example.com\n" . "内容:\nお問い合わせ内容がここに入ります"; // 送信データ $postData = [ 'to' => $groupId, 'messages' => [ [ 'type' => 'text', 'text' => $message ] ] ]; $ch = curl_init('https://api.line.me/v2/bot/message/push'); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json', 'Authorization: Bearer ' . $channelAccessToken ]); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($postData)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); |
この構成のメリット
- メールよりも気づくのが早い
- 複数人で同時に内容を確認できる
- 公式LINEアカウント経由なので個人アカウント不要
特に、少人数で運営している事業者や、即時対応を求められるケースには相性が良い仕組みだと思います。
WEB DESIGN全てお任せ!ホームページ制作
RishunTradingでは、日本にはないコンセプトや高いデザイン性をもったヨーロッパ製品の輸入販売、及び、Webサイト制作事業などをおこなっております。
「全てお任せ!ホームページ制作」は、ドメイン取得からサーバー設定、レスポンシブルデザイン(スマホ、タブレット対応)、SEO対策がすべて含まれたお得なホームページを制作するサービス商品です。
納品後は「Webサイト運用管理サービス(保守)」を締結しますので、納品後の運用やメンテナンスなどワンステップで対応。お客様は安心して本業に集中する事ができます。
しかもなんと、「全てお任せ!ホームページ制作」は、150,000円!(税別)で提供しております。
本業が忙しい中小企業様に大変ご好評を頂いている商品です。

独自ドメイン取得

サーバー開設&設定

レイアウト設計

レスポンシブルデザイン
(*1)
検索エンジン最適化
(SEO対策)
場所Maps

お問い合わせフォーム

SSL化

各種SNS連携

運用マニュアル

