【解約・休止・サイクル変更・スキップ】申請フォームのHTMLファイル内容説明
フォームファイル内にあるindex.html(入力ページ)の詳細説明です。
ソースコード内にコメントアウトで説明の記載があります。
下記フォームサンプルページのブラウザ上でソースコードをご確認いただくか、ファイルをダウンロードして内容をご確認ください。

>フォームサンプルページ

※ソースコード確認方法
対象ページをChromeブラウザで開いて下記操作を行ってください。

windows:Ctrl + U
mac:option + command + U

>フォームサンプルダウンロード

【フォーム】継続促進バナーの設置方法
質問の途中で、上記のような継続を促すバナーを表示させる方法についてのガイドです。
継続を促すタイミングにつきましては任意となりますが、サンプル例では解約理由の選択時にバナーが表示される仕様になります。
下記のサンプルページをご確認ください。
(※バナー表示条件:質問3 効果を実感できなかった or 価格が高い or 商品が余っている 選択)


下記フォームサンプルページを元に説明します。
ブラウザ上でソースコードをご確認いただくか、ファイルをダウンロードして内容をご確認ください。
>フォームサンプルページフォームサンプルダウンロード(11)

※ソースコード確認方法
対象ページをChromeブラウザで開いて下記操作を行ってください。
windows:Ctrl + U
mac:option + command + U


1.バナー作成
↓
2.バナーの挿入部分に質問とバナーを設置【ファイル:index.html】
①画像追加
②③④申請種別に関する質問はname属性col_1に格納
⇒ 参照)申請種別の質問をフォーム内に2回以上使用する場合
↓
3.休止期間の設定
①②③休止期間に関する質問はname属性col_2に格納【ファイル:index.html】
⇒ 参照)申請種別の質問をフォーム内に2回以上使用する場合
↓
4.申請種別(col_1),休止期間(col_2)の送信設定【ファイル:index.html】
↓
5. 2,3の呼び出し設定【ファイル:index.html】
↓
6.質問3の解約理由によって出し分け【ファイル:display.js】
解約理由が「効果を実感できなかった」「価格が高い」「商品が余っている」の時にバナーを表示
※バナーを複数設定する場合はこちらで条件分岐を追加
↓
7.継続促進バナーの質問3-1の解約理由によって出し分け【ファイル:display.js】
①以降の質問を非表示
②休止選択時処理
③スキップ選択時処理
④解約選択時処理
⑤ ②で休止選択時に休止期間選択時処理
↓
8.name属性が変更になった場合は、重複しないように調整する(連続番号にする)
⇒解約・休止・サイクル変更フォーム内のcol(name属性)の記載ルール
フォーム立ち上げ時ポップアップ設置方法
下記フォームサンプルページを元に説明します。
フォームサンプルページをブラウザ上でソースコードをご確認いただくか、ファイルをダウンロードして内容をご確認ください。
>フォームサンプルページ
>フォームサンプルダウンロード

※ソースコード確認方法
対象ページをChromeブラウザで開いて下記操作を行ってください。
windows:Ctrl + U
mac:option + command + U


(1)index.html
①画像の設定
②閉じるボタン
③離脱ボタン
④ポップアップ挙動
〈コピペ用コード〉
<!--フォーム立ち上げ時ポップアップ-->
<div id="modal-content">
	<div class="pop">
		<!--画像設置-->
		<img src="images/bnr_popup2.png" alt="">
		<!--ボタン設置-->
		<ul>
			<li><span id="modal-close">ダイエットをやめる</span></li>
			<li><a href="">もう少しだけダイエット<br>を頑張ってみる!!</a></li>
		</ul>
	</div>
</div>

<script>
	$(function () {
		$("body").append('<div id="modal-overlay"></div>');
		$("#modal-overlay,#modal-content").fadeIn("slow");

		//モーダル閉じる
		$("#modal-close").unbind().click(function () {
			$("#modal-content,#modal-overlay").fadeOut("slow", function () {
				$("#modal-overlay").remove();
			});
		});
	});
</script>
<!--フォーム立ち上げ時ポップアップ-->


(2)style.css
738~793行目、
1073~1088行目(@media only screen and (min-width: 640px) )、
/*=======================================
	modal
=======================================*/
#modal-content {
  width: 90%;
  max-width: 320px;
  margin: 0;
  padding: 0;
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  display: none;
  z-index: 2; }

#modal-overlay {
  z-index: 1;
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 120%;
  background-color: rgba(0, 0, 0, 0.75); }

.pop {
  position: relative; }
  .pop ul {
    position: absolute;
    bottom: 15px;
    left: 50%;
    transform: translateX(-50%);
    height: 50px;
    display: flex;
    justify-content: center; }
  .pop li {
    width: 126px;
    margin: 0 4px; }
  .pop a,
  .pop span {
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    height: 100%;
    box-sizing: border-box;
    border-radius: 25px;
    font-size: 10px;
    line-height: 1.4;
    background: #006fe2;
    color: #fff;
    cursor: pointer; }
  .pop span {
    background: #fff;
    color: #bbb;
    border: 1px solid #bbb; }


@media only screen and (min-width: 640px) {

  #modal-content {
    max-width: 450px; }

  .pop ul {
    bottom: 20px;
    height: 70px; }
  .pop li {
    width: 190px;
    margin: 0 6px; }
  .pop a,
  .pop span {
    border-radius: 35px;
    font-size: 15px; }
}


