LaravelとLINE連携:LINE Messaging APIで自動返信やメッセージ送信する

LaravelとSNS

LaravelとLINEを連携させて、LaravelからLINEにメッセージを送信したり、送信されたメッセージに自動返信したりしてみます。

Junko
Junko

前回はLaravelにLINEでログインを試してみました。

引き続き、LaravelとLINE連携、楽しんでいきましょう♪

なお、LaravelのバージョンはLaravel8を使ってテストしています。

LINE側の設定

まずはLINE側の設定から。

LINE Developpersを使います。既存のLINEアカウントまたはビジネスアカウントでログインをします。その先の設定は、次のとおりです。

LINE Messaging API チャンネルを作成

LINE DeveloppersのページからLINE Messaging APIを選択。

【今すぐはじめよう】ボタンをクリックして、登録スタート。

下記に入力して、開発者契約同意にチェックを入れ、【作成】ボタンをクリックします。

  • プロバイダー:新規プロバイダー作成
  • プロバイダー名:お好きなもの
  • チャンネルアイコン:お好きなもの
  • チャンネル名:お好きなもの
  • チャンネル説明:お好きなもの
  • 大業種・小業種:選択
  • メールアドレス

チャンネルシークレットとチャンネルアクセストークン取得

設定に必要な2つの情報をLINEから取ってきます。

まずはチャンネル作成後、ページ内の「チャンネルシークレット」をコピーします。

【チャンネルシークレット】

さらに隣の 【Messaging API設定】タブに移動。

下のほうの「チャンネルアクセストークン」を発行して、コピーしておきます。

【チャンネルアクセストークン】

LINE側に設定を行う

次に、LINE側の設定を行っておきます。

【Messaging API設定】タブページの真ん中あたりに、Webhook設定があります。

「https://ドメイン/line/webhook」と入れておきます。「ドメイン」はご利用のものに変えてください。さらに下の「Webhookの利用」の部分をクリックして、有効にしておきます。

なお、まだURLを準備していない場合には、NGROKを使って、https://で始まるテスト用URLを簡単に作成できます。詳しくはこちらの記事をご覧ください。

次に【チャンネル基本設定】タブに戻ります。

LINE OFFICIAL ACCOUNT MANAGERへのリンクをクリックします。

Botが使えるよう、応答設定を次のように設定しておきます。

Laravel側の設定

上記までがLINEの設定です。次にLaravelにうつります。

Laravelプロジェクトを準備

前準備として、プロジェクトの作成を行っておきます。前回の「LaravelにLINEログイン搭載」で使った設定をそのまま利用したいと思います。

前回の記事の 「Laravelプロジェクトを準備」の部分をご覧ください。

Laravelのユーザーテーブルの準備

データベースも作っておきます。こちらも前回の設定を使用します。

前回の記事の 「Laravelのユーザーテーブルの準備」の部分をご覧ください。

LaravelのCSRF例外設定

なお今回は、API経由でpostメソッドを使うため、CSRFの例外設定を行う必要があります。

app/Http/Controllers/Middlewareの中のVerifyCsrfToken.phpファイルを開き、次のようにいれておきます。これによって、「ドメイン/line」で始まるルート設定は、CSRFの対象外にできます。

【VerifyCsrfToken.php】

LaravelとLINE連携準備

プロジェクトとデータベース作成後、プロジェクト内の.envファイルを開きます。

LINE側で設定してきた 「チャンネルシークレット」 「チャンネルアクセストークン」を入れておきます。

【.env】

次にconfigにも、この設定を反映します。config/servicesの中に下記コードを追加します。

【services.php】

ライブラリのインストール

さらに、LineとLaravelを連携させるためのライブラリをインストールしておきましょう。

LINEメッセージ送受信用ルート設定

ルート設定は、こちら。

【web.php】

LINEログイン用コントローラの作成

次にLINEログイン用のコントローラを作成します。

色々と手順がありましたが、ここからいよいよ動きをつけていきます。

①LINEでつながったユーザーにメッセージを返す

まずはLINEでつながったユーザーに、メッセージを返してみましょう。

コントローラに次のように記述します。これによって、メッセージを送ったユーザーに、自動でメッセージが返信されます。

【LineMessangerController.php】

LINEのチャンネル設定ページ/Messenging APIのQRコードをLINEで読み取ってつながった後、LINEからメッセージを送信してみてください。

成功すれば、コントローラで設定したメッセージが返信されます。

②LINEユーザーがデータベースになければ、ユーザーを追加する

ユーザーをデータベースに保存したい場合は、上記の return ‘ok’ の上に、次のようなコードを追加します。

【LineMessangerController.php】

③ユーザーにメッセージを送ってみる

特定のユーザーにメッセージを送るには、次のようにします。

【LineMessangerController.php】

ルート設定でメッセージ送信用に指定したページ【http://ドメイン/line/message】を開きます。

そのあと、指定したLINEユーザーのLINEを確認してください。

コントローラから送信したメッセージが表示されていれば成功!

APIを使って他にどんなことができるか、詳しくはLINEの公式マニュアルをご覧ください。

Laravel・LINE連携がうまくいかない時の対策

最後に、うまくいかない場合の対策をいくつか紹介しますね。

webhookが送られているかチェックして

もし「API連携がうまくいかない!」場合、そもそもwebhookがちゃんと通っていない可能性も。

まずはコントローラに return ‘ok’ ;のみのコードを書きましょう。

LINE Developperにて、検証ボタンをおします。

ちゃんと通っていれば、次のように「成功」がでてきます。ダメな場合は、ルート設定など見直してみてください。

 

コントローラで値が取得できているかチェックして

上記で問題ない場合、コントローラのどこかで、処理がつまづいている可能性があります。

値がちゃんと取れているかチェックして確認しつつ、進めていくと良いですよ。

このとき、file_put_contentsを使うと、可視化できます。

file_put_contentsの使い方は、こちらの記事にまとめています。

さいごに

Laravelを使って、LINEへメッセージを送信してみました。

連携の設定は面倒ですが^^; 運用によって、色々なことができます。

特定のキーワードのメッセージを送ってくれたら動作を変えるとか。

ユーザーが会員制サイト内でボタンを押したり、何かの操作をしたと同時にLINEでメッセージを送るとか。

あなたのサイトにあった運用方法を取り入れてくださいね。

Junko
Junko

連携させると、可能性が広がっていきますよね♪

わたしも引き続き、色々と楽しんでみます。

LaravelとSNS

【Laravelの教科書・無料プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック
【LaravelでWebアプリ開発します】

「会員制サイトを作ってほしい」「開発の時間がないから頼みたい!」

こんなご要望承り中。オンラインミーティングでも、ご相談承ります。

サンプルやお見積もり目安を見てみる

Twitter始めました。
40代からプログラミング!

コメント

タイトルとURLをコピーしました