スケルトン状態からオリジナルフォームを作成する方法
■目的
テンプレートを使用せず、オリジナルフォームを作成する方法


■セット所要時間
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、チャットワークよりご依頼をお願いします。
お客様チェックシート┃オリジナルフォームで希望の項目が反映されない
オリジナルフォームで希望の項目が反映されないときは下記ご確認ください。

①スマートフォンのLINEアプリで送信しているか
ECAIの機能はPC版のLINEアプリでは使用できません。
スマートフォンのLINEアプリを使用してください。

②LIFF呼び出しURLを使用しているか
表示用のURLでは送信ができません。
送信をするときは、LIFFの呼び出しURLをメッセージやリッチメニューで呼び出して使用してください。

③index.html内の各質問に設定するname属性は正しく設定されているか
設定方法は下記ガイドを確認ください。
本人確認フォーム内のcol(name属性)の記載ルール>
解約・休止・サイクル変更フォーム内のcol(name属性)の記載ルール>

④ファイル内の<!--削除禁止-->部分を編集していないか

全てをチェックいただいても解決できなかった際はサポートまでご連絡くださいませ。

解約・休止フォームで商品選択を表示させない方法
オリジナルフォームの解約、休止、スキップなどの申請につきましては、商品選択の項目設定が必須となります。
商品設定が1つの場合でフォームに表示をさせない場合は、以下の内容を<form>内に設置して下さい。
※2行目の商品名部分は適宜ご変更ください。

<input type="hidden" name="col_4_title" value="商品">
<input type="hidden" name="col_4" value="商品名">

設置例)
オリジナルフォーム(LIFF)を複製する方法
対象のフォームをダウンロードし、新規で作成したLIFFにアップロードすることでできます。
BOT(LINE公式アカウント)間をまたいでの複製も可能です。


①対象のフォームをダウンロードする
ダウンロード方法はこちら>

↓

②新規LIFFを作成する
新規LIFFを作成方法はこちら>

↓

③作成したLIFFにダウンロードしたファイルをアップロードする
アップロード方法はこちら>

オリジナルフォームを開いた時にタグを付与する方法
■目的
オリジナルフォームを開いた時にタグ付与する方法の説明になります。
タグ付与によって、セグメントが切れたり、クリックの計測などが可能になります。
タグはフォームを開くたびに上書きされて付与されます。

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

■セットの流れ

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

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


(1)下記コードを</body>タグの直上に設置
(サンプルページのindex.html 117~158行目)
<!-- 削除禁止 --><input type="hidden" id="addtag"><!-- 削除禁止 -->
<!-- 削除禁止 -->
<script>
	$(window).on('load', function(){
		setTimeout(delaySend, 1000);
	});

	AddTag('タグコード');//タグセット
	var delaySend = function () {
		AddTagProc();//タグ送信
	}

	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>
<!-- 削除禁止 -->
(2)タグ設定
AddTag('タグコード');のタグコード部分に付与したいタグを設置
タグ作成についてはこちら>
オリジナルフォームの編集についてはこちら>


(3)フォームをアップロード
オリジナルフォームをLINEで開いてタグが付与されていれば完成です。
タグはフォームを開くたびに上書きされて付与されます。

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


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

チェックボックスの作成方法はこちら>

■セット所要時間
30分


■サンプルコード
フォームサンプルページ>
フォームサンプルページダウンロード>
※ソースコード確認方法
windows:Ctrl + U 
mac  :option + command + U 


■セットの流れ
チェックボックスが選択されたタイミングでid="add_tags"のvalueにタグを格納します。
フォームが送信されると格納されたタグが付与されます。
タグコードに本番用のタグコードをご設定ください。

<script>
//チェックボックス選択
$(function () {
	$('.trigger input').on('change', function () {
		tags = [];//空の配列

		$('.trigger input:checkbox:checked').each(function() {
			var val = $(this).val();

			if(val == '自分にピッタリな商品だと思ったから'){
				tags.push('タグコード1');
			}
			else if(val == '有名人・雑誌・TVなどの影響を受けたから'){
				tags.push('タグコード2');
			}
			else if(val == '友人知人の紹介だから'){
				tags.push('タグコード3');
			}
			else if(val == '試してみたかったから'){
				tags.push('タグコード4');
			}
		});

		//送信用にタグを格納
		document.getElementById("add_tags").value = tags;

		//ボタン表示
		if ($('.btn.entry').css('display') == 'none') {
			$('.btn.entry').show();
			scrollNext('#scrollAnchor');
		}
	});
});
</script>

