※JSONファイルを使ったシナリオの編集
JSON形式のファイルを編集し、インポートすることでシナリオを編集することもできます。
JSON形式のファイル自体は、当サービスが独自に考えたものではなく、一般的なものです。
このJSON形式のファイルを利用して、ローカル環境でもシナリオを編集できるようにしています。
■JSON形式のファイルについて
JSON形式のファイルは、まず「キー」と「値」をペアとして、「キー : 値」のように「:」を使って表現します。
"キー": "値"
ちなみに、「キー」と「値」とは、「名前 は “山田太郎”」、「性別 は “男”」といったように、「xxx は yyy」と決まっているものを表現するものです。
"名前": "山田太郎"
"性別": "男"
このキーと値のペアは複数指定することができます。
それらを括弧「{}」や「[]」で括ることでまとまりを表現します。
{
"キー1": "値1",
"キー2": "値2",
"キー3": "値3"
}
つまりJSON形式のファイルは、括弧「{}」や「[]」と「キー」と「値」の組み合わせで表現されます。
{
"キー1": "値1",
"キー2": "値2",
"キー3": [
{
"キー3_1": "値3_1",
"キー3_2": "値3_2"
}
]
}
■シナリオ編集用のJSONファイルについて
シナリオ編集用のJSONファイルは以下のようなイメージとなります。
「JSONファイル例」
{ "treeData": [ { "title": "いらっしゃいませ!\n\n本日はどのような商品をお探しでしょうか。", "subtitle": "メッセージ" }, { "title": "トップス", "subtitle": "ボタン", "children": [ { "title": "色は何色をお考えでしょうか?", "subtitle": "メッセージ" }, { "title": "ホワイト系", "subtitle": "ボタン", "children": [ { "title": "こちらの商品は如何でしょうか?\n\n[ホワイト系のトレーナー](https:\/\/example.com)\n", "subtitle": "メッセージ" }, { "title": "最初に戻る", "subtitle": "最初に戻るボタン" } ] }, { "title": "ブラック系", "subtitle": "ボタン" }, { "title": "その他", "subtitle": "ボタン" } }, { "title": "アウター", "subtitle": "ボタン" }, { "title": "パンツ", "subtitle": "ボタン" }, ...
このように、シナリオ編集用のJSONファイルの構造は決まったフォーマット(キーの内容が決まっている)でできています。
このフォーマットに沿ってファイルを作成する必要があります。
※テンプレートを読み込んでから保存し、その後インポートしてJSONの中身を実際に見てみることで、JSONファイルを使ったシナリオの作成方法が理解できます。
■フォーマットについて
JSONファイルは、必ず以下のキーで構成されている必要があります。
“treeData”
ファイルの先頭のキーは、必ず “treeData” である必要があります。
{ "treeData": [ ... ] }
“title”
メッセージやボタンの表示内容は、”title” に設定します。
"title": "トップス"
“subtitle”
各コントロールの内容は、”subtitle” に設定します。
内容はそれぞれ下記の通りで、決まっています。下記以外の値は無効です。- “メッセージ”
- “ボタン”
- “1つ前に戻るボタン”
- “最初に戻るボタン”
“チャットを開始するボタン”
"subtitle": "メッセージ" "subtitle": "ボタン" "subtitle": "1つ前に戻るボタン" "subtitle": "最初に戻るボタン" "subtitle": "チャットを開始するボタン"
例えば、”いらっしゃいませ!”というメッセージをJSON形式で表現すると以下のようになります。
{ "title": "いらっしゃいませ!", "subtitle": "メッセージ" }
例えば、”トップス”というボタンをJSON形式で表現すると以下のようになります。
{ "title": "トップス", "subtitle": "ボタン" }
“children”
各コントロールの下の階層にコントロールを設定するには、”children” の中に設定します。
{ "treeData": [ ... { "title": "トップス", "subtitle": "ボタン", "children": [ --> この中に設定 ...
例えば、”トップス”ボタンの下に、”色は何色をお考えでしょうか?”のメッセージを設定する場合、JSON形式で表現すると以下のようになります。
{ "treeData": [ ... { "title": "トップス", "subtitle": "ボタン", "children": [ { "title": "色は何色をお考えでしょうか?", "subtitle": "メッセージ" },
■基本的な作り方について
以上の内容から、シナリオの基本的な作り方としては、
まずメッセージコントロールを作成し、同じ階層に複数のボタンを設定、これらを1つのセットとします。
(例)”いらっしゃいませ〜”メッセージと商品選択ボタンを1セット
{
"title": "いらっしゃいませ!\n\n本日はどのような商品をお探しでしょうか。",
"subtitle": "メッセージ"
},
{
"title": "トップス",
"subtitle": "ボタン"
},
{
"title": "アウター",
"subtitle": "ボタン"
},
{
"title": "パンツ",
"subtitle": "ボタン"
}
次に、それらのボタンの下の階層に、またメッセージとボタンのセットを設定するといった形になります。
(例)”色は何色をお考えでしょうか?”メッセージと色選択ボタンを1セットとし、トップスのセットの下に設定する。
{
"title": "いらっしゃいませ!\n\n本日はどのような商品をお探しでしょうか。",
"subtitle": "メッセージ"
},
{
"title": "トップス",
"subtitle": "ボタン",
"children": [
{
"title": "色は何色をお考えでしょうか?",
"subtitle": "メッセージ"
},
{
"title": "ホワイト系",
"subtitle": "ボタン"
},
{
"title": "ブラック系",
"subtitle": "ボタン"
},
{
"title": "その他",
"subtitle": "ボタン"
}
},
{
"title": "アウター",
"subtitle": "ボタン"
},
{
"title": "パンツ",
"subtitle": "ボタン"
}
これらのセットを階層化して組み合わせることで、シナリオを編集します。