(3)ポップアップバナーの画像をimagesフォルダに格納

オリジナルフォーム(LIFF)の種類、設定について
【フォームの種類について】
オリジナルフォーム(LIFF)は大きく下記の2種類に分けられます。
①解約・休止・サイクル変更フォーム
②その他のフォーム(本人確認フォーム含む)

①解約・休止・サイクル変更フォームで取得した情報はASSダッシュボード、受信BOXに反映されます。
②その他のフォームで取得した情報は受信BOXに反映されます。また本人確認フォームとして設定しますと、取得した情報を会員リストの顧客情報として反映することができます。


【設定方法について】
LIFFの設定画面でフォーム種類を選択し、保存してください。


【注意事項】
オリジナルフォームの編集画面で、現在アップロードされているフォームの種類が確認できます。
こちらのフォーム種類とLIFFの設定フォームは同じにしてください。
異なりますとオリジナルフォームから正常にデータを取得できません。

アップロードされているフォームの設定方法につきましては。各フォームの詳細設定ガイドをご参照ください。

⇒解約・休止・サイクル変更フォーム内のcol(name属性)の記載ルール本人確認フォーム内のcol(name属性)の記載ルール
1:1トーク画面に表示されるLIFFの最大数

1:1トークの右サイドメニューにあるLIFFは最大5件までの表示になっております。

それ以上の表示は、右サイドメニュ【詳細】をクリックして個人詳細ページでご確認ください。

フォーム内質問と設定col(name属性)の確認方法

(1)コンテンツ > LIFF

(2)対象フォーム の 「フォーム修正」選択

(3)すべてを開く

(4)フォーム内質問とそちらに紐づいている設定col(name属性)の確認を行えます。
※二重に定義されていると、後に定義されているcolで上書きされ、一部受信が出来なくなります
オリジナルフォームのPV数、ユニークユーザー数を計測する方法
外部ツールのGoogleアナリティクスを使用することで計測ができます。

アナリティクスの機能は多機能にわたるため、ツールについての細かい使用方法につきましては割愛させていただきます。
知りたい情報はインターネットから取得してご対応下さい。


(1)Googleアカウントの作成
アカウント作成はこちら>

↓

(2)アナリティクスにログイン
ログインはこちら>

↓

(3)アナリティクスでサイト設定をする
サイト設定はこちら>

↓

(4)サイト設定後、計測用のトラッキングタグをコピペしてください。
①対象のアカウント選択
②管理
③データストリーム
④(3)で設定したWEBサイトを選択
⑤トラッキングタグをコピペする
↓

(5)コピペしたコードを、オリジナルフォーム(LIFF)の「index.html」,「complete.html」のhead内に設置してください。

オリジナルフォームを編集するには下記ガイドを参照下さい。
既存のオリジナルフォーム(LIFF)のダウンロード方法
オリジナルフォーム(LIFF)のアップロード方法

↓

(6)設置後、ユーザーのアクセスが行われますとアナリティクスの管理画面に計測内容が表示されます。
PV数、ユニークユーザー数が計測できますので、マーケティングにご活用ください。
設置の設定代行(有償)も行っております。
ご希望の方は下記フォームからお問い合わせください。
Googleアナリティクス設定代行に関するお問い合わせはこちら>
【オリジナルフォーム】入力チェックの設定について
■目的 
オリジナルフォームの入力チェックの設定についての説明

■セット所要時間 
10分

■セットの流れ
下記フォームサンプルページを元に説明します。 
フォームサンプルページのソースコードをブラウザ上でご確認いただくか、ファイルをダウンロードして内容をご確認ください。
フォームサンプルページ>
フォームサンプルダウンロード>

※ソースコード確認方法
対象ページをChromeブラウザで開いて下記操作を行ってください。

windows:Ctrl + U
mac:option + command + U




(1)必要ファイルは4つ
下記4ファイルを<head>内で読み込んでください。
(※ECAIのテンプレートを使用している場合、すでに設置されています。)
・jquery本体
・validationEngine.css
・validationEngine.js
・日本語化ファイル



(2)回答のclassに”validate[required]”を指定
※data-prompt-positionでアラート表示の位置を調整できます。



ガイドの内容はあくまでもサンプルになります。  そのまま使用できない場合は対応するフォームにあわせての編集をお願いします。   表示設定が正常にできない場合、ソースチェックの有償サポートも行っております。  ご希望の場合は設定代行バナー、もしくはお問い合わせLINE、チャットワークよりご依頼をお願いします。
フォームテスト環境の作成方法
本番環境へアップロードする前に動作テストを行いたい場合は、テスト用のLIFFを別途ご登録頂いてテスト送信を行ってください。


(1)コンテンツ>LIFF ページに移動
↓
(2) 「作成」ボタンをクリック
↓
(3)テスト用のLIFFを作成する
LIFF管理名には「テスト」などわかりやすくする
※解約・休止・サイクル変更に関わるフォームの場合は、「解約」「休止」「サイクル変更」の文字列をLIFF管理名に必ず入れて登録してください。
※解約・休止・サイクル変更に関わるフォーム以外の場合は、「解約」「休止」「サイクル変更」の文字列を含まないよう設定してください。

画面サイズを選択(特に指定のない場合は「Full」を選択)
オリジナルフォームにチェック、「保存する」をクリック
↓
(4) 作成したフォームの右側「フォーム編集」をクリック
↓
(5)「参照」ボタンをクリックしてテスト送信したいフォームデータを選択、「保存する」をクリック
フォームデータのダウンロード方法は下記を参照ください。
>既存のオリジナルフォーム(LIFF)のダウンロード方法