ガイドの内容はあくまでもサンプルになります。
そのまま使用できない場合は対応するフォームにあわせての編集をお願いします。 
表示設定が正常にできない場合、ソースチェックの有償サポートも行っております。
ご希望の場合は設定代行バナー、もしくはお問い合わせLINE、チャットワークよりご依頼をお願いします。
【フォーム】申請種別の内容を複数設定する方法
フォーム(LIFF)の中で申請種別(col_1)で設定した内容が管理画面に申請内容として表示されます。
複数の質問から申請種別(col_1)を設定したい場合は、最終回答が「col_1」になるようにしてください。


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

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



対象ファイル:index.html

(1)申請種別(col_1)に内容を設定したい質問を下記のようにします。
①表示させたい申請内容
②col_1に申請内容をセットするクリックイベント
↓
(2)②で呼び出すクリックイベントの設定
フォーム下部の<script></script>の中に記述する
オリジナルフォーム内で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、チャットワークよりご依頼をお願いします。
20文字以上の文字やテキストエリアを使ってアンケートを作成したい

20文字以上の文字やテキストエリアを使ってアンケートを作成する場合は、オリジナルフォーム機能を使用してください。

ECAIにあるアンケート機能では設問の文字が20文字までの仕様となっており20文字以上の使用ができないためです。
また、回答タイプが選択ボタンのみとなりユーザーに文字入れをしてもらうなど選択ボタンとは異なる回答タイプは使用ができないためです。

オリジナルフォーム機能を仕様することで、複数の回答タイプや画像を使用したアンケート作成が可能です!!


⇒オリジナルフォームの作成方法はこちら

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



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

LIFF(オリジナルフォーム)の入力を1ユーザー1回に制限することは可能か?

2つの方法があります。

①リッチメニューによる制限
LIFFのURLをリッチメニューをタップして開かせる方法にして、申請後にタグ付与して別のリッチメニューに変えることでオリジナルフォームの入力を1回に制限することが可能です。
LIFFのURLを直接ユーザーに表示させないことで再申請できなくする方法になります。
※LIFF自体に回数の制限を設けることはできません


②オリジナルフォームによる制限
指定タグの人にはオリジナルフォームを表示しない>

直接計測をLP内やオリジナルフォーム(LIFF)内で行う方法
直接計測はリファラー(遷移元URL)がない時にカウントされるため、LP内やオリジナルフォーム(LIFF)内では使用できません。

そこで直接計測に対して、"noreferrer"を設定することで計測が可能となります。


①aタグに設置する場合
aタグにrel="noreferrer"を追加
例)
※href内は設定したいURLに変更する
<a href="https://demo.ecai.jp/optin/9?ecaiad=arhzcZCj" rel="noreferrer">友だち追加</a>

②JavaScriptで設定する場合
例)
※第一引数のURLは設定したいURLに変更する
window.open('https://demo.ecai.jp/optin/9?ecaiad=arhzcZCj', '_blank', 'noreferrer');

【注意点】
・直接計測とLP計測は同時に使用できません。
・指定のリンクやボタンをクリックするとカウントされます。
・直接計測なのでトラッキングコードは設置しない
解約休止フォームの作成方法

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

↓↓↓

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

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


↓↓↓

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

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

↓↓↓


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

↓↓↓


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

↓↓↓


(6)スマホよりテスト送信を行い、意図した挙動になっているかご確認下さい。
フォームのテスト送信方法
上記以外にも多数のテンプレートをご用意しております。
スクロールタイプ、ポップアップバナー、チャット型などをご希望の場合は下記よりダウンロードしてください。
テンプレート>
【オリジナルフォーム】日付入力、今日の日付表示
オリジナルフォームの日付入力と今日の日付の表示方法のガイドです。

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

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


(1)日付入力の作成方法
①スタイルの設定
②下記部分をコピペ
※name属性は適宜ご変更下さい。
(2)今日の日付の表示方法
①ヘッダーのscript内に下記コードをコピペ
日付入力時の初期値をここで設定してます。
②今日の日付を表示させたい場所に下記コードをコピペ
<script>document.write(today);</script>
新機能#60┃オリジナルフォームに回答があったことをLINE・メールに通知させることが可能になりました!

