プロトコルとリクエスト処理¶
里々の satori.dll は、リクエストを受けるたびに次の順で処理します。
対応プロトコル¶
| プロトコル | 扱い |
|---|---|
| SHIORI/3.x | 標準 |
| SHIORI/2.x | Event を ID に読み替え、応答は SHIORI/3.0 形式(Sentence に読み替え) |
| SAORI/1.x | Argument0 を ID、Argument1… を Reference0… に読み替える。応答は Result と Value0… |
| MAKOTO/2.x | String を Reference0 として OnMakoto を実行する。応答は String |
| 上記以外 | 400 Bad Request |
GET Version には 200 OK を返します(SHIORI/2.x では ID Craftman Version を付けます)。
応答のステータス¶
| ステータス | 意味 |
|---|---|
| 200 OK | 応答の値を返す |
| 204 No Content | 何も返さない(喋る内容がない、対応するトークがない、$今回は喋らない、など) |
| 400 Bad Request | 未対応のプロトコル |
| 403 Forbidden | デバッグ機能を、ローカルでない呼び出しで使った |
| 500 Internal Server Error | それ以外 |
リクエストの ID による分岐¶
ID の内容で、次の順に処理されます。
OnDirectSaoriCall:()の中身として実行して 204 を返す(ローカルのみ、sync から使われる)。Onで始まる ID: 同名の単語群があれば(ID)として展開して 200 で返す。なければイベントの処理へ。versioncraftmancraftmanwname: 里々のバージョン・作者名・作者名(日本語)・名前を返す。.recommendsitesを含む ID /sakura.portalsites: ポータルやおすすめサイトの一覧を返す。- それ以外:
(ID)として展開して返す(文・単語群・変数・組み込み名が使える)。展開できなければ 204。ただしgetaistateは、統計を返す。
enable_log enable_debug ShioriEcho SatolistEcho は、デバッグ用の特別な ID です(ShioriEcho とデバッグ)。
NOTIFY の hwnd otherghostname capability、および $NOTIFYの自動保存 が有効なときの installed* などは、内部で保存されます(NOTIFY の保存)。
応答の値¶
Value ヘッダにスクリプトを入れます。次のものは応答のヘッダとして付けられます。
To・Reference0: 話しかけの相手(コミュニケート)BalloonOffset: $BalloonOffset0/1ErrorLevel/ErrorDescription: エラー通知(ベースウェアがcapabilityでresponse.errorlevelを通知したときだけ)Reference?返信ヘッダ「…」: $Value0 $返信ヘッダで設定したものCharset: リクエストのCharsetに合わせる
応答を返す直前に、中身のない応答は 204 になる整形が行われます。
ローカルとそれ以外(セキュリティ)¶
リクエストの SecurityLevel が local(大文字小文字を区別しない)のとき、フルの権限で実行します。それ以外(external を含む)では、一部の内蔵関数や OnDirectSaoriCall・デバッグ機能が使えません。
外部からのイベントの許可¶
$外部から実行可能なイベントの接頭辞 に、、 または , 区切りでイベント名の接頭辞を指定すると、SecurityLevel: external でもその接頭辞のイベントはローカルとして扱われます。大文字小文字は区別しません。全部 を指定するとすべてのイベントが対象になります。
ログの抑制¶
ログが大量に出る OnSurfaceChange OnSecondChange OnMinuteChange OnMouseMove OnTranslate は、200 以外のときはログを残しません。visible で終わる ID・menu. で始まる ID・.color. を含む ID は、ログを残しません。
リロード¶
$辞書リロード=実行 を実行すると、応答を返した直後にアンロードとロードをやり直します。