概要
リクエストキーにsample[0-999]を含めることで、APIにカスタムルールを追加し、APIのレスポンスをカスタマイズすることができます。例えば、「テレビが欲しい」という入力に対して「method:shopping、param_query:テレビ」のように独自の応答ドメインや応答パラメータを含んだレスポンスを返却させることができるようになります。
仕様に登場する用語
用語 |
説明 |
入力テキスト |
APIに入力として与えるテキスト。例 : 今日の天気 |
応答ドメイン |
入力テキストの意図に相当する情報。APIの出力でいうmethod |
入力テキストパターン |
APIのレスポンスをカスタマイズしたい入力テキストのパターン。正規表現に近い記法が可能。詳細は後述 |
ルール |
APIへのリクエストに与える、応答ドメインと入力テキストパターンのペア |
仕様
共通
sample0, sample1, ..., sample999までの、最大1000個のルールを追加可能。
- 「sample0=<応答ドメイン>,<入力テキストパターン> 」のようにリクエストに含めると、<入力テキストパターン>に該当する入力テキストのAPIの応答ドメインを<応答ドメイン>に変更できる
- sample0, sample2, sample3のように順番がとんだ場合、とんだ数字以降のルールは無視される(この例だとsample2とsample3)
- 0未満、1000以上の数字のルールは無視される
- 数字が小さいルールが優先される
- 応答ドメインと入力テキストパターンは合計で1024byte未満でなければいけない
- ルールは正規化後の発話(var_intext_normalizedの値)に対して適用される
例えば、「sample0=hello,こんにちは」は「こんにちは」などにマッチし「method,hello」(と共通で返されるいくつかのパラメータ)を返す。
応答ドメイン
<応答ドメイン>には英数字のみを利用できる。
入力テキストパターン
入力テキストパターンには、正規表現に似た記法を使用できる。
記法 |
説明 |
例 |
備考 |
^ |
文字列の先頭にマッチする |
「^京都」は「京都」にはマッチするが「東京都」にはマッチしない |
|
$ |
文字列の末尾にマッチする |
「東京$」は「東京」にはマッチするが「東京都」にはマッチしない |
|
. |
任意の1文字にマッチする |
「こんにち.」は「こんにちは」や「こんにちわ」などにマッチする |
|
? |
直前の表現に作用し、直前の表現を0回か1回繰り返した表現にマッチする |
「青ヶ?島」は「青島」もしくは「青ヶ島」にマッチする |
? の直前は、. か通常の文字か { }のみ受け付けます |
* |
直前の表現に作用し、直前の表現を0回以上繰り返した表現にマッチする |
「すも*」は「す」や「すも」「すもももももも」などにマッチする |
*の直前は、.か通常の文字のみ受け付けます |
+ |
直前の表現に作用し、直前の表現を1回以上繰り返した表現にマッチする |
「すも+」は「すも」や「すもも」「すもももももも」などにマッチする |
+の直前は、.か通常の文字のみ受け付けます。 |
(?<name>value) |
入力テキスト中のvalueを、param_<name>=valueという形で応答に含める。※nameは小文字で記載してください。 |
「(?<place>大阪)」 は 「param_place=大阪」を出力する |
正規表現の(...)と異なる部分があるため、キャプチャ用途のみに用いてください。 |
{value1|value2|...|valueN} |
value1, value2, ..., valueNのいずれかにマッチする |
「{東京|京都}」は「東京」や「京都」にマッチする |
正規表現の{}と異なる部分がいくつかあります。
- {}の中には、. * などのメタ文字を入れられない
- {}を再帰的に書けない
- {value1|value2|}は動かない。代わりに{value1|value2}?とする
|
上記の記法は組み合わせて使える。例えば、
- 「(?<place>.+)の地図」は、「紀尾井町の地図」や「大阪の地図」などにマッチし、それぞれparam_place=紀尾井町、param_place=大阪 を返す
- 「(?<place>{大阪|京都})の地図」は、「大阪の地図」や「京都の地図」などにマッチし、それぞれparam_place=大阪、param_place=京都 を返す