回答登録(demon)

Last-modified: 2019-10-07 (月) 15:45:42

基本操作

何も指定せず「好き」と登録した場合、「好きな食べ物は?」「好きじゃない」等
「好き」が含まれる言葉全てに反応してしまう。
これはデフォルトのキーワード設定の「一致」項目が「あいまい」になっているからで、
回避するにはこの設定を「絶対」にする必要がある。
絶対にすると、登録したキーワードと話した言葉が完全に一致しない限りヒットしなくなるのと
ヒットの優先度が高くなる。

トップページを作る

キーワード欄を「toppage」にして、普通の回答と同じように登録。

RA(登録されていない言葉を話された時の回答)を作る

キーワード欄を空欄にして、普通の回答と同じように登録。

ランダムで複数の回答をヒットさせる

全く同じキーワードで複数登録すると勝手にランダムになる。

ユーザーの名前を覚える・呼ぶ

unnamed (16).jpg

1.まず、設定から名前の変数を登録する。
変数名
何でもいいけど今回は人の名前として使うため「name」にした。
表示させる時本文でも使う文字列。

初期値
ユーザーが何も登録していない状態の時どう表示させるか。
○○に設定している所が多いが、ここでは未登録でも違和感がないように「あなた」にした。

コメント
変数についてのメモ的なもの。
変数名さえ分かりやすくしていれば書かなくてもOK

以上を書いて追加を押す。


unnamed (14).jpg

2.回答ページに移動して、名前を尋ねるワードを登録する。
ここでは特に変数の設定は必要ない。


unnamed (15).jpg

3.2のキーワードをリファラにしたRAを作る

変数フォームに

if/referer/=//名前覚えて
set/name/=/user_text/

もしくは変数タブからそのように設定する。
キーワード欄は空にすること。
これで変数「name」に話された名前が入る。

ヒットの幅を広げる

キーワード欄に以下の特殊記号を入れると、ある程度の言葉のゆれに対応できる。

話しかけられた言葉ABC
●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△△で設定するとどちらかが合致していなくても片方が合致していればヒット

時間を限定する

特定の月・日・曜日・時間、またはその範囲を指定できる。


unnamed.jpg
ボタンか変数フォーム実際にヒットする時間
1if/h/=//505:00~05:59
2if/h/≠//505:00~05:59以外
3if/time_range/=//2200-2359
else if/time_range/=//0000-0300
22:00~翌03:00
4if/time_range/=//0825-103008:25-10:30
5if/w/=//1-5月曜日~金曜日
6if/w/=//1
else if/w/=//3
月曜日と水曜日
7if/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

リファラ(直前に何を話されたかで限定する)

例)

リファラなし「好き」にリファラ「遊ぼう」を設定
キーワードそれに対する回答キーワードそれに対する回答
遊ぼうじゃあサッカーしよう。サッカーは好き?遊ぼうじゃあサッカーしよう。サッカーは好き?
好きありがとう。好きよし、じゃあサッカーに決定!
  • 左は自分の事を好きだと言われた前提で登録したワードがヒットしてしまい、とんちんかんな会話で終わっているが、
    右は自然に話が続いており、サッカーを好きという事に対しての回答ができている。
    この区別をする変数が「リファラ」

設定


unnamed (1).jpg

キーワード欄

好き

ボタンで設定するか、変数フォームに

if/referer/=//遊ぼう
  • …おおよそ等しい
    任意の言葉欄に%%や**、[[]]も使える。
    広くヒットさせたい時に使う。
  • …まったく等しい
    **が使えない。
    リファラ元を限定したい時に使う。

別モード

一つのキーワードがスイッチ代わりとなり、ヒットする事でモードがすぐに切り替わる


unnamed (7).jpg

1.まず、設定から別モード用の変数を作る。
変数名とコメントは何でもよく初期値は空欄でも良いが、何か入れる場合数字以外の文字にする。
今回変数名は「switch」で初期値は空欄にした。


unnamed (9).jpg

2.登録ページに戻って、1の変数に特定の言葉が入っている時だけヒットするワードを作っていく↓


unnamed (4).jpg

3.スイッチをONにするワードを作る。
ボタンで設定するか、変数フォームに

set/switch/=//ON

このワードが話されると、ユーザーの変数「switch」に「ON」が入る。


unnamed (2).jpg

4.ONの時のワードを作る。

if/switch/=//ON

このワードは「switch」に「ON」が入っている時だけヒットする。


unnamed (3).jpg

5.スイッチをOFFにするワードを作る。
 今回は初期値が空欄のなので、

set/switch/=//

 任意の言葉欄を初期値と同じにすればオフにできる。
 今回は代入する文字を「ON」にしたが、他の好きな言葉でもOK

好感度

いくつかのキーワードがヒットするごとに変数に任意の数を加算し、その数ごとにヒットさせる回答を分ける。


unnamed (8).jpg

1.まず、設定から好感度用の変数を作る。
変数名とコメントは何でもいいが、初期値は0にする
今回変数名は「like」にした


unnamed (9).jpg

2.登録ページに戻って、加算するワードと特定の好感度の時にヒットするワードを作る。


unnamed (5).jpg

