question

alitaso345 avatar image
alitaso345 asked

Amazon.SearchQueryにて無効または空のスロット値が指定されたとき、別のインテントとして認識される

Amazon.SearchQueryを用いたときのエラーハンドリングに関して質問があります
## 現状の設定
スロットタイプを「Amazon.SearchQuery」に設定し、そのスロット(スロット名をTOPICと設定)を用いたサンプル発話をインテントに複数定義しています。

設定しているインテント名: RecordIntent
{ TOPIC } 夢をみた
{ TOPIC } 夢を記録

またそれとは別の用途で用いるインテントとサンプル発話を定義しています
設定しているインテント名: RecallIntent
古い履歴を教えて
昔の日記をチェックして

## 困っている問題
「アレクサ、<呼び出し名>を開いて、夢をみた」としたとき、TOPICスロットには空の値が入ることを期待していましたが、サンプル発話が異なる別のインテントと誤認識されてしまいます。

ユーザー: アレクサ、夢日記を開いて、夢を記録
実際のJSON入力(一部)
```
"request": { "type": "IntentRequest", "requestId": "xxx", "timestamp": "xxx", "locale": "ja-JP", "intent": { "name": "RecallIntent", "confirmationStatus": "NONE" } }
```

ユーザー: アレクサ、夢日記を開いて、夢を記録
期待するJSON入力(一部)
```
"request": { "type": "IntentRequest", "requestId": "xxx", "timestamp": "xxx", "locale": "ja-JP", "intent": { "name": "xxx", "confirmationStatus": "NONE", "slots": { "TOPIC": { "name": "TOPIC", "value": null, "confirmationStatus": "NONE" } } } }
```

## 質問
https://developer.amazon.com/ja/docs/custom-skills/handle-requests-sent-by-alexa.html#input-errors
1. 上記のドキュメントによれば、AMAZON.NUMBER、AMAZON.DATEといったスロットタイプは無効あるい空の値が入力されるとnullになるようですが、AMAZON.SearcyQueryはどのような値になる仕様でしょうか?
2. サンプル発話が異なるインテントに誤認識されてしまう原因として何が考えられるでしょうか?

以上、確認お願いいたします

alexa skills kitalexaintentsslots
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Tsuneki@Amazon avatar image
Tsuneki@Amazon answered

ご投稿ありがとうございます。

{ TOPIC }の前に何か単語を設定した場合はどうなりますでしょうか。

例: 私は{ TOPIC } 夢をみた

1 comment
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

@Tsuneki@Amazon

{ TOPIC }の前に何か単語を設定したサンプル発話を10個ほど追加しましたが、挙動は変わらず、意図しないインテントを呼び出してしまいました。
追加したサンプル発話と会話の様子を以下に示します。

## サンプル発話
"二度寝したら {TOPIC} 夢をみた", "お昼寝中に {TOPIC} 夢をみた", "この前は {TOPIC} 夢をみた", "昨日は {TOPIC} 夢をみた", "僕は {TOPIC} 夢をみた", "私は {TOPIC} 夢をみた", "昨晩は {TOPIC} ゆめをみた", "さっき {TOPIC} 夢をみた", "ついさっき {TOPIC} 夢見た", "いま {TOPIC} 夢をみた", "今日は {TOPIC} 夢みた",

## 会話の様子
ユーザー: アレクサ、夢日記を起動して、私は大食いする夢をみた
JSON入力
"request": { "type": "IntentRequest", "requestId": "amzn1.echo-api.request.b20862fa-eed6-4388-8380-9f249d570e6d", "timestamp": "2018-06-28T01:06:37Z", "locale": "ja-JP", "intent": { "name": "RecordIntent", "confirmationStatus": "NONE", "slots": { "TOPIC": { "name": "TOPIC", "value": "大食いする", "confirmationStatus": "NONE" } } } }

ユーザー: アレクサ、夢日記を起動して、夢をみた
JSON入力

"request": { "type": "IntentRequest", "requestId": "amzn1.echo-api.request.ffff5bd1-4adc-49f1-b648-8cb3cd802556", "timestamp": "2018-06-28T01:00:11Z", "locale": "ja-JP", "intent": { "name": "RecallIntent", "confirmationStatus": "NONE" } }

引き続き対応よろしくお願いいたします。

0 Likes 0 ·
alitaso345 avatar image
alitaso345 answered

@Tsuneki@Amazon

{ TOPIC }の前に何か単語を設定したサンプル発話を10個ほど追加しましたが、挙動は変わらず、意図しないインテントを呼び出してしまいました。
追加したサンプル発話と会話の様子を以下に示します。

## サンプル発話
"二度寝したら {TOPIC} 夢をみた", "お昼寝中に {TOPIC} 夢をみた", "この前は {TOPIC} 夢をみた", "昨日は {TOPIC} 夢をみた", "僕は {TOPIC} 夢をみた", "私は {TOPIC} 夢をみた", "昨晩は {TOPIC} ゆめをみた", "さっき {TOPIC} 夢をみた", "ついさっき {TOPIC} 夢見た", "いま {TOPIC} 夢をみた", "今日は {TOPIC} 夢みた",

## 会話の様子
ユーザー: アレクサ、夢日記を起動して、私は大食いする夢をみた
JSON入力
"request": { "type": "IntentRequest", "requestId": "amzn1.echo-api.request.b20862fa-eed6-4388-8380-9f249d570e6d", "timestamp": "2018-06-28T01:06:37Z", "locale": "ja-JP", "intent": { "name": "RecordIntent", "confirmationStatus": "NONE", "slots": { "TOPIC": { "name": "TOPIC", "value": "大食いする", "confirmationStatus": "NONE" } } } }

ユーザー: アレクサ、夢日記を起動して、夢をみた
JSON入力

"request": { "type": "IntentRequest", "requestId": "amzn1.echo-api.request.ffff5bd1-4adc-49f1-b648-8cb3cd802556", "timestamp": "2018-06-28T01:00:11Z", "locale": "ja-JP", "intent": { "name": "RecallIntent", "confirmationStatus": "NONE" } }

引き続き対応よろしくお願いいたします。

3 comments
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

お世話になります。

「アレクサ、夢日記を起動して、私は夢をみた」と発話した場合はどうなりますでしょうか?

0 Likes 0 ·

@Tsuneki@Amazon

ユーザー「アレクサ、夢日記を起動して、私は夢をみた」と発話した場合は以下のようなJSON入力となりました。


JSON入力
```
"request": { "type": "IntentRequest", "requestId": "amzn1.echo-api.request.939adcb5-37a8-4738-9cf9-e61ffce0fc31", "timestamp": "2018-07-03T13:08:55Z", "locale": "ja-JP", "intent": { "name": "RecordIntent", "confirmationStatus": "NONE", "slots": { "TOPIC": { "name": "TOPIC", "value": "私は", "confirmationStatus": "NONE" } } } }
```

RecordIntentの発話サンプルに

- 私は {TOPIC} 夢をみた
- {TOPIC} 夢をみた

の2つがあるのですがこのうち下のほうのサンプルを拾ったようです

0 Likes 0 ·

お世話になっております。

現状、空の値は入らないようです。しかし、今後仕様が変更する可能性もございます。

ほかのスロット同様、空の値が入った場合も適切に処理されるよう実装いただければと存じます。

0 Likes 0 ·