↓
(6) ⑪プレビュー、⑫設問内容をご確認できます。
※【解約・休止・サイクル変更・スキップ】申請フォームの場合、ASSダッシュボードに「お客様申請」と「テスト申請」が混在する形となる為、「名前○○の申請は処理しない」など社内ルールの周知をしていただけたらと思います。

テスト送信につきましては下記を参照ください。
>【解約・休止・サイクル変更・スキップ】エントリーフォームテスト送信方法

フォームアップロード後のチェック項目につきましては下記を参照ください。
>【簡易版】フォームアップロード後のチェック項目

オリジナルフォーム送信後、送信内容をメッセージでリマインド配信したい
■目的
オリジナルフォーム送信後、送信内容をメッセージでリマインド配信することができます。


■セット所要時間
1分


■セットの流れ
(1)コンテンツ > LIFF > 設定
対象のオリジナルフォームの設定をひらく
(2)「送信内容をメッセージで送る」にチェックを入れて保存
(3)送信テスト
LIFF-URLから送信テストを行い、メッセージで送信内容が送られてくれば設定完了です。
オリジナルフォームのテスト送信方法
回答内容がすべて配信されるため、設定する前に必ず配信される回答内容を確認してください。
質問で分岐がされている場合、ユーザーの操作によっては内容が重複して送信されることがあります。
そのような場合はオリジナルフォームを修正することで重複を防ぐことができます。
(4)メッセージも同時に送りたい場合
フォーム送信時にタグ付与を行い、タグトリガーステップメッセージを設定してください。

オリジナルフォームで、送信ボタンを押したらタグを付与する方法>

「タグトリガーステップメッセージ」の作成方法>

オリジナルフォーム申請のLINE名が反映されない
友だち登録されていないユーザーがオリジナルフォームのLIFF呼び出しURLから申請をすると、LINE名が反映されない状態になります。
友だち登録をしてから、オリジナルフォームの申請を行ってください。
友だち追加URLの確認方法はこちら>



上記で解決しない場合は、対象のオリジナルフォーム(LIFF)の複製を作成いただき、そちらを改めて本番環境に使用するようにお願いします。
オリジナルフォーム(LIFF)を複製する方法>

【フォーム】チェックボックスの作り方(解約休止フォームタイプ)

■見本

下記フォームサンプルページを元に説明します。 
フォームサンプルページのソースコードをブラウザ上でご確認いただくか、ファイルをダウンロードして内容をご確認ください。
>フォームサンプルページフォームサンプルダウンロード

※ソースコード確認方法
対象ページをChromeブラウザで開いて下記操作を行ってください。

windows:Ctrl + U
mac:option + command + U





フォームサンプルページの質問6が「2カラム・チェックボックスタイプ」になりますので、こちらをサンプルコードよりコピペしてご使用ください。
①の<section></section>部分をコピペする
②classは「q」を指定で初期非表示、その他必要に応じてclassを設定(サンプルでは「trigger」としてます。)
③送信用タイトル、type属性は「hidden」設定、name属性は前の質問から連番になるように指定、value属性は管理画面に出力されるタイトル
④質問ナンバーを指定
⑤質問テキストを指定
⑥class「col2」で2カラムを指定(※name属性のcolとは別物です)
⑦選択支を増やすときは<li></li>までをコピペで追加して増やす
⑧選択支内容を指定、type属性は「checkbox」設定、value属性は送信内容を指定
※name属性は前の質問から連番になるようにし、複数回答を取得できるように[]指定
※ data-prompt-position="topLeft"はバリデーションの表示位置を指定
⑨選択支の表示テキストを指定

LIFFの送信完了ページから別ページにリダイレクトさせる方法
送信完了ページの編集が必要になります。
対象のフォームをダウンロードし、作業を進めて下さい。

既存のオリジナルフォーム(LIFF)のダウンロード方法はこちら>

