手元で動作確認を行ってみました。ご指摘通り、以下のような変化がありました。
[従来の挙動]
- 未同意であれば、 `UpdatePermission` 要求時に、ユーザに同意を問う対話が自動的に行われる。同意後に、`actions_intent_PERMISSION` イベントが来て、その中に `PERMISSION: true` および `UPDATES_USER_ID` 値が含まれている。
- 同意済みであれば、`UpdatePermission` 要求時に、ユーザプロンプトは何も出ずに即 `actions_intent_PERMISSION` イベントが来て、その中には `PERMISSION: true` のみが入っていて `UPDATES_USER_ID` 値は含まれていない。
[現在の挙動]
- 同意済みかどうかに関わらず、 `UpdatePermission` 要求時に、ユーザに同意を問う対話が自動的に行われる。同意後に、`actions_intent_PERMISSION` イベントが来て、その中に `PERMISSION: true` および `UPDATES_USER_ID` 値が含まれている。
これが仕様通りかどうか、つまり期待した挙動の変更なのかどうかを Google に聞いてみます。
また、この都度通知をできればなくしたいなと思ってるのですが、回避策などご存知の方はいらっしゃいますでしょうか?
実は、毎回 `UpdatePermission` 要求を行う実装ではなく、「同意済みかどうかはアクションが判断し、必要な場合にのみ `UpdatePermission` 要求をするよう実装する」ことが従来から求められています。具体的には、一度同意されたことを示す情報を conv.user.storage に入れておく、という実装方式の例がドキュメントに記載されています。
つまり、回避策としては、同意された際にはそのことをどこかに保持しておいて、それを見て `UpdatePermission` 要求をする必要があるかどうかをアクション自身が判断する、という実装を行うことになるかと思います。
ご参考になれば幸いです。ではでは。
-Yoichiro