—LINE通知—

—メール通知—


■目的
オリジナルフォームの回答をLINEまたはメールに通知させることで、オリジナルフォームの回答をしたことをいち早く知ることができるので、お客様対応の品質向上に繋げることが可能です。

■セット所要時間
5分

■セットの流れ
LINE通知を行う場合は事前にスマホ連携が必要です。
 ┗スマホ連携方法はこちら>

①オペレーター設定でメールアドレスを設定
 ┗設定したメールアドレスにメール送信をします
 ┗オペレーター設定方法はこちら>


②オペレーター設定で「オリジナルフォーム送信の通知」を有効にする


➂オリジナルフォームにチェックが入っていることを確認する。
 ※「オリジナルフォーム」を選択されている場合のみLINE・メール通知が利用可能

④「コンテンツ>LIFF>設定」で申込み通知「あり」を選択し、「LINE」「メール」にチェックを入れ保存。
 ※「LINE」「メール」どちらでも受け取りたい場合はどちらにもチェック


⑤通知設定したLIFFの呼び出しURLからオリジナルフォーム回答をして、設定したLINE・メールアドレスに通知が届くかテストしてからご使用ください。

ECAIのサブドメインはユーザーに見えてしまいますか。

「オリジナルフォーム」と「短縮URL」の機能使用時にユーザーに見えます。
どのように見えるかは下記画像にてご確認ください。

▼オリジナルフォーム
フォーム展開するとページ上部に表示されます。


▼短縮URL
短縮URLはサブドメインが含まれたURLで発行される仕様となります。

オリジナルフォームの入力制限について
validationEngineというプラグインを使用しています。
公式ページ>

使用例は公式ページ以外に、日本語での説明サイトも多数あります。
そちらも併せて参照下さい。

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

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


■必須入力にする
対象のinputのclassに下記を設定
class="validate[required]" 


■文字数制限
対象のinputのclassに下記を設定
class="validate[required,minSize[15]]"
※例は15文字制限ですが、適宜ご変更下さい。

解約・休止・サイクル変更フォームにおいてのcol(name属性)と管理画面に反映される表示の仕様について

解約・休止・サイクル変更フォームにおいて設定されたcol(name属性)と、管理画面への表示順の仕様について説明になります。

フォーム内への記載のルールにつきましては下記ガイドを参照ください。
解約・休止・サイクル変更フォーム内のcol(name属性)の記載ルール>

■設定できるcol(name属性)の種類
①共通用(固定)
 ┗申請種別用(解約、休止、サイクル変更):col_1
 ┗休止期間用:col_2
 ┗サイクル変更期間用:col_3
 ┗商品用:col_4
 ┗顧客満足度用:col_5
 ※col_1 ~ col_5は固定の用途となります。
②共通用:col_6 ~ col_50
③解約申請用:cancell_col_6 ~ cancell_col_50
④休止申請用:pause_col_6 ~ pause_col_50
⑤サイクル変更申請用:cycle_col_6 ~ cycle_col_50
 ※cancell_col_1~cancell_col_5、cycle_col_1~cycle_col_5、pause_col_1~pause_col_5は利用出来ません。

■管理画面に反映される表示の仕様
・申請種別(解約、休止、サイクル変更:col_1)ごとに回答が取り込まれます。
 ┗「解約」の場合:①共通用(固定)、②共通用:col_6 ~ col_50、③解約申請用:cancell_col_6 ~ cancell_col_50
 ┗「休止」の場合:①共通用(固定)、②共通用:col_6 ~ col_50、④休止申請用:pause_col_6 ~ pause_col_50
 ┗「サイクル変更」の場合:①共通用(固定)、②共通用:col_6 ~ col_50、⑤サイクル変更申請用:cycle_col_6 ~ cycle_col_50
 ┗「上記以外」の場合:①共通用(固定)、②共通用:col_6 ~ col_50
・設定できるのは最大でcol_50までとなります。
・同じcol(name属性)を二重に設定されていると、後に設定されているcolで上書きされ、一部受信が出来なくなります。
・商品用(col_4)は必須項目となり、設定しないと管理画面にすべて反映されません。
・表示は番号の若い順に表示されます。