(1)complete.htmlのhead内に下記を追加
URL部分(https://www.sample.com)はリダイレクトさせたいものに変更して下さい。
<script>
    document.location = "https://www.sample.com";
</script>

(2)コンテンツ部分をコメントアウト、もしくは削除して表示されないようにする

(3)編集が終わりましたらアップロードする
オリジナルフォーム(LIFF)のアップロード方法はこちら>

オリジナルフォーム(LIFF)の最大数

オリジナルフォーム(LIFF)の発行最大数は1LINEログインチャネルで30件までとなります。

30件を超えた場合はLIFFの登録ができなくなります。(使用しなくなったLIFFを削除することで追加できるようになります)

LIFF(オリジナルフォーム)のURLを表示する期間を設ける方法

オリジナルフォームのURLを短縮URLにすることで、表示期間設定が可能です。

▼手順
①短縮URLにする際に、オリジナルURLにLIFFの「呼び出しURL」を設定

②リンクに有効期限を設定するにチェックし、有効期限(日時)を設定する


短縮URLの新規作成方法はこちら>

オリジナルフォーム内でLINE名、ECAI IDを表示させる方法
■目的 
オリジナルフォーム内で「LINE名」や「ECAI ID」を表示させたいときに使用します。


■活用事例
(1)
LINE名の場合は、オリジナルフォームのテキスト内で呼び出すことができます。
ユーザーへのパーソナルな訴求が可能となります。

(2)
ECAI IDに関してはテキスト内で使用することはあまりないのですが、
外部サービスのスプレッドシートなどに回答を送信した時に、ECAI IDを送ることでユーザーを突合(特定)することができます。
オリジナルフォームのスプレッドシート通知>


■セット所要時間 
10分

■セットの流れ
サンプルページをブラウザ上でソースコードをご確認いただくか、ファイルをダウンロードして内容をご確認ください。
サンプルページ> 
サンプルダウンロード> 

※ソースコード確認方法 
対象ページをChromeブラウザで開いて下記操作を行ってください。 
windows:Ctrl + U 
mac:option + command + U


■編集ファイル:index.html

(1)
サンプルページを参照し、LINE名、ECAI IDを取得するコードを</body>の上に追加
<!-- 削除禁止 -->
<script>
	//会員チェック
	function CheckMemberProc() {
		var uid = $("#useridfield").val();
		var fid = $("#fid").val();
		var botid = $("#bot_id").val();
		$.ajax({
			type: "POST",
			url: "/api/member/info",
			dataType: 'json',
			data: {
			"uid": uid,
			"fid": fid,
			"bot_id": botid
			},
			success: function(j_data) {
				if (j_data['error_code'] == 500) {
					alert("会員は登録されていません。");
				} 
				else {
					$("#ecai_id").text(j_data['result']['ecai_id']);
					$("#nickname").text(j_data['result']['nickname']);
				}
			},
			error: function(XMLHttpRequest, textStatus, errorThrown) {
			},
			complete: function() {removeLoading();}
		});
	}
</script>
<!-- 削除禁止 -->
(2)
サンプルページを参照し、LIFFの呼び出し部分で(1)の「CheckMemberProc();」を追加
(3)
挿入したい任意の場所に下記を追加

LINE名
<span id="nickname"></span>
ECAI ID
<span id="ecai_id"></span>
■内部API仕様

【エンドポイント】
/api/member/info

【DataType】
POST:json

【Request】
uid: String     必須 LineUserId
fid: Number     必須 フォームID
bot_id: Number 必須 BOT_ID

【Response】
error_code 正常な場合は「200」、指定されたBOT、フォーム情報、会員情報が存在しない等の場合は「500」
result error_codeが500の場合は空、会員情報が取得出来た場合は、「ecai_id」「nickname」を返却
※Requestの必須パラメータが正しく指定されていない場合は、HTTPステータスコードが422で返却される


ガイドの内容はあくまでもサンプルになります。  そのまま使用できない場合は対応するフォームにあわせての編集をお願いします。   表示設定が正常にできない場合、ソースチェックの有償サポートも行っております。  ご希望の場合は設定代行バナー、もしくはお問い合わせLINE、チャットワークよりご依頼をお願いします。
フォーム離脱時に、サンクスバナーを表示してタグを付与する方法
画面操作途中におけるタグ付与設定が必要になります。
オリジナルフォームのHTMLファイル編集が必要となりますので、対象ファイルをダウンロードします。

HTMLファイルのダウンロード方法につきましては下記をご参照ください。
> 既存のオリジナルフォーム(LIFF)のダウンロード方法


下記フォームサンプルページのソースコードと併せてご確認いただくとわかりやすいです。
> フォームサンプルページ
DL:フォームサンプルページ

※ソースコード確認方法
windows:Ctrl + U
mac  :option + command + U


ダウンロードが終わりましたらファイルを解凍し、index.htmlをご使用のテキストエディターで開きます。

設定方法としては、
 Javascriptのコードにおいて予め「AddTag」をcallしてタグをセットした上で、「AddTagProc」をcallしてください。
 例:AddTag("drGCNjCUEg0");
 例:AddTagProc();


【設定方法の詳細】

(1)付与されるタグは「id="addtag"」に格納します。
※サンプルフォームに関しては表示バナー部分のHTMLに記述しています。
↓
(2)バナー表示の際に、付与したいタグを記述した「AddTag("タグコード")」をcallする。
(バナー表示例)
↓
(3)サンクスバナー表示の際に「AddTagProc」をcallする。
※サンプルフォームに関しては「1000円割引」を押下するとサンクスバナーが表示されます。
(サンクスバナー表示例)
↓
(4)LIFFを閉じる場合、Javascriptのコードにおいて「liffclose」をcallしてください。
↓
(5)「AddTag()」「AddTagProc()」「liffclose()」関数についてはbody終了タグ上部にまとめて記述しておく
記述後ファイルの上書きを忘れずにしてください。
記述が終わりましたら、「オリジナルフォーム(LIFF)のアップロード方法」の手順に沿ってファイルをアップロードする。

付与したタグの動作確認方法は下記をご参照ください。
> 付与したタグの動作確認方法

申請種別の質問をフォーム内に2回以上使用する場合
申請種別(col_1)はフォーム内に1つのみ設定できるというルールがあります。
そのため申請種別の質問を複数設置する場合は、最終回答が「col_1」に格納される必要があります。

col(name属性)の記載ルールは下記参照
⇒解約・休止・サイクル変更フォーム内のcol(name属性)の記載ルール


下記フォームサンプルページを元に説明します。
ブラウザ上でソースコードをご確認いただくか、ファイルをダウンロードして内容をご確認ください。
>フォームサンプルページフォームサンプルダウンロード(16)

※ソースコード確認方法
対象ページをChromeブラウザで開いて下記操作を行ってください。
windows:Ctrl + U
mac:option + command + U



(1)申請種別にあたる「col_1_title」,「col_1」をtype="hidden"にて設置
↓
(2)col_1に格納するための呼び出し関数をJavascriptで設定
↓
(3)1つ目の申請種別に関する質問
 ①col_6以降の任意の順番で設定
 ②SetAppType();を呼び出して、選択内容をcol_1に格納する
↓
(4)2つ目の申請種別に関する質問
 ①col_6以降の任意の順番で設定
 ②SetAppType();を呼び出して、選択内容をcol_1に格納する(上書きされます)
広告のCV計測をオリジナルフォーム(LIFF)に使用する方法
CV計測の設定方法につきましては下記ご確認ください。
CV計測の設定方法はこちら>


(1)計測したいオリジナルフォームの表示URLをコピペします。
(2)広告 > 広告リスト > 対象のコード編集
(1)のURLを設定し、保存
(3)対象のオリジナルフォームにトラッキングコードを追加
※CV計測するページ(complete.html)にjqueryの本体が読み込まれていない場合は<head>内に下記も追加
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
(4)計測したいオリジナルフォームのLIFF呼び出しURLをコピペします。
(5)広告 > 広告リスト > 対象のコード設定方法 > LPからの計測 > ③
(4)のLIFF呼び出しURLを使用して、キャンペーンURLを生成する。
計測にはこちらのキャンペーンURLを使用して下さい。

↓

(6)LPクリック、CVが計測できていれば完成です
解約休止フォームの作成方法

(1)下記より解約休止フォームのテンプレートをダウンロード
ダウンロードはこちらから>

↓↓↓

(2)フォーム送信時のタグの設定
ダウンロードしたファイルを解凍し、index.htmlの「タグコード」部分を商品ごとに管理画面で設定したタグコードに変更

フォームの編集方法タグの作成につきましてはこちら>
タグ設定の詳細はこちら>


↓↓↓

(3)フォームの編集
フォームの内容を変更する場合はindex.html,complete.htmlを編集してください。

ラジオボタンの作り方>
チェックボックスの作り方セレクトボックスの作り方マイクロコピーの追加画像の追加方法htmlファイルの詳細の説明はこちら>

↓↓↓


(4)LIFFの作成
LIFFの作成についてはこちら>

↓↓↓


(5)作成したLIFFにファイルをアップロード
アップロードについてはこちら>

↓↓↓


(6)スマホよりテスト送信を行い、意図した挙動になっているかご確認下さい。
フォームのテスト送信方法
上記以外にも多数のテンプレートをご用意しております。
スクロールタイプ、ポップアップバナー、チャット型などをご希望の場合は下記よりダウンロードしてください。
テンプレート>
スケルトン状態からオリジナルフォームを作成する方法
■目的
テンプレートを使用せず、オリジナルフォームを作成する方法


■セット所要時間
30分(※フォームのコンテンツ量によって変わります)


■セットの流れ
オリジナルフォームの内容をECAIに送るために、HTML内に記載のルールがあります。
ルールのみを記載した、スケルトン状態のフォームをダウンロードし、
内容をご確認ください。

スケルトンフォーム>
スケルトンフォームダウンロード>


■ファイル説明
・index.html→入力ページ
・complete.html→送信完了ページ
・images→画像フォルダ
・liff-starter.js→LIFFを動かすプログラム(削除禁止)

編集にはindex.html、complete.html、imagesを使用します。


■index.htmlについて
・入力フォームを設置するファイル
・<!-- 削除禁止 -->となっている部分はLIFFを動かすプログラムになるので削除しないでください。

・質問の作り方
1つの質問に対して、inputのname属性「col_1_title」と「col_1」をセットでおきます。
数字は順番に読み込まれるので、連番にする必要があります。詳細はこちら>



送信ボタンを押すと入力データが送信され、送信完了ページに遷移します。



■complete.htmlについて
・送信後の完了ページ
・送信後のメッセージを設定
・「閉じる」ボタンをクリックするとLIFFが閉じます。



■ファイルのアップロード
完成したファイルを圧縮し、ECAIにアップロードします。

フォームの圧縮方法について>

オリジナルフォーム(LIFF)のアップロード方法>

オリジナルフォームのテスト送信方法>


ガイドの内容はあくまでもサンプルになります。  そのまま使用できない場合は対応するフォームにあわせての編集をお願いします。   表示設定が正常にできない場合、ソースチェックの有償サポートも行っております。  ご希望の場合は設定代行バナー、もしくはお問い合わせLINE、チャットワークよりご依頼をお願いします。
【オリジナルフォーム】チェックボックスの作り方

■見本

下記フォームサンプルページを元に説明します。 
フォームサンプルページのソースコードをブラウザ上でご確認いただくか、ファイルをダウンロードして内容をご確認ください。
フォームサンプルページ>
フォームサンプルダウンロード>

※ソースコード確認方法
対象ページをChromeブラウザで開いて下記操作を行ってください。

windows:Ctrl + U
mac:option + command + U




フォームサンプルページの質問3が「チェックボックスタイプ」になりますので、こちらをサンプルコードよりコピペしてご使用ください。
①ECAI側で表示されるタイトルを「value」に設定(フォームには表示されません)
②質問番号を指定
③質問テキストを指定
④name属性は前の質問から連番になるようにし、複数回答を取得できるように[]指定
⑤value属性は送信内容を指定(⑤⑥は同じだとわかりやすい)
⑥選択支の表示テキストを指定
選択支を増やすときは<li></li>までをコピペで追加して増やす


ガイドの内容はあくまでもサンプルになります。  そのまま使用できない場合は対応するフォームにあわせての編集をお願いします。   表示設定が正常にできない場合、ソースチェックの有償サポートも行っております。  ご希望の場合は設定代行バナー、もしくはお問い合わせLINE、チャットワークよりご依頼をお願いします。
【フォーム】セレクトボックスの作り方

■見本

下記フォームサンプルページを元に説明します。 
フォームサンプルページのソースコードをブラウザ上でご確認いただくか、ファイルをダウンロードして内容をご確認ください。
>フォームサンプルページフォームサンプルダウンロード

※ソースコード確認方法
対象ページをChromeブラウザで開いて下記操作を行ってください。

windows:Ctrl + U
mac:option + command + U





フォームサンプルページの質問5が「セレクトボックスタイプ」になりますので、こちらをサンプルコードよりコピペしてご使用ください。
①の<section></section>部分をコピペする
②classは「q」を指定で初期非表示、その他必要に応じてclassを設定(サンプルでは「age」としてます。)
③送信用タイトル、type属性は「hidden」設定、name属性は前の質問から連番になるように指定、value属性は管理画面に出力されるタイトル
④質問ナンバーを指定
⑤質問テキストを指定
⑥class「select」を指定する
⑦selectタグを指定、name属性は前の質問から連番になるように指定
※ data-prompt-position="topLeft"はバリデーションの表示位置を指定
⑧初期表示、valueは空を指定
⑨optionタグで選択内容を指定
オリジナルフォーム(LIFF)送信時のメール通知設定
GoogleのGASという機能を使って実装します。
Googleアカウントが1つ必要となりますのでご用意ください。
1アカウントで1日100通まで通知が可能となります。(Google有料プランは1500通まで対応可)

Googleアカウント作成はこちら>


①グーグルドライブ > +新規 > その他 > Google Apps Script

②コード.jsに下記をコピペし、送り先メールアドレス、タイトル、本文を編集
その後 保存 > デプロイ > 新しいデプロイ
function doPost(){
GmailApp.sendEmail("送り先メールアドレス", "(タイトル)オリジナルフォーム送信通知", "(本文)オリジナルフォームが送信されました");

}


③バージョン1(任意のテキスト) > 自分のGoogleアカウント > 全員 > デプロイ
※最初のデプロイはグーグルからアクセスの許可を求められます。
その場合は許可して、詳細をクリックしてください。

④下のURLをコピー > 完了
※URLは後で使います。

⑤オリジナルフォームの準備
下記サンプルをダウンロードして、通知設定に必要なコード(⑥)を対象フォームへ設置してください。

フォームサンプルページ>
フォームサンプルダウンロード>

 ※ソースコード確認方法
サンプルページをChromeブラウザで開いて下記操作を行ってください。 
windows:Ctrl + U 
mac:option + command + U


⑥index.htmlの122~158行目をコピペ
const URLに④のURLを設置
<script>
	//メール通知
	function OnPost(){
		const URL = "デプロイ時のURLを設置";

		let postparam = {
		"method" : "POST",
		"mode" : "no-cors",
		"Content-Type" : "application/x-www-form-urlencoded"
		// "body" : JSON.stringify(SendDATA)
		};
		fetch(URL, postparam);
	}

	//送信時処理
	$(function () {
		$('.btn-submit').on('click', function () {
			if ($("#form-name").validationEngine('validate')) {

				//メール通知
				OnPost();

				//連打防止ローディング
				$('.btn').hide();
				$('.loading').show();

				//フォーム送信
				setTimeout(addSubimt, 2000);
			}
		});
	});

	var addSubimt = function(){
		document.form.submit();
	}

</script>

⑦formタグにname属性"form"を設置
※設置がある場合は既存のものでもOK

⑧buttonのtype属性はbuttonにする

問題なく設置できると、②で指定したメールアドレスに通知が飛ぶようになります。
連続で送信された場合、グーグルのサーバーの状況によりメール通知が行われないことがあります。

フォーム送信時に付与されるタグを使ってユーザーの絞り込みを行いフォーム送信後すぐ(0分後)にステップメッセージを送る方法
■目的
タグトリガーステップメッセージの場合、タグによる絞り込みを行ったあとトリガータグによってメッセージが送信されます。
そのためフォームの送信時に付与したタグでは絞り込みを行ってから0分後の配信ができません(1分後の配信は可能です)
そこでトリガーとなるタグをフォーム送信後の完了ページで付与することで0分後にメッセージを送信することが可能になります。


■セット所有時間
おおよそ20分


■セットの流れ

下記サンプルページを元に説明します。 
ファイルをダウンロードして内容をご確認ください。
サンプルダウンロード>
サンプルページ(完了ページ)>
サンプルページ(入力ページ)>

※ソースコード確認方法 
サンプルページをChromeブラウザで開いて下記操作を行ってください。 
windows:Ctrl + U 
mac:option + command + U


サンプルページのフォームは質問の回答によってタグが付与される仕様となっております。
フォーム送信後に表示される完了ページで自動でトリガータグが付与される設定をします。
こうすることでフォーム送信時の付与タグで使ってタグによる絞り込みを行いながらステップメッセージを送ることが可能です。

編集するファイルはcomplete.htmlです。
GIFのローディング画像をご用意ください。
特に指定がない場合は下記をご使用ください。
(1)スタイルの設定
<style>
	/* ローディング画面のスタイル */
	#loading {
		position: fixed;
		top: 0;
		left: 0;
		width: 100%;
		height: 100%;
		background-color: #ffffff;
		display: flex;
		justify-content: center;
		align-items: center;
		z-index: 9999;
		transition: opacity 1s ease;
	}

	#loading.fade-out {
		opacity: 0;
		visibility: hidden;
	}

	/* コンテンツは最初非表示に */
	#main-content {
		display: none;
	}
	</style>
