外部システムに信号を送る
プロラインの特徴として、外部システムと柔軟に連携が可能なことが挙げられます。
以下のタイミングで必要なデータを外部送信することが可能ですので、細かく外部システムと連携ができます。
・友だち追加時
・フォーム送信時
・シナリオ移動時(応用で、特定のメッセージ送信時)
・ブロック時
・ブロック解除時
・お客様が決済時
逆に、外部プログラムからシナリオを移動や、フォーム登録など、ユーザーの挙動をコントロールすることも可能です。
このページでは、プロラインからデータを外部送信する為の設定箇所と、テスト方法について説明します。
尚、全てのプログラムでは「uid(ユーザーID)」という、プロラインが、独自にLINE公式アカウントの友だち1人ずつに発行するユーザー識別子でユーザーを区別します。
fa-font-awesome友だち追加時
手順1:プロラインフリーにログインし、あいさつメッセージ(友だち追加時) の編集画面を開きます
手順2:(上級者向け) 友だち追加された時に外部プログラムを実行する にチェックを入れて、外部システムのURLを記載します
ユーザー情報(例:[[uid]]や[[snsname]])などをURLで変数として使うことができます。
例えば、URLに https://yourdomain.xxx/addfriend.php?uid=[[uid]]&snsname=[[snsname]] と記載すると、https://yourdomain.xxx/addfriend.php のプログラム上では、以下の様なデータを受け取ることができます。
{
"uid": "abc1234",
"snsname": "テスト太郎",
}
fa-font-awesomeフォーム送信時
手順1:プロラインフリーにログインし、対象の登録フォーム の編集画面を開きます
手順2:登録発生時に外部システムにデータを送信する にチェックを入れて、外部システムのURLを記載します
外部に情報を送信したいフォームが複数ある場合は、各フォームで設定を行ってください。
URLを入力すると、フォーム送信者(uid)の「基本データ」+「イベントに応じたデータ」がPOST送信されます
例えば、URLに https://yourdomain.xxx/form.php と記載すると、https://yourdomain.xxx/form.phpのプログラム上では、以下の様なデータを受け取ることができます。
{
"id": "dpqliohben",
"event": "form.send",
"date": "2024-01-31 19:31:22",
"unixtime": 1706697082,
"basic_id": "@789XYZ",
"uid": "abc1234",
"user_data": {
"snsname": "テスト太郎test",
"snsnamesan": "テスト太郎さん",
"linename": "テスト太郎",
"linenamesan": "テスト太郎",
"sei": "山田",
"seisan": "山田さん",
"mei": "",
"meisan": "あなた",
"seimeisan": "山田さん",
"nickname": "",
"nicknamesan": "あなた",
"email": "test.taro@xxxxxxxx.yyy",
"phone": "09012345678",
"postcode": "",
"address1": "",
"address2": "",
"address3": "",
"nenrei": "20",
"nendai": "20代",
"seibetu": "",
"free1": "",
"free2": "",
"free3": "",
"free4": "",
"free5": "",
"free6": "",
"passcode": "3571",
"password": "aOZtSp87"
"followed": "2022年12月12日(月) 11:00"
},
"form_id": "qdotauzlyk",
"form_name": "フォーム名",
"form_data": {
"form1-1": "フォーム回答1",
"form1-2": "フォーム回答2",
"form1-3": "フォーム回答3",
"sei": "お名前"
}
}
fa-font-awesomeシナリオ移動時
手順1:プロラインフリーにログインし、対象のシナリオ移動のカスタマイズ の編集画面を開きます
手順2:▼外部システム連携したい場合▼ をクリックします
手順3:実行時に外部プログラムを実行する にチェックを入れて、外部システムのURLを記載します
実行時に外部に情報を送信したいシナリオ移動が複数ある場合は、各シナリオ移動のカスタマイズで設定を行ってください。
ユーザー情報(例:[[uid]]や[[snsname]])や、フォーム回答結果(例:[[form1-1]])などをURLで変数として使うことができます。
例えば、URLに https://yourdomain.xxx/scenario.php?uid=[[uid]]&snsname=[[snsname]]&next=次のシナリオ名 と記載すると、https://yourdomain.xxx/scenario.phpのプログラム上では、以下の様なデータを受け取ることができます。
{
"uid": "abc1234",
"snsname": "テスト太郎",
"next": "次のシナリオ名",
}
※[[uid]]や[[snsname]]の様にユーザー毎の値に置き換わる文字列以外に、「次のシナリオ名」の様な任意の固定値を渡すこともできます。
※例として、next=〇〇 という文字列をscenario.phpというプログラムに送っているだけで、移動先のシナリオを設定するものではございません。
「シナリオ移動」という名前ですが、シナリオ移動のカスタマイズでシナリオ登録や解除を行わない設定にして、外部に情報を送信するだけの動作とすることもできます。
また、メッセージなどの設定で「メッセージ送信後、シナリオ移動する」にチェックし、カスタマイズした「シナリオ移動」を指定すれば特定のメッセージ送信時に外部システムに情報を送信できます。
fa-font-awesomeブロック時
手順1:プロラインフリーにログインし、あいさつメッセージ(友だち追加時) の編集画面を開きます
手順2:(上級者向け) ブロックされた時に外部プログラムを実行する にチェックを入れて、外部システムのURLを記載します
ユーザー情報(例:[[uid]]や[[snsname]])や、フォーム回答結果(例:[[form1-1]])などをURLで変数として使うことができます。
例えば、URLに https://yourdomain.xxx/block.php?uid=[[uid]]&snsname=[[snsname]] と記載すると、https://yourdomain.xxx/block.phpのプログラム上では、以下の様なデータを受け取ることができます。
{
"uid": "abc1234",
"snsname": "テスト太郎",
}
fa-font-awesomeブロック解除時
手順1:プロラインフリーにログインし、あいさつメッセージ(友だち追加時) の編集画面を開きます
手順2:ブロック解除時の「メッセージ」「シナリオ移動先」を編集 にチェックを入れて、ブロック解除時に送るメッセージをボタン応答メッセージの中から選択します
手順3:そのボタン応答メッセージを送信時に「送信後、シナリオ移動する」で、カスタマイズしたシナリオ移動を選択します
カスタマイズしたシナリオ移動には、「実行時に外部プログラムを実行」で外部システムに情報を送信する設定を行っていれば、ブロック解除時に送信することができます。
fa-font-awesome決済時(決済連携)
手順1:プロラインフリーにログインし、決済連携 の編集画面を開きます
手順2:決済ボタンの▼決済成功時のアクション▼をクリックします
図の右下の部分をクリック
手順3:シナリオ移動する にチェックを入れて、「カスタマイズしたシナリオ移動」を選択します。
カスタマイズしたシナリオ移動には、「実行時に外部プログラムを実行」で外部システムに情報を送信する設定を行っていれば、決済成功時に送信することができます。
信号を受け取る自作システムを用意する
プロラインからの信号を受け取る外部システムを自分で用意してみたい方、プログラムはよく分からないけどテストしてみたい方向けに説明いたします。
既にご存知の内容は読み飛ばしてください。
手順1:レンタルサーバーを借ります
どこで借りても良いですが、例えば「さくらインターネット」(2023年11月にデジタル庁が主導する政府のクラウドインフラ「ガバメントクラウド」のサービス提供事業者に採択されています)のレンタルサーバーであれば、月額425円から使えます。
月額128円のプランは12ヶ月~36ヶ月一括払いのみですので、テスト用途には向いていません。性能的にも月額425円の方が良いです。
さくらのレンタルサーバー
https://rs.sakura.ad.jp/
手順2:ドメインを確認します
yahoo.co.jp や google.com の様なURL(インターネット上のアドレス)をドメインと言います。
あなた専用のドメイン(独自ドメイン)を購入することもできますが、テストであればまだ要らないです。
例えば、さくらのレンタルサーバーで、prolinetestというアカウントで取得すると、
prolinetest.sakura.ne.jp
というドメインが貰えます。(契約時完了メールなどご確認下さい)
手順3:ファイルアクセスのテストを行います
さくらのレンタルサーバの管理画面 にアクセスして、ファイルマネージャーを開くとレンタルサーバー上のファイルを参照できます。
例えば、さくらのレンタルサーバーで、prolinetestというアカウントで取得している場合、
/home/prolinetest/www/
の中身と、
ブラウザで
https://prolinetest.sakura.ne.jp/
にアクセスしたものとが対応します。
例えば、このwww というフォルダの中に、index.html というファイルを作成し以下の様に記述して保存すると、
Hello World.
ブラウザで http://prolinetest.sakura.ne.jp/index.html にアクセスした時に、「Hello World.」が表示されます。
手順4:信号を受け取るプログラムの用意
前述のプロライン側の設定手順で、友だち追加された時に https://prolinetest.sakura.ne.jp/addfriend.php?uid=[[uid]]&snsname=[[snsname]] を実行する設定になっているとします。
この場合、友だち追加された時に /home/prolinetest/www/addfriend.php というファイルに記載のプログラムが実行され、その際に uid=○○&snsname=△△ というデータを渡す。という事です。
ファイルマネージャーで addfriend.php というファイルを作成し、以下のプログラムを記述してみましょう。
<?php
// URLについている uid=[[uid]] (ユーザーID) が実行される際は uid=abc1234 の様な記述となります。
// 以下のコードは受け取った信号の uid=○○の部分(例:abc1234) の値を $uid という名前で記録しておく。という意味です。
$uid = $_GET['uid'];
// 同様に snsname=△△の部分(例:テスト太郎)の値を $name という名前で記録しておきます。
$name = $_GET['snsname'];
// 2つの値を使って文章を作ります。最後の \n は改行を表しています。
$txt = $name."が友だちになりました。ユーザーIDは".$uid."です。\n";
// addfriend_list.txt というファイルに $txt の文字列を出力します。
// ファイルが無い場合は作成され、存在している場合は最後に追記されます。
file_put_contents('addfriend_list.txt', $txt, FILE_APPEND);
1行目の <?php はPHPというプログラム言語で記載します。という意味です
2-3行目などの // で始まる行はコメントで実際のプログラムではありません。つまり、コメントを除くと実際のプログラムは 4行 だけです。
異なる場合、日本語が文字化けする可能性があります。
手順5:動作テスト
ブラウザのアドレスバーにaddfriend.phpのURLに続けて ?uid=XYZ&snsname=山田 を付けてアクセスしてみましょう。
https://prolinetest.sakura.ne.jp/addfriend.php?uid=XYZ&snsname=山田
※URLは適宜変更してください
friend_list.txtというファイルが作成され「山田が友だちになりました。ユーザーIDはXYZです。」と記述されていれば成功です。
手順6:本番動作の確認
ここまでくれば、あなたは何もする必要はありません。
実際にLINE公式アカウントを友だち追加されると、自動的にaddfriend.phpが実行され、friend_list.txtというファイルに追記されます。
ここでは単にファイルに出力しましたが、データベースに出力する、文字列をSlackやChatworkで管理者に送る、Googleスプレッドシートに出力するなど受け取った情報を用いて様々動作を実現可能です。
更に学習を進めたい方は、「PHP学習パッケージ」で学習してみてください。
サンプル メニュー付きページ を実際に作成しながらPHPというプログラミング言語、データベースについて学習することができます。
信号を受け取る自作システムを用意する(完全版)
※プログラムの設置方法がよく分からない場合は、「信号を受け取る自作システムを用意する」を先に学んでください。
※更に、データベースを使ったり、管理画面やお客様用の会員サイトを作りたい方は、上にも書きましたが、「PHP学習パッケージ ver1.3」を利用して学習を進めてください。
以下のようなメニュー付きページを自作することができ、スマートフォンやパソコンからアクセスや管理ができるようになります。
復習
まずは信号を受け取るサーバーを用意して、ブラウザで https://yourdomain.com/index.html (※URLは適宜変更してください)にアクセスした時に、「Hello World.」が表示されるところまで準備しましょう。
(「信号を受け取る自作システムを用意する」の手順3まで)
サンプルプログラムの設置
各信号を受信して、テキストファイルに出力するプログラムです。それぞれ単体でも動作するので、動作が必要な分だけ設置して、不要なものは置かなくて大丈夫です。
・友だち追加時に、https://yourdomain.xxx/addfriend.php?uid=[[uid]]&snsname=[[snsname]] に信号を送る場合の受け取り側のプログラム例▼
<?php
// URLについている uid=[[uid]] (ユーザーID) が実行される際は uid=abc1234 の様な記述となります。
// 以下のコードは受け取った信号の uid=○○の部分(例:abc1234) の値を $uid という名前で記録しておく。という意味です。
$uid = $_GET['uid'];
// 同様に snsname=△△の部分(例:テスト太郎)の値を $name という名前で記録しておきます。
$name = $_GET['snsname'];
// 2つの値を使って文章を作ります。最後の \n は改行を表しています。
$txt = $name."が友だちになりました。ユーザーIDは".$uid."です。\n";
// addfriend_list.txt というファイルに $txt の文字列を出力します。
// ファイルが無い場合は作成され、存在している場合は最後に追記されます。
file_put_contents('addfriend_list.txt', $txt, FILE_APPEND);
・フォーム送信時に、https://yourdomain.xxx/form.php に信号を送る場合の受け取り側のプログラム例▼
<?php
// フォーム送信の場合、送信されるデータは「基本データ」+「イベントに応じたデータ」となります。
// 送信されるデータの例を確認しながら必要な情報を取得しましょう。
// また、他の信号と異なりPOSTと呼ばれる信号が飛んできますので、$_GET ではなく、$_POST を使います。
// 以下のコードは受け取った信号の uid の部分(例:abc1234) の値を $uid という名前で記録しておく。という意味です。
$uid = $_POST['uid'];
// user_data の階層の下に snsname があります。その場合、以下の様に記述して、
// snsname の部分(例:テスト太郎)の値を $name という名前で記録しておきます。
$name = $_POST['user_data']['snsname'];
// 同様に フォーム回答の form1-1 の部分(例:フォーム回答1)の値を $answer という名前で記録しておきます。
$answer = $_POST['form_data']['form1-1'];
// 3つの値を使って文章を作ります。最後の \n は改行を表しています。
$txt = $name."が".$answer."と回答しました。ユーザーIDは".$uid."です。\n";
// form_list.txt というファイルに $txt の文字列を出力します。
// ファイルが無い場合は作成され、存在している場合は最後に追記されます。
file_put_contents('form_list.txt', $txt, FILE_APPEND);
・シナリオ移動時に、https://yourdomain.xxx/scenario.php?uid=[[uid]]&snsname=[[snsname]]&next=次のシナリオ名 に信号を送る場合の受け取り側のプログラム例▼
<?php
// URLについている uid=[[uid]] (ユーザーID) が実行される際は uid=abc1234 の様な記述となります。
// 以下のコードは受け取った信号の uid=○○の部分(例:abc1234) の値を $uid という名前で記録しておく。という意味です。
$uid = $_GET['uid'];
// 同様に snsname=△△の部分(例:テスト太郎)の値を $name という名前で記録しておきます。
$name = $_GET['snsname'];
// 同様に next=□□の部分(例:次のシナリオ名)の値を $next という名前で記録しておきます。
$next = $_GET['next'];
// 3つの値を使って文章を作ります。最後の \n は改行を表しています。
$txt = $name."が".$next."にシナリオ移動しました。ユーザーIDは".$uid."です。\n";
// scenario_list.txt というファイルに $txt の文字列を出力します。
// ファイルが無い場合は作成され、存在している場合は最後に追記されます。
file_put_contents('friend_list.txt', $txt, FILE_APPEND);
・ブロック時に、https://yourdomain.xxx/block.php?uid=[[uid]]&snsname=[[snsname]] に信号を送る場合の受け取り側のプログラム例▼
<?php
// URLについている uid=[[uid]] (ユーザーID) が実行される際は uid=abc1234 の様な記述となります。
// 以下のコードは受け取った信号の uid=○○の部分(例:abc1234) の値を $uid という名前で記録しておく。という意味です。
$uid = $_GET['uid'];
// 同様に snsname=△△の部分(例:テスト太郎)の値を $name という名前で記録しておきます。
$name = $_GET['snsname'];
// 2つの値を使って文章を作ります。最後の \n は改行を表しています。
$txt = $name."がブロックしました。ユーザーIDは".$uid."です。\n";
// block_list.txt というファイルに $txt の文字列を出力します。
// ファイルが無い場合は作成され、存在している場合は最後に追記されます。
file_put_contents('block_list.txt', $txt, FILE_APPEND);
最終的には、サーバーの中身は以下の例のようなファイルを設置することになります。(全てのファイルを設置して、名前順に並び替えた場合)
/home/prolinetest/www/
┣addfriend.php
┣block.php
┣form.php
┣index.html ※「Hello World.」の表示テストで使用(削除可)
┗scenario.php
※各プログラムが実行されると、結果を出力するテキストファイルが同じ階層に作成されます。
これでプロラインの全部のデータを受け取ることができます。データベース利用や管理画面などを自作したい場合はこちら。
外部システムから信号を受け取る
このページでの説明とは逆に、外部プログラム側からプロラインに信号を送ることで、以下のことができます。
・プロラインで、シナリオ移動する(メッセージを送る等)
・プログラム側からフォームに登録する(ユーザー情報の更新含む)
・(応用)フォームを利用して、任意のメッセージをユーザーに送信する
この内容については、別の記事で解説します。