(解約申請の例)
col_1
col_4
col_5
col_6
cancell_col_6
col_7
cancell_col_7

(休止申請の例)
col_1
col_2
col_4
col_5
col_6
pause_col_6
col_7
pause_col_7

写真が送られてきた場合に、自動応答することは可能ですか?

送られてきた画像(写真)に対して、応答メッセージなどで自動応答することはできません。

オリジナルフォームの画像アップロードが可能になりましたので、送られた画像に対してメッセージの配信などアクションを取りたい場合はこちらをご使用ください。

オリジナルフォームで画像をアップロードする方法>

オリジナルフォーム(LIFF)を入力のないLPのように使う方法
■目的
オリジナルフォーム(LIFF)を入力のないLPのように使う方法

■セット所要時間
5分

■セットの流れ

パターン1】
LIFFを外部サイトに設定することで、外部のサイトをLIFFで開くことができます。

外部サイトの設定方法>


【パターン2】
LIFFファイルのindex.htmlで静的ページを生成する。
index.htmlを編集し、コンテンツを作成してください。
オリジナルフォームの編集方法>

LIFFファイル内には「index.html」と「complete.html」を必ずセットで作成する必要があります。
LIFFファイルの構造についてはこちら>




ガイドの内容はあくまでもサンプルになります。  そのまま使用できない場合は対応するフォームにあわせての編集をお願いします。   表示設定が正常にできない場合、ソースチェックの有償サポートも行っております。  ご希望の場合は設定代行バナー、もしくはお問い合わせLINE、チャットワークよりご依頼をお願いします。
LINE公式アカウント側でセットしたあいさつメッセージにECAIで作成したLIFF(オリジナルフォーム)は使えますか?

はい、使用可能です。

オリジナルフォームのテスト送信方法
(1)コンテンツ > LIFF
(2)対象フォームの「LIFF呼び出しURL」をコピーする
(3)1:1トークより友達登録している管理用アカウントや自分のアカウントを選択
 テキストメッセージに「LIFF呼び出しURL」をペーストして送信
(4)ここからは実機でのLINE操作となります。
 友達登録しているスマホより送られたメッセージ確認
  「LIFF呼び出しURL」を開く
(5)表示されたオリジナルフォームに内容を入力しエントリー(送信)する
(6)送信結果は管理画面に戻り「受信BOX」よりご確認ください。

受信BOXの確認方法につきましてはこちらをご確認ください
オリジナルフォームを曜日別、時間別、日付別で非表示にする
オリジナルフォームで指定の曜日、時間、日付を設定した場合、
上記のようなポップアップを出してアクセスできないようにします。

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

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


サンプルファイルの545~603行目を対象フォームへコピペしてください。


<script>
	//非表示にする時間を指定
	function Settoday() {
		var ck1 = false;
		var ck2 = false;
		var today = new Date(); //今日の日付
		var dayOfWeek = today.getDay(); //今日の曜日取得
		var y = today.getFullYear();
		var m = ('00' + (today.getMonth() + 1)).slice(-2);
		var d = ('00' + today.getDate()).slice(-2);
		var formatday = `${y}-${m}-${d}`; //今日の年月日を取得
		var hour = today.getHours(); //今の時間取得
		var msg = '只今メンテナンス中となります。\n営業時間内にお問い合わせください。';

		//1.曜日の指定
		var specifydayOfWeek = [0, 6]; //★曜日を指定 0→日,1→月,2→火,3→水,4→木,5→金,6→土「,」でつなぐ
		specifydayOfWeek.forEach(function (e) {
			if (e == dayOfWeek) {
				ck1 = true;
				alert(msg);
				liff.closeWindow();
			}
		});

		if (!ck1) {
			//2.祝日対応
			var url = 'https://holidays-jp.github.io/api/v1/date.json';
			fetch(url)
				.then(response => response.json())
				.then(data => {
					Object.keys(data).forEach(function (key) {
						if (key == formatday) {
							ck2 = true;
							alert(msg);
							liff.closeWindow();
						}
					});
				});

			//3.日付指定
			var specifyDay = ["2022-09-02", "2022-09-05", "2022-10-11"]; //★年月日を指定「,」でつなぐ
			specifyDay.forEach(function (e) {
				if (e == formatday) {
					ck2 = true;
					alert(msg);
					liff.closeWindow();
				}
			});
		}

		if (!ck2) {
			//4.時間の指定
			if (hour >= 0 && hour <= 9 || hour >= 17 && hour <= 23) { //★時間を指定(0:00~10:00、17:00~24:00まで非表示)
				alert(msg);
				liff.closeWindow();
			}
		}
	}
	Settoday();