(2)ローディング画像の準備
※自動でタグを付与するために3秒ほどのローディングの時間が必要になります。
①初期表示されるローディング画像の設置
②ページ全体の表示はid="main-content"で囲い最初は非表示にしておきます。
(3)完了ページを開いたときにトリガーとなるタグを自動で付与する
下記コードをbodyの閉じタグの直上にコピペして下さい。
115行目の★タグコードにはトリガーとなるタグコードを設定してください。

注意点として、タグ付与と同時にそのタグ名でECAIに回答が送信されます。
<!-- 削除禁止 -->
<form id="form-name" method="POST" action="###cancellationurl###">

	<!-- 削除禁止 --><input type="hidden" id="useridfield" name="luid"><!-- 削除禁止 -->
	<!-- 削除禁止 --><input type="hidden" id="fid" name="fid" value="###fid###"><!-- 削除禁止 -->
	<!-- 削除禁止 --><input type="hidden" id="liffid" name="liffid" value="###liffid###"><!-- 削除禁止 -->
	<!-- 削除禁止 --><input type="hidden" id="bot_id" name="bot_id" value="###botid###"><!-- 削除禁止 -->
</form>
<!-- 削除禁止 -->

<!-- 削除禁止 --><input type="hidden" id="addtag"><!-- 削除禁止 -->

