1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
package google.actions.sdk.v2.interactionmodel;
import "google/actions/sdk/v2/interactionmodel/event_handler.proto";
import "google/actions/sdk/v2/interactionmodel/type/class_reference.proto";
import "google/api/field_behavior.proto";
import "google/protobuf/struct.proto";
option go_package = "google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel;interactionmodel";
option java_multiple_files = true;
option java_outer_classname = "SlotProto";
option java_package = "com.google.actions.sdk.v2.interactionmodel";
// Configuration for a slot. Slots are single units of data that can be filled
// through natural language (ie. intent parameters), session parameters, and
// other sources.
message Slot {
// A single place where slot prompts are defined.
message PromptSettings {
// Prompt for the slot value itself. Example: "What size did you want?"
EventHandler initial_prompt = 1;
// Prompt to give when the user's input does not match the expected
// value type for the slot for the first time. Example: "Sorry, I
// didn't get that."
EventHandler no_match_prompt1 = 2;
// Prompt to give when the user's input does not match the expected
// value type for the slot for the second time. Example: "Sorry, I
// didn't get that."
EventHandler no_match_prompt2 = 3;
// Prompt to give when the user's input does not match the expected
// value type for the slot for the last time. Example: "Sorry, I
// didn't get that."
EventHandler no_match_final_prompt = 4;
// Prompt to give when the user does not provide an input for the first
// time. Example: "Sorry, I didn't get that."
EventHandler no_input_prompt1 = 5;
// Prompt to give when the user does not provide an input for the second
// time. Example: "Sorry, I didn't get that."
EventHandler no_input_prompt2 = 6;
// Prompt to give when the user does not provide an input for the last
// time. Example: "Sorry, I didn't get that."
EventHandler no_input_final_prompt = 7;
}
// Message describing the commit behavior associated with the slot after it
// has been successfully filled.
message CommitBehavior {
// The session parameter to write the slot value after it is filled. Note
// that nested paths are not currently supported. "$$" is used to write the
// slot value to a session parameter with same name as the slot.
// Eg: write_session_param = "fruit" corresponds to "$session.params.fruit".
// write_session_param = "ticket" corresponds to "$session.params.ticket".
string write_session_param = 1;
}
// Configuration to populate a default value for this slot.
message DefaultValue {
// Optional. The session parameter to be used to initialize the slot value, if it has
// a non-empty value. The type of the value must match the type of the slot.
// Note that nested paths are not currently supported.
// Eg: `session_param = "fruit"` corresponds to `$session.params.fruit`.
// `session_param = "ticket"` corresponds to `$session.params.ticket`.
string session_param = 1 [(google.api.field_behavior) = OPTIONAL];
// Optional. Constant default value for the slot. This will only be used if a value
// for this slot was not populated through the `session_param`. The
// type for this value must match the type of the slot.
google.protobuf.Value constant = 2 [(google.api.field_behavior) = OPTIONAL];
}
// Required. Name of the slot.
string name = 1 [(google.api.field_behavior) = REQUIRED];
// Required. Declares the data type of this slot.
google.actions.sdk.v2.interactionmodel.type.ClassReference type = 2 [(google.api.field_behavior) = REQUIRED];
// Optional. Indicates whether the slot is required to be filled before
// advancing. Required slots that are not filled will trigger a customizable
// prompt to the user.
bool required = 3 [(google.api.field_behavior) = OPTIONAL];
// Optional. Registers Prompts for different stages of slot filling.
PromptSettings prompt_settings = 4 [(google.api.field_behavior) = OPTIONAL];
// Optional. Commit behavior associated with the slot.
CommitBehavior commit_behavior = 5 [(google.api.field_behavior) = OPTIONAL];
// Optional. Additional configuration associated with the slot which is
// used for filling the slot. The format of the config is specific to the
// type of the slot. Resource references to user or session parameter can be
// added to this config. This config is needed for filling slots related to
// transactions and user engagement.
//
// Example:
// For a slot of type actions.type.CompletePurchaseValue, the following
// config proposes a digital good order with a reference to a client defined
// session parameter `userSelectedSkuId`:
//
// {
// "@type": "type.googleapis.com/
// google.actions.transactions.v3.CompletePurchaseValueSpec",
// "skuId": {
// "skuType": "SKU_TYPE_IN_APP",
// "id": "$session.params.userSelectedSkuId",
// "packageName": "com.example.company"
// }
// }
google.protobuf.Value config = 6 [(google.api.field_behavior) = OPTIONAL];
// Optional. Configuration to populate a default value for this slot.
DefaultValue default_value = 7 [(google.api.field_behavior) = OPTIONAL];
}
|