</script>

(1)曜日別の非表示指定
559行目で非表示にしたい曜日を下記数字で指定
複数の場合は「,」でつなぐ
日→0
月→1
火→2
水→3
木→4
金→5
土→6
下記[0 ,6]の場合は、土日が非表示になります。

(2)日付別の非表示指定
584行目に非表示にしたい日付を下記フォーマットで指定
複数の場合は「,」でつなぐ
例)2022年9月10日 → "2022-09-10"

(3)時間帯別の非表示指定
596行目に非表示にしたい時間帯を指定
下記の場合は、0:00~10:00、17:00~24:00までが非表示になります
(※10:00~17:00は表示)

(4)メッセージテキストの変更
556行目のテキストを変更
改行は「\n」としてください。
オリジナルフォームで取得した顧客名をメッセージに使用できるか?

オリジナルフォームで取得した顧客名・電話番号・メールアドレスなどをメッセージに使用することはできません。
※1:1トーク、ステップメッセージ、一斉配信メッセージ、応答メッセージなど全メッセージで使用できません

LINE名のみ一部メッセージで使用可能です。
LINE名の差し込みができるメッセージはこちら>

フォーム離脱時にタグを付与する方法
フォーム離脱時にタグを付与する方法になります。
オリジナルフォームの編集が必要となりますので

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

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



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

フォームを閉じるときは「liffclose」をcallしてください。
例:liffclose();


【設定方法の詳細】

(1)「AddTag()」「AddTagProc()」「liffclose()」関数についてはbody終了タグ上部にまとめて記述しておく
※記述がない場合はコピペしてください。
	<!-- 削除禁止 -->
	<script>
		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>
	<!-- 削除禁止 -->

↓

(2)付与されるタグを格納するinputを設置
<!-- 削除禁止 --><input type="hidden" id="addtag"><!-- 削除禁止 -->

↓

(3)離脱時(設問選択時)に設定した関数3つをcall
※タグコードは実際のものに置き換える
	<script>
	$(function () {
		$('.q :radio').on('change', function () {
			if ($('.q :radio:checked').val() == '継続する') {
				AddTag('タグコード');//タグ設定
				AddTagProc();//タグ送信
				liffclose();//LIFF閉じる
			}
		});
	});
	</script>

↓

(4)記述が終わりましたら、付与したタグの動作確認を行ってください。
付与したタグの動作確認方法>

【オリジナルフォーム】ボタンをランダムで表示させる方法
■目的
ボタンの配置による選択項目の偏りをなくすために、毎回ランダムにボタンを表示させています。
回答に偏りがある場合に、より正確に回答結果を得ることができます。


■セット所要時間
10分


■セットの流れ
下記のサンプルページをもとに説明します。
フォームサンプルページ> 
フォームサンプルページダウンロード> 
※ソースコード確認方法 
windows:Ctrl + U  
mac  :option + command + U 


編集ファイル:index.html

(1)htmlの質問部分のにからのulを設置
<ul id="cancel_reason_btn" class="col2"></ul>
(2)ボタンとランダム表示させるJavascriptを記述
//シャッフル
const shuffleArray = (array) => {
	const cloneArray = [...array]

	for (let i = cloneArray.length - 1; i >= 0; i--) {
	let rand = Math.floor(Math.random() * (i + 1))
	// 配列の要素の順番を入れ替える
	let tmpStorage = cloneArray[i]
	cloneArray[i] = cloneArray[rand]
	cloneArray[rand] = tmpStorage
	}
	return cloneArray
}