<!-- 削除禁止 -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
	// ページが読み込まれた後の処理
	window.addEventListener('load', () => {
		setTimeout(() => {
		const loader = document.getElementById('loading');
		loader.classList.add('fade-out');

		// フェードアウト後にメインコンテンツ表示
		setTimeout(() => {
			loader.style.display = 'none';
			document.getElementById('main-content').style.display = 'block';
		}, 1000); // フェードアウト時間と合わせる
		}, 3000); // 3秒待機
	});
	</script>

<script charset="utf-8" src="https://static.line-scdn.net/liff/edge/2/sdk.js"></script>
<script src="liff-starter.js"></script>
<script>
	window.onload = function (e) {
		liff.init({
				liffId: "###liffid###"
			}).then(() => {
				liff.getProfile().then(function (profile) {
					document.getElementById('useridfield').value = profile.userId;
				}).catch(function (error) {});
			})
			.catch((err) => {});
	};
</script>
<!-- 削除禁止 -->

<!-- 削除禁止 -->
<script>
	//タグ付与
	AddTag('★タグコード');

	var alertmsg = function(){
		AddTagProc();
		// alert("3秒経過、タグ付与");
	}
	setTimeout(alertmsg, 3000);

	function AddTag(TagCode) {
		$("#addtag").val(TagCode);
	}

	function AddTagProc() {
		var uid = $("#useridfield").val();
		var fid = $("#fid").val();
		var tag = $("#addtag").val();
		var botid = $("#bot_id").val();
		$.ajax({
			type: "POST",
			url: "/api/tag/add",
			dataType: 'json',
			data: {
				"uid": uid,
				"fid": fid,
				"bot_id": botid,
				"tag_code": tag
			},
			success: function (j_data) {},
			error: function (XMLHttpRequest, textStatus, errorThrown) {},
			complete: function () {}
		});
	}

	function liffclose() {
		liff.closeWindow();
	}
