User State APIΒΆ
Each utterance in a Dialog state is generated by some User either Human or Bot.
The user.user_type
field stores reference to source of the utterance:
{"utterances": [{"user": {"user_type": "human"}}]}
A skill can update any fields in User (Human or Bot) objects. If a Skill updates a Human, the Human fields will be changed in this utterance accordingly. If a Skill updates a Bot, the Bot fields will be changed in the next (generated by the bot) utterance.
Each new dialog starts with a new Bot with all default fields. However, the Human object is updated permanently, and when a Human starts a new dialog, the object is retrieved from a database with all updated fields.
The history of all changes made by skills to users can be looked up at the list of possible responses in the
hypotheses
field of a human utterance:
{"utterances": [{"user": {"user_type": "human"}, "hypotheses": []}]}