3.好感度が上がるワードを作る
ボタンで設定するか、変数フォームに

set/like/+=//10

このワードが話しかけられると好感度が10加算される。
また、+=を-=に変えると逆に下がるワードになる。


like8.jpg

4.一定以上の好感度でヒットするワードを作る

if/like/≧//100

このワードは好感度が100以上の時のみヒットする。


unnamed (7)_0.jpg

5.好感度をリセットするワードを作る

set/like/=//0

式をただの=にすると、とりあえず書かれた数字にできる。

応用編

リアルタイムの時間や日付を表示

時間の変数も他の変数と同じように<[変数名]>で表すが、中身は空なため本文に書いただけでは何も表示されない。
そこで、setでそれぞれに同じ単位を代入する。

unnamed (9)_0.jpg

unnamed (10).jpg

変数フォームかボタンで

set/m/=/m/
set/d/=/d/
set/h/=/h/
set/min/=/min/

しかし、流動するものを入れているからか?この中身は保存されないので、表示させる時にいちいちsetし直さなくてはならない。
それが嫌な場合はsetだけをしたキーワードと本文空、クラスター0以外のワードを作成し、ステルスで毎回他のワードにくっついて来てもらうしかない。
また、曜日も数字で表されているため、月・金のような表示はできない。

同じ文字列を常に表示

unnamed (1)_0.jpg

クラスターを0以外に設定してキーワード部分を空欄にし、本文か変数欄に常駐させたい内容を書く。
何を話しかけても回答の上か下に常に表示される事になるが、TOPには表示されない。

◯◯◯
<table width="100%"><tr><td align="center" bgcolor="#カラーコード">△△△</td></tr></table>

変数でユーザーNGを行う

元々オートNGや機種NGは備わっているが、変数でも振り分けたい場合
unnamed (6)_1.jpg
1.まず、専用の変数を作る。
初期値
A:一回でも不快な単語が話されたらRAにしたい場合→空欄
B:一回ではNGにせず減算式で、一定値を下回るとRAしか表示されないようにしたい場合→0
にする。
変数名とメモは何でも良い。今回は「ng」にした。


unnamed (7)_1.jpg

2.言われたくない言葉を思いつく限りキーワードに入れ、変数フォームに
A:

set/ng/=//ON

→該当のキーワードが話されると「ON」が入る

B:

set/ng/-=//10

→該当のキーワードが話されると好感度を-10

もしくはボタンでそのように設定する。


userNG.jpg

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画像を貼る[[画像名]]画像アップロードページから取得可能

タグ

スマホ版は登録ウィンドウ一番下の「+オプション」の中にある。
ワードを検索用にタグ付けして管理しやすくする機能。

クラスター

unnamed (4)_0.jpg

  • 複数の回答を同じキーワード内で順番に表示させる機能
  • デフォルトは0で、1にするとその前に、-1にするとその後ろに文章が表示される。
  • 画像、色設定は全て0の内容が反映されるがif変数は0だけに指定しても他のクラスタの中身は表示されてしまうため、注意が必要。
  • ワード検索でクラスタ有りだけを絞る事は現在できない。
    そのため上記のような誤爆を防ぐためにも、クラスタ付きはクラスタ付きで「タグ付け」しておくことをお勧めする。

うまくヒットしない時のチェック項目

・キーワードか変数の欄に不要なスペースが含まれている
・記号や英数字が登録では半角なのに話しかけた言葉が全角のため区別されている、またはその逆
・同名のキーワードが存在していて、そのキーワードの方が優先度が高い設定になっている
・話し手が変数の指定通りの状態でない
・広場側の不具合

【検証】変数の優先度

unnamed (6).jpg

sitting.jpg
優先度は「変数の優先度」設定によって変わる。
以下の検証は設定したif変数の条件が全て合致している前提で考える。

低-変数無し回答>変数有りRAの場合(デフォルト)

 










形態設定
Aif変数2つif変数1つ+絶対一致
Aif変数1つ絶対一致のみ
Aif変数なしset変数1つ
RAif変数1つ
RAif変数なし
  • if変数1つと絶対一致が同列になっている。
    同列だと、どちらかがランダムで表示される。

RA⇔A優先度入れ替わりのボーダー

基本的にif変数の設定数が1増えると優先度も1上がるという感じだが、RAは例外っぽい。
何個目で優先度が入れ替わるのか?

ARAA
if





100
110
170
180
190
  • RAにif変数を1~6つまでなら設定しても、登録されているワードを押しのけてヒットする事はないっぽい。
    ただし、7以上から変数なし回答と同等(ランダム)になったり、9ではif変数が2つ以上のワードがないと何を話しかけてもRAになるような状態。
    滅多にないと思うが、その際は注意。

高-変数有りRA>変数無し回答の場合

 










形態設定
Aif変数2つ
Aif変数1つ+絶対一致
Aif変数1つ
RAif変数1つ
A絶対一致のみ
Aif変数なしset変数1つ
RAif変数なし
  • 低ではif変数=絶対一致だったが、高では絶対一致よりif変数が優先される模様。

RA⇔A優先度入れ替わりのボーダー

ARAA
if





100
110
120
  • 低では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