</script>
<!-- 削除禁


注意点として、タグ付与と同時にそのタグ名でECAIに回答が送信されます。
そのため、1回の申請で2回の回答が行われるものとなります。




ガイドの内容はあくまでもサンプルになります。 そのまま使用できない場合は対応するフォームにあわせての編集をお願いします。  表示設定が正常にできない場合、ソースチェックの有償サポートも行っております。 ご希望の場合は設定代行バナー、もしくはお問い合わせLINE、チャットワークよりご依頼をお願いします。

【フォーム】出し分け設定の詳細
回答内容によって、次の表示内容を出し分けます。

下記フォームサンプルページを元に説明します。
フォームサンプルページをブラウザ上でソースコードをご確認いただくか、ファイルをダウンロードして内容をご確認ください。
>フォームサンプルページフォームサンプルダウンロード

※ソースコード確認方法
対象ページをChromeブラウザで開いて下記操作を行ってください。
windows:Ctrl + U
mac:option + command + U


■編集ファイル:index.html

(1)全体の質問を非表示にして、初期表示させる部分を設定
※今回は説明用にCSSを<head></head>内に書き込んでいますが、style.cssに書き込んでもOKです。
(2)Javascriptで出し分け処理を設定します。
①質問2のラジオボタンが変更されたら処理がスタートします。
②のif文は休止が選択された時の処理を記入(225行目まで)
③質問2-1の休止期間選択を表示
④質問3、エントリーボタンは非表示にする
⑤のif文はスキップが選択された時の処理を記入(231行目まで)
⑥質問2-1の休止期間、質問3は非表示にする
⑦エントリーボタンを表示
⑧質問2-1の休止期間の選択を解除
⑨のif文は解約が選択された時の処理を記入(236行目まで)
⑩質問3以降を表示
⑪質問2-1の休止期間、エントリーボタンは非表示にする
⑫質問3を表示
⑬次の質問にスクロールする処理、id="scrollAnchor"までスクロールする
オリジナルフォーム(LIFF)送信時にメールにも送信内容を送る設定
GoogleのGASという機能を使って実装します。
Googleアカウントが1つ必要となりますのでご用意ください。
1アカウントで1日100通まで通知が可能となります。(Google有料プランは1500通まで対応可)

