基本操作
何も指定せず「好き」と登録した場合、「好きな食べ物は?」「好きじゃない」等
「好き」が含まれる言葉全てに反応してしまう。
これはデフォルトのキーワード設定の「一致」項目が「あいまい」になっているからで、
回避するにはこの設定を「絶対」にする必要がある。
絶対にすると、登録したキーワードと話した言葉が完全に一致しない限りヒットしなくなるのと
ヒットの優先度が高くなる。
トップページを作る
キーワード欄を「toppage」にして、普通の回答と同じように登録。
RA(登録されていない言葉を話された時の回答)を作る
キーワード欄を空欄にして、普通の回答と同じように登録。
ランダムで複数の回答をヒットさせる
全く同じキーワードで複数登録すると勝手にランダムになる。
ユーザーの名前を覚える・呼ぶ
1.まず、設定から名前の変数を登録する。
変数名
何でもいいけど今回は人の名前として使うため「name」にした。
表示させる時本文でも使う文字列。
初期値
ユーザーが何も登録していない状態の時どう表示させるか。
○○に設定している所が多いが、ここでは未登録でも違和感がないように「あなた」にした。
コメント
変数についてのメモ的なもの。
変数名さえ分かりやすくしていれば書かなくてもOK
以上を書いて追加を押す。
2.回答ページに移動して、名前を尋ねるワードを登録する。
ここでは特に変数の設定は必要ない。
3.2のキーワードをリファラにしたRAを作る
変数フォームに
if/referer/=//名前覚えて set/name/=/user_text/
もしくは変数タブからそのように設定する。
キーワード欄は空にすること。
これで変数「name」に話された名前が入る。
ヒットの幅を広げる
キーワード欄に以下の特殊記号を入れると、ある程度の言葉のゆれに対応できる。
話しかけられた言葉 | A | B | C | |
●and(*)…〇と△両方を含む ●or(%%)…〇と△のどちらかを含む ●group([[]])…グループ化 | りんごは好きですか? | 〇 | 〇 | 〇 |
林檎は好きですか? | × | × | 〇 | |
りんごは好きなの? | × | 〇 | 〇 | |
A…「りんごは好きですか?」 B…「りんご*好き*?」 C…「[[りんご%%林檎]]*[[好き%%すき]]*?」 | 林檎はすきなの? | × | × | 〇 |
りんごとかって好き? | × | 〇 | 〇 | |
林檎、好き? | × | × | 〇 |
活用する程広くヒットさせることができる。
ヒットの幅を狭める
絶対一致以外の方法でも、変数により特定の条件下でしかヒットしない回答が作れる。
設定はボタン入力でもフォームに直接入力してもできる。
変数の種類 | |
set | 代入。前鯖でのinsと考えて良い |
if | もし~なら |
else if | もしくは~なら(if以外のパターン) ifとセットで使う。 |
else | そうでなければ(ifでもelse ifでも当てはまらなかった時) ifやelse ifとセットで使う。 |
if○○、if△△で設定すると二つの条件に合致している時のみヒット
if〇〇、else if△△で設定するとどちらかが合致していなくても片方が合致していればヒット
時間を限定する
特定の月・日・曜日・時間、またはその範囲を指定できる。
ボタンか変数フォーム | 実際にヒットする時間 | |
1 | if/h/=//5 | 05:00~05:59 |
2 | if/h/≠//5 | 05:00~05:59以外 |
3 | if/time_range/=//2200-2359 else if/time_range/=//0000-0300 | 22:00~翌03:00 |
4 | if/time_range/=//0825-1030 | 08:25-10:30 |
5 | if/w/=//1-5 | 月曜日~金曜日 |
6 | if/w/=//1 else if/w/=//3 | 月曜日と水曜日 |
7 | if/y/=//2019 if/m/=//5 if/d/=//1 if/h/=//7 if/min/=//30 | 2019年5月1日の7時30分 |
- 何が年で曜日かとかは全部変数のタブから選択できるのでそこからやった方が早い。
- 曜日は1(月曜日)~7(日曜日)で指定。
- 5番のように時間以外の単位で範囲を指定したい場合も-が使えるが、
3や6番のように同単位で二つ以上指定をしたい場合は、単にifを増やしたりカンマで区切らず片方にelse ifを使う。 - 7番のように複数指定があっても指定する単位(月とか日の所)が被っていなかったらelseを使わなくてもOK
リファラ(直前に何を話されたかで限定する)
例)
リファラなし | 「好き」にリファラ「遊ぼう」を設定 | ||
キーワード | それに対する回答 | キーワード | それに対する回答 |
遊ぼう | じゃあサッカーしよう。サッカーは好き? | 遊ぼう | じゃあサッカーしよう。サッカーは好き? |
好き | ありがとう。 | 好き | よし、じゃあサッカーに決定! |
- 左は自分の事を好きだと言われた前提で登録したワードがヒットしてしまい、とんちんかんな会話で終わっているが、
右は自然に話が続いており、サッカーを好きという事に対しての回答ができている。
この区別をする変数が「リファラ」
設定
キーワード欄
好き
ボタンで設定するか、変数フォームに
if/referer/=//遊ぼう
- ≒…おおよそ等しい
任意の言葉欄に%%や**、[[]]も使える。
広くヒットさせたい時に使う。 - =…まったく等しい
**が使えない。
リファラ元を限定したい時に使う。
別モード
一つのキーワードがスイッチ代わりとなり、ヒットする事でモードがすぐに切り替わる
1.まず、設定から別モード用の変数を作る。
変数名とコメントは何でもよく初期値は空欄でも良いが、何か入れる場合数字以外の文字にする。
今回変数名は「switch」で初期値は空欄にした。
2.登録ページに戻って、1の変数に特定の言葉が入っている時だけヒットするワードを作っていく↓
3.スイッチをONにするワードを作る。
ボタンで設定するか、変数フォームに
set/switch/=//ON
このワードが話されると、ユーザーの変数「switch」に「ON」が入る。
4.ONの時のワードを作る。
if/switch/=//ON
このワードは「switch」に「ON」が入っている時だけヒットする。
5.スイッチをOFFにするワードを作る。
今回は初期値が空欄のなので、
set/switch/=//
任意の言葉欄を初期値と同じにすればオフにできる。
今回は代入する文字を「ON」にしたが、他の好きな言葉でもOK
好感度
いくつかのキーワードがヒットするごとに変数に任意の数を加算し、その数ごとにヒットさせる回答を分ける。
1.まず、設定から好感度用の変数を作る。
変数名とコメントは何でもいいが、初期値は0にする。
今回変数名は「like」にした
2.登録ページに戻って、加算するワードと特定の好感度の時にヒットするワードを作る。
3.好感度が上がるワードを作る
ボタンで設定するか、変数フォームに
set/like/+=//10
このワードが話しかけられると好感度が10加算される。
また、+=を-=に変えると逆に下がるワードになる。
4.一定以上の好感度でヒットするワードを作る
if/like/≧//100
このワードは好感度が100以上の時のみヒットする。
5.好感度をリセットするワードを作る
set/like/=//0
式をただの=にすると、とりあえず書かれた数字にできる。
応用編
リアルタイムの時間や日付を表示
時間の変数も他の変数と同じように<[変数名]>で表すが、中身は空なため本文に書いただけでは何も表示されない。
そこで、setでそれぞれに同じ単位を代入する。
変数フォームかボタンで
set/m/=/m/ set/d/=/d/ set/h/=/h/ set/min/=/min/
しかし、流動するものを入れているからか?この中身は保存されないので、表示させる時にいちいちsetし直さなくてはならない。
それが嫌な場合はsetだけをしたキーワードと本文空、クラスター0以外のワードを作成し、ステルスで毎回他のワードにくっついて来てもらうしかない。
また、曜日も数字で表されているため、月・金のような表示はできない。
同じ文字列を常に表示
クラスターを0以外に設定してキーワード部分を空欄にし、本文か変数欄に常駐させたい内容を書く。
何を話しかけても回答の上か下に常に表示される事になるが、TOPには表示されない。
◯◯◯ <table width="100%"><tr><td align="center" bgcolor="#カラーコード">△△△</td></tr></table>
変数でユーザーNGを行う
元々オートNGや機種NGは備わっているが、変数でも振り分けたい場合
1.まず、専用の変数を作る。
初期値
A:一回でも不快な単語が話されたらRAにしたい場合→空欄
B:一回ではNGにせず減算式で、一定値を下回るとRAしか表示されないようにしたい場合→0
にする。
変数名とメモは何でも良い。今回は「ng」にした。
2.言われたくない言葉を思いつく限りキーワードに入れ、変数フォームに
A:
set/ng/=//ON
→該当のキーワードが話されると「ON」が入る
B:
set/ng/-=//10
→該当のキーワードが話されると好感度を-10
もしくはボタンでそのように設定する。
3.そのユーザー専用のRAを作る。
キーワードは空欄で、変数欄に
A:
if/ng/=//ON
→「ON」が入っていると発動
B:
if/ng/≦//-50
→好感度が-50を下回ると発動
また、優先度を上げたいのでそれ以外にもできるだけ多く、誰でも絶対に一致する条件でifを設定する。
(画像=2000、2001、2002年でない場合)
いくつ設定する必要があるかは他の回答に設定されている変数の数により変わってくるので
詳しくは【検証】変数の優先度を参照
更に、このキーワードの設定を「記録しない」にする事で、この指定に当てはまるユーザーからのログは一切記録されなくなる。
- 登録ワードには反応するが未登録ワードは記録しないようにする場合は、3で作ったワードのクラスターを0以外の数字にする。
※他にクラスター付きのワードがある場合はそのワードだけ表示されてしまうので、全てのクラスター側にもif指定
A:
if/ng/≠//ON
→ngにONが入っていない場合に表示
B:
if/ng/≧//-50
→ngが-50以上の場合に表示
という風に変えておく。
便利な機能
独自タグ
通常HTMLやCSSを使う要素に対しても広場のみで使える独自タグが存在し、回答入力欄にあるボタンを押すだけで入力ができる。
HTML/CSSでの表記 | 役割 | 独自タグ | ボタン名/場所 |
a | リンク | <<キーワード>> | リンク |
a | リンク名を指定してリンク | <<リンク名>キーワード>> | |
font color | 文字の色を変える | <(文字|#カラーコード)> | 文字装飾 |
var(?) | 変数の中身を表示 | <[変数名]> | 変数 |
img src | 画像を貼る | [[画像名]] | 画像アップロードページから取得可能 |
タグ
スマホ版は登録ウィンドウ一番下の「+オプション」の中にある。
ワードを検索用にタグ付けして管理しやすくする機能。
クラスター
- 複数の回答を同じキーワード内で順番に表示させる機能
- デフォルトは0で、1にするとその前に、-1にするとその後ろに文章が表示される。
- 画像、色設定は全て0の内容が反映されるがif変数は0だけに指定しても他のクラスタの中身は表示されてしまうため、注意が必要。
- ワード検索でクラスタ有りだけを絞る事は現在できない。
そのため上記のような誤爆を防ぐためにも、クラスタ付きはクラスタ付きで「タグ付け」しておくことをお勧めする。
うまくヒットしない時のチェック項目
・キーワードか変数の欄に不要なスペースが含まれている
・記号や英数字が登録では半角なのに話しかけた言葉が全角のため区別されている、またはその逆
・同名のキーワードが存在していて、そのキーワードの方が優先度が高い設定になっている
・話し手が変数の指定通りの状態でない
・広場側の不具合
【検証】変数の優先度
優先度は「変数の優先度」設定によって変わる。
以下の検証は設定したif変数の条件が全て合致している前提で考える。
低-変数無し回答>変数有りRAの場合(デフォルト)
↑ 優 先 度 高 ・ 優 先 度 低 ↓ | 形態 | 設定 | |
A | if変数2つ | if変数1つ+絶対一致 | |
A | if変数1つ | 絶対一致のみ | |
A | if変数なし | set変数1つ | |
RA | if変数1つ | ||
RA | if変数なし |
- if変数1つと絶対一致が同列になっている。
同列だと、どちらかがランダムで表示される。
RA⇔A優先度入れ替わりのボーダー
基本的にif変数の設定数が1増えると優先度も1上がるという感じだが、RAは例外っぽい。
何個目で優先度が入れ替わるのか?
A | RA | A | |||
if 変 数 の 設 定 数 | 1 | > | 0 | < | 0 |
1 | > | 1 | < | 0 | |
1 | > | 7 | = | 0 | |
1 | = | 8 | > | 0 | |
1 | < | 9 | > | 0 |
- RAにif変数を1~6つまでなら設定しても、登録されているワードを押しのけてヒットする事はないっぽい。
ただし、7以上から変数なし回答と同等(ランダム)になったり、9ではif変数が2つ以上のワードがないと何を話しかけてもRAになるような状態。
滅多にないと思うが、その際は注意。
高-変数有りRA>変数無し回答の場合
↑ 優 先 度 高 ・ 優 先 度 低 ↓ | 形態 | 設定 | |
A | if変数2つ | ||
A | if変数1つ+絶対一致 | ||
A | if変数1つ | ||
RA | if変数1つ | ||
A | 絶対一致のみ | ||
A | if変数なし | set変数1つ | |
RA | if変数なし |
- 低ではif変数=絶対一致だったが、高では絶対一致よりif変数が優先される模様。
RA⇔A優先度入れ替わりのボーダー
A | RA | A | |||
if 変 数 の 設 定 数 | 1 | > | 0 | < | 0 |
1 | > | 1 | > | 0 | |
1 | < | 2 | > | 0 |
- 低ではRAの優先度がかなり低かったが、高ではif変数の数がAより1つ上回っただけでRAが出る模様。
結果…
- 優先度に影響する変数はifのみで、set、else ifはこれに影響しない。
- RAへの絶対一致は無意味。
- 設定数が同じ限り、時間指定・リファラ・変数指定等全てのif変数は同列。
- if変数を何個も設定していても実際に合致している指定が一つだと、他のif変数1の回答と同列になる。
- if指定の仕方が「≠」(そうでない場合)や範囲指定であったとしても、合致していれば優先度が+1される。
コメント
他の検証結果・間違いがあればご指摘お願いします。
- テスト -- 2019-05-27 (月) 23:50:02
- 準処 -- 2019-10-07 (月) 15:44:39
- すまないミスった -- 2019-10-07 (月) 15:45:42