WordPressユーザーとLINEユーザーを連携させるプラグイン「LINE Connect」の解説ページです。
「LINE Connect」はLINE Messaging APIを利用して、LINE 公式アカウントに友達登録してくれているユーザーと、Wordpressの登録ユーザーのアカウントを連携させるプラグインです。
連携済みユーザーや、特定のロールのユーザーのみに記事の投稿通知を送ったり、連携済みユーザーとそうでないユーザーとでリッチメニューを違うものに設定することが可能です。
このページの内容は古い場合があります。今後はLINE Connect Documentを更新していきますので、そちらをご覧ください。
このプラグインのデモはLINE公式アカウント「SHIP LAB」でお試しいただけます。
WordPressとLINEを連携させるコードの書き方はこちらの記事で解説しています。プラグインに組み込むなど自分でコードを書く場合はこちらの記事が参考になると思います。
LINE Messaging APIを利用したユーザーアカウント連携について詳しくはLINE Developers公式ドキュメントをご覧ください。
WordPressサイトにLINEログインを組み込みたい場合は「WP LINE Login」をご利用ください。LINE Connectとの連携機能もついています。
できること
NoLangでLINE Connectの解説動画を作成しました!
スクリーンショット
連携画面
管理画面
LINE Developersの設定
LINE公式アカウントの用意
言うまでもなくLINE公式アカウントが必要になりますので、お持ちでない場合は作成しておいてください。作成は無料で行えます。
また、LINE Developersにて使用したいLINE公式アカウントのMessaging APIチャネルも作成しておく必要があります。
チャネルシークレットとチャネルアクセストークンを取得
チャネルシークレットと、チャネルアクセストークン(長期)を発行し、メモしておきます。この情報はプラグインの設定画面で入力します。
Webhook URLの設定
Webhook URL
Webhook URLを「編集」し、プラグインのbot.phpへのURLを入力してください。通常は下記のようなURLになるはずです。
https://your-domain/wp-content/plugins/lineconnect/bot.php
Webhookの利用
オンにしてください。
チャットモードとの併用
以前はBOT(Webhook)とチャットはどちらか一方しか利用できませんでしたが、2022年11月の仕様変更以降は併用できるようになっています。ユーザーからの問い合わせなど必要に応じてチャットを利用しつつ、ユーザー連携やChatGPTによる自動応答を利用できるようになりました。
チャットモードの設定はLINE Official Account Managerにログインし、「設定」-「応答設定」ページを開きます。
応答機能のチャットを必要に応じてONに設定します。
プラグインのインストール
プラグインはGitHubで公開しています。(WordPressプラグインディレクトリでは公開していません)。GitHubのリポジトリにアクセスし、最新のリリースのAssets部分のリンクより「lineconnect.zip」をダウンロードしてください。
その後、WordPressの管理画面のプラグイン追加より、ダウンロードしたZIPファイルをアップロードしてインストールしてください。またはZIPファイルを展開すると出てくる「lineconnect」フォルダをWordpressのプラグインフォルダにFTPやSCPなどでアップロードしてください。
次いで、管理画面のプラグイン一覧から「LINE Connect」を有効にします。
プラグインのインストールと有効化が完了したら、管理画面の設定からLINE Connect設定ページを開き、チャネルタブを選択します。
チャネルアクセストークン
チャネルシークレット
この三項目をまずは入力し保存します。
設定が終わったらLINE DeveloppersのMessaging APIチャネルのページで先ほど設定したWebhook URLの「検証」ボタンをクリックし「成功」メッセージが表示されることを確認してください。
ログイン画面URLを変更している場合
デフォルトではログインはWordpressのデフォルトログイン画面「wp-login.php」を使用します。
もしもログイン画面URLをデフォルトの「wp-login.php」から他のURLに変更している場合は設定画面の連携タブのログインページURLを変更してください。
動作確認
アカウント連携
LINE公式アカウントをフォロー(友達登録)するか、アカウント連携・解除開始キーワードをトーク画面で送信すると、自動的に連携がスタートします。
WordPressにログインします。
ログインすると、連携完了画面が表示されます。
記事公開時に通知を送信
投稿通知タブの投稿タイプより、通知したい投稿タイプを選択して設定しておきます。
カスタム投稿タイプにも対応しています。
投稿画面にLINE Connectメタボックスが表示されるので
☑更新通知を送信するにチェックを入れ送信対象を選択します。
未連携を含めたすべての友達、連携済みの友達、または各ロールの連携済みの友達を選択できます。
ロールは独自に追加したものも選択可能です。
チェックの状態は記事ごとに保存されます。
V2.1.0以降では、複数のロールを選択可能です。
☑更新通知を送信するにチェックが入った状態で記事を公開・更新すると対象の友達に通知がなされます。
即時公開時の他、予約投稿が公開された際にも通知が行われます。
アカウント連携解除
アカウント連携/解除開始キーワードを入力し、連携解除ボタンをタップするとアカウント連携が解除されます。
LINE公式アカウントをブロック(友達登録解除)した場合は、自動的に連携が解除されます。
管理画面の設定項目
チャネル
複数のチャネルに対応しています。どのチャネルから通知するかをLINE通知メタボックスで投稿時に選択できます。
ここでいうチャネルは、LINE公式アカウントのMessaging APIチャネルのことを指します。
チャネル名 | チャネルを区別するための名前 |
チャネルアクセストークン | チャネルアクセストークン(長期) |
チャネルシークレット | チャネルシークレット |
デフォルトの送信対象 | LINE送信メタボックスでの初期値 |
通知の対象となる人数 | 選択されているロールや設定で通知対象となる人数 |
連携済みユーザー用リッチメニューID | 連携済み友達用のリッチメニューID |
未連携ユーザー用リッチメニューID | 未連携の友達用のリッチメニューID |
リッチメニューID
LINE Official Account Managerで作成したリッチメニューは使用できないため、LINE Messaging APIを使用してリッチメニューを作成し、そのIDを設定してください。
APIを利用したリッチメニューの作成はリッチメニューエディタなどを利用すると比較的簡単に行えます。
連携済みの友達と未連携の友達用の2種類のリッチメニューを作成登録しておき、それぞれの欄にリッチメニューIDを設定することで、連携状態に応じて異なるリッチメニューを表示することができます。
利用可能なポストバックアクション
リッチメニューでは以下のポストバックアクションが利用可能です。それぞれ連携開始、連携解除が行われます。
- action=link
- action=unlink
連携
ログインページURLや、連携開始・解除のキーワード、開始・解除時のメッセージなどを変更することができます。
ログインページURL
連携開始メッセージボタンをタップしたときに遷移するページURLです。通常ログインページのURLです。
自動連携開始
ユーザーが公式アカウントを友だち追加した際に、自動的にアカウント連携開始メッセージを送信するかどうかの設定です。
更新通知
投稿タイプ
LINE送信メタボックスを表示させる投稿タイプを選択します。Wordpressデフォルトで存在する「投稿」「固定ページ」に加えて、Custom Post Type UIなどで追加したカスタム投稿タイプも選択できます。
「更新通知を送信する」チェックボックスのデフォルト値
記事編集画面での「更新通知を送信する」チェックボックスのデフォルト値設定です。選択肢は「チェックあり」「チェックなし」「公開済みの場合はチェックなし」です。
リンクラベル
投稿通知の下部に表示されるリンクの表示文字列です。「もっと読む」「Read more」などURLの代わりに表示されるラベルです。
コメントがあった時に投稿者へLINE通知を行う
記事にコメントがあった時にその記事の投稿者にLINE通知を行うかどうかの設定です。投稿者のWordPressアカウントがLINE連携している必要があります。
コメントリンクラベル
コメント通知の下部に表示されるリンクの表示文字列です。
通知スタイル
投稿があったことを通知するメッセージのスタイルを変更できます。
画像表示スタイル
- 領域全体に表示・・・画像の領域に合わせて縦横比を維持したまま画像が拡大縮小されます。はみ出した画像の周囲は切り捨てられます。
- 画像全体を表示・・・画像全体が表示されるよう縦横比を維持したまま画像が拡大縮小されます。画像の周囲に余白が追加されます。
画像領域アクペクト比
画像領域の縦横比を「幅:高さ」の半角数字の形で指定します。例)16:9、4:3、3:2
高さを幅の3倍を超える設定にはできません。
よく使うアイキャッチ画像のアスペクト比に合わせておくことで、余白の切り取りが行われなくなります。
背景色
メッセージ全体の背景色です。画像、タイトル、本文、リンク領域を個別に指定することは現在のバージョンではできません。
タイトル文字色、本文文字色、リンク文字色
それぞれの文字色です。色以外のフォントサイズや書体、太字などは設定できません。
リンクスタイル
- ボタン・・・リンクがボタンで表示されます。
- 文字リンク・・リンクがテキストリンクで表示されます。
リンクボタン背景色
リンクスタイルを「ボタン」にした際の、ボタンの背景色です。
タイトル最大行数
タイトルの最大行数です。これを超える場合は省略記号(…)が付き省略されます。(Android/iOSのみに有効)
本文最大行数
本文の最大行数です。タイトル最大行数と同じくこれを超える場合は省略記号(…)が付き省略されます。(Android/iOSのみに有効)
チャット
Chat GPT APIを利用して、LINE公式アカウントに送信されたメッセージにAIが自動応答するよう設定できます。
AIによる自動応答
Chat GPTによる自動応答を利用するかどうかの設定です。使用する場合は「有効」に設定してください。
OpenAI API Key
Chat GPTを使用するためのOpenAI社のAPIキーを入力してください。APIキーをまだ取得していない場合はこちらから取得できます。
使用モデル
Chat GPTで使用するモデルを選択します。
システムプロンプト
Chat GPTが返答を生成する際に参考にする初期のプロンプトです。役割や回答における制限を記入します。
Function Calling
Function Calling機能を有効にするかを選択します。有効にすると、「使用するFunction」でチェックを入れた関数が使えるようになり、サイト独自の情報などを返すことができるようになります。
使用するFunction
Function Callingで使用する関数を選択します。選択した関数がChatGPTによって必要に応じて用いられます。
用意してある関数
- 自分のユーザー情報取得
メッセージを送信したユーザーに関する情報を取得して応答に含める際に用いられます - 現在日時取得
現在の日時を応答に含める際に用いられます。 - 記事検索
サイト内の記事内容を元に応答するための関数です。投稿を検索して情報を取得します。
使用する文脈数
Chat GPTが文脈に沿って回答するために、以前の質問と返答を何往復分含めるかの設定です。多ければ文脈をより良く理解しますが、トークン数がかさみます。
最大トークン数
Chat GPTが生成するテキストの最大長です。選択した使用モデルの最大トークン数を超えた数値を指定することはできません。
サンプリング温度
Chat GPTが生成する返答の多様性を制御するパラメータです。低い値を設定すると堅い返答になり、高い値では多様な返答が生成されます。
未連携ユーザーが1日に使用できる回数
未連携のユーザーがChat GPTを1日に何回まで使用できるかを設定します。
連携済みユーザーが1日に使用できる回数
連携済みのユーザーがChat GPTを1日に何回まで使用できるかを設定します。
制限回数を超えた場合のメッセージ
ユーザーがチャットの応答制限回数を超えてチャットを利用した場合に表示されるメッセージです。
開発者向け他プラグインとの連携方法
他プラグインからLINEメッセージ送信を呼び出せるよういくつかアクションフックが用意されています。
アクションフック
send_message_to_wpuser($channel, $wp_user_id, $message)
連携済みのWordpressユーザーにLINEメッセージを送信します。
使い方
//デフォルト(登録されているチャネルが1つならそのチャネル、複数登録されている場合は最初のチャネル)のユーザーIDが2のユーザーへメッセージ送信
do_action('send_message_to_wpuser', null, 2, 'Wordpressからのメッセージ');
//チャンネルシークレットの先頭4文字でチャネルを指定してチャネル情報を取得
do_action('send_message_to_wpuser', lineconnect::get_channel('1fa8'), 3, 'Wordpressからのメッセージ');
//送信するチャネルのアクセストークンとシークレットを連想配列で渡す場合
$channel = array(
'channel-access-token' => '実際のチャネルアクセストークン',
'channel-secret' => '実際のチャネルシークレット'
);
do_action('send_message_to_wpuser', $channel, 3, 'Wordpressからのメッセージ');
//LINE BOT SDKを利用してImageMessageBuilderを作成し、画像を送信
require_once(plugin_dir_path(__FILE__).'../lineconnect/vendor/autoload.php');
$originalContentUrl = "https://example.com/img.jpg";
$previewImageUrl = "https://example.com/img.jpg";
$imageMessageBuilder = new \LINE\LINEBot\MessageBuilder\ImageMessageBuilder($originalContentUrl, $previewImageUrl);
do_action('send_message_to_wpuser', null, 3, $imageMessageBuilder);
パラメータ
$channel (array|null) channel-access-token、channel-secretを持つチャネル情報の連想配列か、null(デフォルトチャネルを使用)
デフォルトチャネルは、登録されているチャネルが1つならそのチャネル、複数登録されている場合は最初のチャネルです。
$wp_user_id (int) メッセージを送信するユーザーのWordpress ID(LINEユーザーIDではない)
$message (string|LINE\LINEBot\MessageBuilder) 送信するメッセージ。文字列の場合はテキストメッセージを作成して送信します。LINE BOT SDKを利用してMessageBuilderで作成したメッセージを送ることもできます。
send_message_to_role($channel, $role, $message)
ロールを指定して連携済みユーザーへLINEメッセージを送信します。$roleに予約されている値を渡すことで、連携済みユーザー全てに送信することもできます。
使い方
//管理者ロールのユーザーへメッセージを送信
do_action('send_message_to_role', null, array("administrator"), 'Wordpressからのメッセージ');
//すべての連携済みユーザーへメッセージを送信
do_action('send_message_to_role', null, array("slc_linked"), 'Wordpressからのメッセージ');
パラメータ
$channel, $message send_message_to_wpuserのパラメータと同じです。
$role (array) 送信対象とするロールスラッグの配列。例)administrator
slc_linkedを指定すると、すべての連携済みユーザーへ送信します。
注意
デフォルトチャネルは、チャネルの削除によって変化します。例えば複数チャネルがある場合、1番目のチャネルを削除すると、2番目のチャネルがデフォルトチャネルになります。確実を期すためにはチャネル情報を配列で指定するか、チャネル情報をシークレットの先頭4文字で取得したものを使用してください。
$channel = lineconnect::get_channel("(シークレットの先頭4文字)");
LINEユーザーIDの保存形式
連携済みユーザーのLINEユーザーID、表示名、プロフィール画像URLはユーザーメタにlineというキー名で保存されています。
メタデータの形式
//ユーザーID:3のLINEユーザーIDを取得
$user_meta_line = get_user_meta(3, 'line', true);
var_dump($user_meta_line);
array(1) {
["(シークレットの先頭4文字)"]=>
array(3) {
["id"]=>
string(33) "(LINEユーザーID)"
["displayName"]=>
string(12) "(表示名)"
["pictureUrl"]=>
string(135) "(プロフィール画像URL)"
}
}
複数チャネルに対応しているため、チャネルシークレットの先頭4文字をキーとする連想配列がトップレベルにあり、その中にid,displayName,pictureUrlをキーとする連想配列が含まれます。
REST APIからのチャネル・ロール指定方法
REST APIから記事投稿する際にLINE ConnectにてLINE通知させたい場合は以下のキー&値をJSONデータに加えてください。
"lc_channels":{
"(通知させたいチャネルのシークレットの先頭4文字)":"ロール名(複数ある場合は「,」で区切る)"
}
LINE通知ログの保存
STREAMプラグインがインストールされ有効な場合、LINE通知の種類(マルチキャスト、プッシュメッセージ、ブロードキャスト)、何通送信したかのログがStream Recordsに記録され後から閲覧できます。
LINEチャット
記事の投稿時に記事内容をLINEで送信するのではなく、任意のテキストをLINEメッセージで送信することができます。
すべての友達、連携済みの友達、ロール指定して送信
管理画面メニューより「LINEチャット」ページを開きます。
チャネル
送信する対象のチャネル(LINE公式アカウント)を選択します。
送信先タイプ
どのユーザーグループに送信するかを指定します。
- 全て:友達登録しているユーザー全員に、連携済みかどうかにかかわらず送信します。
- 連携済み:友達登録しているユーザーのうち、Wordpressと連携しているユーザーに送信します。
- ロール指定:連携済みのユーザーのうち、特定のロールに属するユーザーに送信します。
- ユーザー指定:送信するユーザーを一人ずつ個別に指定して送信します。(指定方法は後述)
ロール
送信先タイプをロール指定にした場合、どのロールに属するユーザーに送信するかを選択します。
メッセージ
送信するLINEメッセージ内容を入力します。
ユーザーを個別に指定して送信
LINEチャットページからは送信するユーザーを個別に指定できないため、ユーザー一覧ページから対象ユーザーを指定してください。
一人だけ選択する場合
LINEカラムの「☑」リンクからLINEチャットページへ移動すると、そのユーザーが指定された状態になります。
複数ユーザーの選択
対象ユーザーのチェックボックスにチェックを入れ、一括操作で「LINE送信する」を選択し「適用」ボタンをクリックします。
チェックしたユーザーが指定された状態でLINEチャット画面が開きます。
WP LINE Loginとの連携機能
下記の条件を満たす場合、LINE Connectでユーザー連携を行った際に、WP LINE Loginにおいても、該当ユーザーをLINEログイン連携状態にさせ、LINEでWPサイトへログインさせることが可能です。
- WP LINE Loginがインストールされている
- LINE Loginの設定で「Messaging APIチャネルシークレット」が、LINE Coonectの「チャネルシークレット」と一致している
連携解除した場合、LINEログイン連携状態も解除されます。
カスタマイズ・プラグイン作成
制作者はフリーランスプログラマとしてLINE ID連携を利用したWordpressプラグインの作成やカスタマイズをお仕事としても請け負っております。ご依頼いただける方は是非ご連絡ください。
質問・サポート
ご質問、ご要望、バグ報告などがございましたらGit HubのレポジトリのDiscussionよりお寄せください。
個別にサポートが必要な場合はお問い合わせフォームよりご連絡ください。サポートは有料となりますが対応させていただきます。
Comments
はじめまして。
こちらのプラグインはWordPressのバージョンやPHPなど推奨動作環境などございますか?
WordPressに関してはあまり古いバージョンではテストを行っていないためはっきりしたことは申し上げられないのですが、5.8以上であれば動作するかと思います。PHPに関しては7.4でテストを行っています。
お返事ありがとうございます。
内容承知いたしました。
何度もすみません。質問をさせてください。
「記事公開時にLINE通知を送信する」機能に「各ロールごとに送信相手を選択できる」とありますが、こちら独自で新しく作成した権限も選択可能でしょうか?
はい、可能です。
迅速なお返事ありがとうございます!
内容承知いたしました。
はじめまして。このたび初めてV2.3.0をインストールさせていただきました。
有効化後、LINE Connect設定ページを開くと以下のエラーが出ます。
Warning: Invalid argument supplied for foreach() in /設置ディレクトリ/wp-content/plugins/lineconnect/include/chat.php on line 98
WordPress管理画面からのzipファイルインストールと、FTPによるインストールいずれも試しましたが同様でした。
対策などをご教示いただけるとありがたいです。
WPはバージョン6.0、PHP7.4です。
よろしくお願いいたします。
チャネルを登録していないと表示される警告のようです。
実害はないかと思いますが、次バージョンで修正いたします。
ご報告ありがとうございます。
早速ご回答いただき、ありがとうございます!
どうぞよろしくお願いいたします。
素晴らしいプラグインで、とても助かりました。
こちらのプラグインを使用させて頂き、WEBサイトを作成しようと思っています。
スマホ連携の際にスマホの方では「連携しました」と表示されますが、WPログイン後のユーザー一覧ページでは「未連携」となってしまいます。
通知も送れないようなのですが、こちら原因の可能性などご助言いただけないでしょうか?
また、管理者権限で連携させる、ようなことはできないでしょうか…?
ご利用ありがとうございます。
それだけの情報ですと申し訳ありませんが原因の特定は難しいかと思います。
どのように連携したのか詳しい情報を教えていただければと思います。
また実際に連携されているかどうかは管理画面のユーザー情報で連携状態をご確認いただければと思います。
管理者権限で連携させる件についてですが
WordPressユーザーIDとLINEユーザーID(LINE IDではありません)がわかれば、メタ情報をユーザーメタに書き込むことで連携状態にすることは可能ですが
現在のプラグインにはそういった機能はついておりません。
間が空いてしまってすみません。
手順としましては、
①LINEアカウントを友達登録する
②「アカウント連携」とメッセージを送って、送られてきたリンクをクリック。WPログイン画面へ遷移。
③あらかじめ作成してあるWPアカウント情報を入力。
④連携が完了しましたとメッセージが表示される。
そのあとWPにログインしてユーザー情報より連携を確認しても「未連携」となってしまっており、LINEの通知も受け取れません。
DBを確認しましたところ、session_tokenの値はあったのですが、LINEの値(LINEユーザーID?)はありませんでした。
正常に挙動している端末だとsession_tokenとLINEの情報が並んで入っていたのでそこでまず躓いているのかなと思います。
LINEユーザーIDが、正常に取得できなかった場合、どのような挙動となっておりますでしょうか。
端末はiPhone12でLINE、OSのアップデートは行っております。
不足な点、お分かりになる点等ございましたらご教授いただければ幸いです。
よろしくお願いいたします。
詳しい情報ありがとうございます。
「連携が完了しました」というメッセージが表示された後、再度「アカウント連携」とメッセージを送ると、またアカウント連携用リンクが送られてくる状態かと思います。
ユーザーメタにLINEユーザーIDを保存することができていないようです。
正常な場合、DBのuser_metaテーブルをご確認いただくと該当ユーザーにlineというキーでLINEユーザーIDが保存されているかと思います。
lineというキーを持つメタデータはあるものの、ユーザーIDが保存されていないのか、それともlineというキーのメタデータそのものがDBに保存されていないのかどちらでしょうか。
なぜ保存されていないのか、はっきりとした原因はわからないのですがユーザーのプロフィール取得に失敗しているか(bot.php 111行目)、メタデータの取得、更新時に何らかのエラーが出ている可能性があります。(bot.php 119~128行目)
LINEユーザーIDが取得できなかった場合、プロフィール取得も失敗し、メタデータにも空のIDが保存されるかと思います。
WebサーバーのログなどからPHPのエラーログがもし取得できれば手がかりを見つけられるかもしれません。
よろしくお願いいたします。
お返事ありがとうございます。
DBのlineに関しては、lineキーもLINEユーザーIDも1行がまるまるない状態です。
頂いた情報を元に再調査してみたいと思います。
何度もお手数をおかけしまして申し訳ありませんでした。
重ねてお礼申し上げます。
LINE ConnectとLINE Loginを併用しています。
公式アカウント友達追加後、自動送信されるボタンからLINE Connect?の認証を行った後に、
LINE Loginの ?sll_mode=login リンクを踏んだとしても、ログイン不可(未連携のまま?)なのは仕様でしょうか?
確かに、LINE Connectの認証をしただけでは、ユーザーメタの中のlineに文字列が入るものの、
その時点ではsll_lineidは空欄のままになっています。
LINE ConnectとLINE Loginの連携を同時に行うことは可能でしょうか?
ご利用ありがとうございます。
現在LINE Login → LINE Connectの連携のみに対応しており、
LINE Connect → LINE Login方向の連携には未対応となっております。
LINE Connectで連携したらLINE Loginでも連携済みにできるようにと言うのはとても良いアイデアだと思いますので
積極的に検討して実装できるならしてみたいと思います。