Googleアカウント作成はこちら>



①オリジナルフォームの準備
下記サンプルをダウンロードして、通知設定に必要なコード(②)を対象フォームへ設置してください。

フォームサンプルページ>
フォームサンプルダウンロード>

 ※ソースコード確認方法
サンプルページをChromeブラウザで開いて下記操作を行ってください。 
windows:Ctrl + U 
mac:option + command + U


②index.htmlの136~181行目をコピペ
const URLには後ほどGASで指定されたURLを設置(※ガイド後半の⑧)
SendDATAには各質問のタイトルと回答のValueを格納
<script>
	//メール通知
	function OnPost(){
		const URL = "デプロイ時のURLを設置";

		let SendDATA = {
			"col_1_title" : $('[name=col_1_title]').val(),
			"col_1" : $('input[name=col_1]:checked').val(),
			"col_2_title" : $('[name=col_2_title]').val(),
			"col_2" : $('input[name=col_2]:checked').val(),
			"col_3_title" : $('[name=col_3_title]').val(),
			"col_3" : $('[name=col_3]').val(),
		};

		let postparam = {
		"method" : "POST",
		"mode" : "no-cors",
		"Content-Type" : "application/x-www-form-urlencoded",
		"body" : JSON.stringify(SendDATA)
		};
		fetch(URL, postparam);
	}

	//送信時処理
	$(function () {
		$('.btn-submit').on('click', function () {
			if ($("#form-name").validationEngine('validate')) {

				//メール通知
				OnPost();

				//連打防止ローディング
				$('.btn').hide();
				$('.loading').show();

				//フォーム送信
				setTimeout(addSubimt, 2000);
			}
		});
	});

	var addSubimt = function(){
		document.form.submit();
	}

</script>

③formタグにname属性"form"を設置
※設置がある場合は既存のものでもOK

④buttonのtype属性はbuttonにする


ここからはGoogleのGASの設定になります。

⑤グーグルドライブ > +新規 > その他 > Google Apps Script

⑥コード.jsの編集
下記をコードをコピペし、送り先メールアドレス、タイトルを任意のものに変更
mail_messageに本文が入るようになります
その後 保存 > デプロイ > 新しいデプロイ
function doPost(e){

let JsonDATA = JSON.parse(e.postData.getDataAsString());

let mail_message = JsonDATA.col_1_title + ":" + JsonDATA.col_1 + "\n" + JsonDATA.col_2_title + ":" + JsonDATA.col_2 + "\n" + JsonDATA.col_3_title + ":" + JsonDATA.col_3 ;

GmailApp.sendEmail("送り先メールアドレス", "(タイトル)オリジナルフォーム送信通知", mail_message);

}





⑦バージョン1(任意のテキスト) > 自分のGoogleアカウント > 全員 > デプロイ
※最初のデプロイはグーグルからアクセスの許可を求められます。
その場合は許可して、詳細をクリックしてください。

⑧下のURLをコピー > 完了
※URLは②のconst URLに設置

問題なく設置できると、⑥で指定したメールアドレスに通知が飛ぶようになります。
連続で送信された場合、グーグルのサーバーの状況によりメール通知が行われないことがあります。

【フォーム】解約理由ごとにバナーを出し分ける
解約理由の内容によって、上記のような継続を促すバナーを出し分ける方法のガイドです。
継続を促すタイミングにつきましては任意となりますが、サンプル例では解約理由の選択時にバナーが表示される仕様になります。
下記のサンプルページをご確認ください。
(※バナー表示条件:質問3 効果を実感できなかった or 価格が高い or 商品が余っている 選択)


下記フォームサンプルページを元に説明します。
ブラウザ上でソースコードをご確認いただくか、ファイルをダウンロードして内容をご確認ください。
>フォームサンプルページフォームサンプルダウンロード(20)

※ソースコード確認方法
対象ページをChromeブラウザで開いて下記操作を行ってください。
windows:Ctrl + U
mac:option + command + U

※継続バナーの設置がない場合は、先に下記ガイドより設置してください。
>【フォーム】継続促進バナーの設置方法


■対象ファイル:dispaly.js

①質問3の解約理由によって、imgタグのsrc属性を動的に変更する
②「効果を実感できなかった」選択時の表示画像を設定する
③「価格が高い」選択時の表示画像を設定する
④「商品が余っている」選択時の表示画像を設定する
オリジナルフォームで取得した内容を会員情報から確認する
(1)サイドメニュー「会員」 > 「会員リスト」 > 対象会員「詳細」
↓
(2)LIFFコンテンツ内から、対象の送信内容の「詳細」
↓
(3)取得した内容を確認できます

LINE公式アカウント側でセットしたあいさつメッセージにECAIで作成したLIFF(オリジナルフォーム)は使えますか?

はい、使用可能です。