//解約理由ボタンの配列
let arr = [
	'<li><label><input type="radio" name="col_6" class="validate[required]" value="効果を感じない" data-prompt-position="topLeft"><span>効果を感じない</span></label></li>',
	'<li><label><input type="radio" name="col_6" class="validate[required]" value="商品が余っている" data-prompt-position="topLeft"><span>商品が余っている</span></label></li>',
	'<li><label><input type="radio" name="col_6" class="validate[required]" value="価格が高い" data-prompt-position="topLeft"><span>価格が高い</span></label></li>',
	'<li><label><input type="radio" name="col_6" class="validate[required]" value="他社商品へ変更" data-prompt-position="topLeft"><span>他社商品へ変更</span></label></li>',
	'<li><label><input type="radio" name="col_6" class="validate[required]" value="お試しのみ" data-prompt-position="topLeft"><span>お試しのみ</span></label></li>',
	'<li><label><input type="radio" name="col_6" class="validate[required]" value="改善された" data-prompt-position="topLeft"><span>改善された</span></label></li>',
	'<li><label><input type="radio" name="col_6" class="validate[required]" value="対応がよくない" data-prompt-position="topLeft"><span>対応がよくない</span></label></li>',
	'<li><label><input type="radio" name="col_6" class="validate[required]" value="その他" data-prompt-position="topLeft"><span>その他</span></label></li>',
	];
cloneArr = shuffleArray(arr);

// innerHTMLを使用して表示
let cancelReasonBtn = document.getElementById("cancel_reason_btn");
cancelReasonBtn.innerHTML = cloneArr.join('');


ガイドの内容はあくまでもサンプルになります。  そのまま使用できない場合は対応するフォームにあわせて編集をお願いします。
   
またチャットワークへの通知設定の設定代行も行っております。
ご希望の場合は下記設定代行バナー、もしくはお問い合わせLINE、チャットワークよりご依頼をお願いします。
(目安)1設定:10,000円(税別)
LIFFオリジナルフォームの回答したユーザーをステップメッセージから除外する方法

▼手順
①オリジナルフォームで、送信ボタンを押したらタグを付与する。
 ┗設定方法はこちら>

②ステップメッセージの絞り込みで「①」のタグを除外タグとして設定。
 ┗ステップメッセージの作成方法はこちら>

【オリジナルフォーム】入力制限をなくす方法
■目的
オリジナルフォームの入力制限(必須入力)をなくす方法の説明になります。

入力制限については、「jQuery-Validation-Engine」というプラグインを入れています。
公式サイトはこちら>

■セット所要時間
3分

■セットの流れ
入力フォームの「input」タグについている「class="validate[required]"」を削除する。

フォームの編集方法はこちら>


またその他の入力制限を行いたい場合は、
「jQuery-Validation-Engine」を検索いただくと日本語の説明サイトも複数ありますので、そちらを参考に設定をお願いします。


ガイドの内容はあくまでもサンプルになります。  そのまま使用できない場合は対応するフォームにあわせての編集をお願いします。   表示設定が正常にできない場合、ソースチェックの有償サポートも行っております。  ご希望の場合は設定代行バナー、もしくはお問い合わせLINE、チャットワークよりご依頼をお願いします。
オリジナルフォームの完了ページを閉じたときに白紙ページが残る場合の対処法
■目的
オリジナルフォームの完了ページを閉じたときに白紙ページが残ってしまうときの対処方法です。
ケースとしては短縮URLでLIFF-URLを使用した際などになります。

■セット所要時間
10分

■セットの流れ
オリジナルフォームを編集します。
編集方法に関してはこちら>


(1)友だち登録URLをコピーします
友だち登録URLの確認方法はこちら>


(2)complete.htmlの編集
完了ページには概ね閉じるボタンがあると思いますのでそちらを編集します。
ない場合は新たに作成してください。

閉じるボタンのaタグにonclickイベントがある場合は削除します。
そしてhref属性を追加し、先ほどコピペした友だち登録URLをセットしてください。

(3)
ファイル編集後、閉じるボタンを押してトーク画面が表示されるか確認をして下さい。



ガイドの内容はあくまでもサンプルになります。  そのまま使用できない場合は対応するフォームにあわせての編集をお願いします。   表示設定が正常にできない場合、ソースチェックの有償サポートも行っております。  ご希望の場合は設定代行バナー、もしくはお問い合わせLINE、チャットワークよりご依頼をお願いします。
オリジナルフォーム切り替え中の送信について
ユーザーがオリジナルフォームの入力中に、管理画面からフォームの内容が更新された場合、
入力中のフォームは更新前の内容で送信されます。