1 /**
2  * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
3  * SPDX-License-Identifier: Apache-2.0.
4  */
5 
6 #pragma once
7 #include <aws/lexv2-models/LexModelsV2_EXPORTS.h>
8 #include <aws/lexv2-models/model/SlotDefaultValueSpecification.h>
9 #include <aws/lexv2-models/model/SlotConstraint.h>
10 #include <aws/lexv2-models/model/PromptSpecification.h>
11 #include <aws/core/utils/memory/stl/AWSVector.h>
12 #include <aws/lexv2-models/model/WaitAndContinueSpecification.h>
13 #include <aws/lexv2-models/model/SampleUtterance.h>
14 #include <utility>
15 
16 namespace Aws
17 {
18 namespace Utils
19 {
20 namespace Json
21 {
22   class JsonValue;
23   class JsonView;
24 } // namespace Json
25 } // namespace Utils
26 namespace LexModelsV2
27 {
28 namespace Model
29 {
30 
31   /**
32    * <p>Settings that you can use for eliciting a slot value.</p><p><h3>See
33    * Also:</h3>   <a
34    * href="http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/SlotValueElicitationSetting">AWS
35    * API Reference</a></p>
36    */
37   class AWS_LEXMODELSV2_API SlotValueElicitationSetting
38   {
39   public:
40     SlotValueElicitationSetting();
41     SlotValueElicitationSetting(Aws::Utils::Json::JsonView jsonValue);
42     SlotValueElicitationSetting& operator=(Aws::Utils::Json::JsonView jsonValue);
43     Aws::Utils::Json::JsonValue Jsonize() const;
44 
45 
46     /**
47      * <p>A list of default values for a slot. Default values are used when Amazon Lex
48      * hasn't determined a value for a slot. You can specify default values from
49      * context variables, session attributes, and defined values.</p>
50      */
GetDefaultValueSpecification()51     inline const SlotDefaultValueSpecification& GetDefaultValueSpecification() const{ return m_defaultValueSpecification; }
52 
53     /**
54      * <p>A list of default values for a slot. Default values are used when Amazon Lex
55      * hasn't determined a value for a slot. You can specify default values from
56      * context variables, session attributes, and defined values.</p>
57      */
DefaultValueSpecificationHasBeenSet()58     inline bool DefaultValueSpecificationHasBeenSet() const { return m_defaultValueSpecificationHasBeenSet; }
59 
60     /**
61      * <p>A list of default values for a slot. Default values are used when Amazon Lex
62      * hasn't determined a value for a slot. You can specify default values from
63      * context variables, session attributes, and defined values.</p>
64      */
SetDefaultValueSpecification(const SlotDefaultValueSpecification & value)65     inline void SetDefaultValueSpecification(const SlotDefaultValueSpecification& value) { m_defaultValueSpecificationHasBeenSet = true; m_defaultValueSpecification = value; }
66 
67     /**
68      * <p>A list of default values for a slot. Default values are used when Amazon Lex
69      * hasn't determined a value for a slot. You can specify default values from
70      * context variables, session attributes, and defined values.</p>
71      */
SetDefaultValueSpecification(SlotDefaultValueSpecification && value)72     inline void SetDefaultValueSpecification(SlotDefaultValueSpecification&& value) { m_defaultValueSpecificationHasBeenSet = true; m_defaultValueSpecification = std::move(value); }
73 
74     /**
75      * <p>A list of default values for a slot. Default values are used when Amazon Lex
76      * hasn't determined a value for a slot. You can specify default values from
77      * context variables, session attributes, and defined values.</p>
78      */
WithDefaultValueSpecification(const SlotDefaultValueSpecification & value)79     inline SlotValueElicitationSetting& WithDefaultValueSpecification(const SlotDefaultValueSpecification& value) { SetDefaultValueSpecification(value); return *this;}
80 
81     /**
82      * <p>A list of default values for a slot. Default values are used when Amazon Lex
83      * hasn't determined a value for a slot. You can specify default values from
84      * context variables, session attributes, and defined values.</p>
85      */
WithDefaultValueSpecification(SlotDefaultValueSpecification && value)86     inline SlotValueElicitationSetting& WithDefaultValueSpecification(SlotDefaultValueSpecification&& value) { SetDefaultValueSpecification(std::move(value)); return *this;}
87 
88 
89     /**
90      * <p>Specifies whether the slot is required or optional.</p>
91      */
GetSlotConstraint()92     inline const SlotConstraint& GetSlotConstraint() const{ return m_slotConstraint; }
93 
94     /**
95      * <p>Specifies whether the slot is required or optional.</p>
96      */
SlotConstraintHasBeenSet()97     inline bool SlotConstraintHasBeenSet() const { return m_slotConstraintHasBeenSet; }
98 
99     /**
100      * <p>Specifies whether the slot is required or optional.</p>
101      */
SetSlotConstraint(const SlotConstraint & value)102     inline void SetSlotConstraint(const SlotConstraint& value) { m_slotConstraintHasBeenSet = true; m_slotConstraint = value; }
103 
104     /**
105      * <p>Specifies whether the slot is required or optional.</p>
106      */
SetSlotConstraint(SlotConstraint && value)107     inline void SetSlotConstraint(SlotConstraint&& value) { m_slotConstraintHasBeenSet = true; m_slotConstraint = std::move(value); }
108 
109     /**
110      * <p>Specifies whether the slot is required or optional.</p>
111      */
WithSlotConstraint(const SlotConstraint & value)112     inline SlotValueElicitationSetting& WithSlotConstraint(const SlotConstraint& value) { SetSlotConstraint(value); return *this;}
113 
114     /**
115      * <p>Specifies whether the slot is required or optional.</p>
116      */
WithSlotConstraint(SlotConstraint && value)117     inline SlotValueElicitationSetting& WithSlotConstraint(SlotConstraint&& value) { SetSlotConstraint(std::move(value)); return *this;}
118 
119 
120     /**
121      * <p>The prompt that Amazon Lex uses to elicit the slot value from the user.</p>
122      */
GetPromptSpecification()123     inline const PromptSpecification& GetPromptSpecification() const{ return m_promptSpecification; }
124 
125     /**
126      * <p>The prompt that Amazon Lex uses to elicit the slot value from the user.</p>
127      */
PromptSpecificationHasBeenSet()128     inline bool PromptSpecificationHasBeenSet() const { return m_promptSpecificationHasBeenSet; }
129 
130     /**
131      * <p>The prompt that Amazon Lex uses to elicit the slot value from the user.</p>
132      */
SetPromptSpecification(const PromptSpecification & value)133     inline void SetPromptSpecification(const PromptSpecification& value) { m_promptSpecificationHasBeenSet = true; m_promptSpecification = value; }
134 
135     /**
136      * <p>The prompt that Amazon Lex uses to elicit the slot value from the user.</p>
137      */
SetPromptSpecification(PromptSpecification && value)138     inline void SetPromptSpecification(PromptSpecification&& value) { m_promptSpecificationHasBeenSet = true; m_promptSpecification = std::move(value); }
139 
140     /**
141      * <p>The prompt that Amazon Lex uses to elicit the slot value from the user.</p>
142      */
WithPromptSpecification(const PromptSpecification & value)143     inline SlotValueElicitationSetting& WithPromptSpecification(const PromptSpecification& value) { SetPromptSpecification(value); return *this;}
144 
145     /**
146      * <p>The prompt that Amazon Lex uses to elicit the slot value from the user.</p>
147      */
WithPromptSpecification(PromptSpecification && value)148     inline SlotValueElicitationSetting& WithPromptSpecification(PromptSpecification&& value) { SetPromptSpecification(std::move(value)); return *this;}
149 
150 
151     /**
152      * <p>If you know a specific pattern that users might respond to an Amazon Lex
153      * request for a slot value, you can provide those utterances to improve accuracy.
154      * This is optional. In most cases, Amazon Lex is capable of understanding user
155      * utterances.</p>
156      */
GetSampleUtterances()157     inline const Aws::Vector<SampleUtterance>& GetSampleUtterances() const{ return m_sampleUtterances; }
158 
159     /**
160      * <p>If you know a specific pattern that users might respond to an Amazon Lex
161      * request for a slot value, you can provide those utterances to improve accuracy.
162      * This is optional. In most cases, Amazon Lex is capable of understanding user
163      * utterances.</p>
164      */
SampleUtterancesHasBeenSet()165     inline bool SampleUtterancesHasBeenSet() const { return m_sampleUtterancesHasBeenSet; }
166 
167     /**
168      * <p>If you know a specific pattern that users might respond to an Amazon Lex
169      * request for a slot value, you can provide those utterances to improve accuracy.
170      * This is optional. In most cases, Amazon Lex is capable of understanding user
171      * utterances.</p>
172      */
SetSampleUtterances(const Aws::Vector<SampleUtterance> & value)173     inline void SetSampleUtterances(const Aws::Vector<SampleUtterance>& value) { m_sampleUtterancesHasBeenSet = true; m_sampleUtterances = value; }
174 
175     /**
176      * <p>If you know a specific pattern that users might respond to an Amazon Lex
177      * request for a slot value, you can provide those utterances to improve accuracy.
178      * This is optional. In most cases, Amazon Lex is capable of understanding user
179      * utterances.</p>
180      */
SetSampleUtterances(Aws::Vector<SampleUtterance> && value)181     inline void SetSampleUtterances(Aws::Vector<SampleUtterance>&& value) { m_sampleUtterancesHasBeenSet = true; m_sampleUtterances = std::move(value); }
182 
183     /**
184      * <p>If you know a specific pattern that users might respond to an Amazon Lex
185      * request for a slot value, you can provide those utterances to improve accuracy.
186      * This is optional. In most cases, Amazon Lex is capable of understanding user
187      * utterances.</p>
188      */
WithSampleUtterances(const Aws::Vector<SampleUtterance> & value)189     inline SlotValueElicitationSetting& WithSampleUtterances(const Aws::Vector<SampleUtterance>& value) { SetSampleUtterances(value); return *this;}
190 
191     /**
192      * <p>If you know a specific pattern that users might respond to an Amazon Lex
193      * request for a slot value, you can provide those utterances to improve accuracy.
194      * This is optional. In most cases, Amazon Lex is capable of understanding user
195      * utterances.</p>
196      */
WithSampleUtterances(Aws::Vector<SampleUtterance> && value)197     inline SlotValueElicitationSetting& WithSampleUtterances(Aws::Vector<SampleUtterance>&& value) { SetSampleUtterances(std::move(value)); return *this;}
198 
199     /**
200      * <p>If you know a specific pattern that users might respond to an Amazon Lex
201      * request for a slot value, you can provide those utterances to improve accuracy.
202      * This is optional. In most cases, Amazon Lex is capable of understanding user
203      * utterances.</p>
204      */
AddSampleUtterances(const SampleUtterance & value)205     inline SlotValueElicitationSetting& AddSampleUtterances(const SampleUtterance& value) { m_sampleUtterancesHasBeenSet = true; m_sampleUtterances.push_back(value); return *this; }
206 
207     /**
208      * <p>If you know a specific pattern that users might respond to an Amazon Lex
209      * request for a slot value, you can provide those utterances to improve accuracy.
210      * This is optional. In most cases, Amazon Lex is capable of understanding user
211      * utterances.</p>
212      */
AddSampleUtterances(SampleUtterance && value)213     inline SlotValueElicitationSetting& AddSampleUtterances(SampleUtterance&& value) { m_sampleUtterancesHasBeenSet = true; m_sampleUtterances.push_back(std::move(value)); return *this; }
214 
215 
216 
GetWaitAndContinueSpecification()217     inline const WaitAndContinueSpecification& GetWaitAndContinueSpecification() const{ return m_waitAndContinueSpecification; }
218 
219 
WaitAndContinueSpecificationHasBeenSet()220     inline bool WaitAndContinueSpecificationHasBeenSet() const { return m_waitAndContinueSpecificationHasBeenSet; }
221 
222 
SetWaitAndContinueSpecification(const WaitAndContinueSpecification & value)223     inline void SetWaitAndContinueSpecification(const WaitAndContinueSpecification& value) { m_waitAndContinueSpecificationHasBeenSet = true; m_waitAndContinueSpecification = value; }
224 
225 
SetWaitAndContinueSpecification(WaitAndContinueSpecification && value)226     inline void SetWaitAndContinueSpecification(WaitAndContinueSpecification&& value) { m_waitAndContinueSpecificationHasBeenSet = true; m_waitAndContinueSpecification = std::move(value); }
227 
228 
WithWaitAndContinueSpecification(const WaitAndContinueSpecification & value)229     inline SlotValueElicitationSetting& WithWaitAndContinueSpecification(const WaitAndContinueSpecification& value) { SetWaitAndContinueSpecification(value); return *this;}
230 
231 
WithWaitAndContinueSpecification(WaitAndContinueSpecification && value)232     inline SlotValueElicitationSetting& WithWaitAndContinueSpecification(WaitAndContinueSpecification&& value) { SetWaitAndContinueSpecification(std::move(value)); return *this;}
233 
234   private:
235 
236     SlotDefaultValueSpecification m_defaultValueSpecification;
237     bool m_defaultValueSpecificationHasBeenSet;
238 
239     SlotConstraint m_slotConstraint;
240     bool m_slotConstraintHasBeenSet;
241 
242     PromptSpecification m_promptSpecification;
243     bool m_promptSpecificationHasBeenSet;
244 
245     Aws::Vector<SampleUtterance> m_sampleUtterances;
246     bool m_sampleUtterancesHasBeenSet;
247 
248     WaitAndContinueSpecification m_waitAndContinueSpecification;
249     bool m_waitAndContinueSpecificationHasBeenSet;
250   };
251 
252 } // namespace Model
253 } // namespace LexModelsV2
254 } // namespace Aws
255