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/core/utils/memory/stl/AWSVector.h>
9 #include <aws/lexv2-models/model/MessageGroup.h>
10 #include <utility>
11 
12 namespace Aws
13 {
14 namespace Utils
15 {
16 namespace Json
17 {
18   class JsonValue;
19   class JsonView;
20 } // namespace Json
21 } // namespace Utils
22 namespace LexModelsV2
23 {
24 namespace Model
25 {
26 
27   /**
28    * <p>Specifies a list of message groups that Amazon Lex sends to a user to elicit
29    * a response.</p><p><h3>See Also:</h3>   <a
30    * href="http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/PromptSpecification">AWS
31    * API Reference</a></p>
32    */
33   class AWS_LEXMODELSV2_API PromptSpecification
34   {
35   public:
36     PromptSpecification();
37     PromptSpecification(Aws::Utils::Json::JsonView jsonValue);
38     PromptSpecification& operator=(Aws::Utils::Json::JsonView jsonValue);
39     Aws::Utils::Json::JsonValue Jsonize() const;
40 
41 
42     /**
43      * <p>A collection of messages that Amazon Lex can send to the user. Amazon Lex
44      * chooses the actual message to send at runtime.</p>
45      */
GetMessageGroups()46     inline const Aws::Vector<MessageGroup>& GetMessageGroups() const{ return m_messageGroups; }
47 
48     /**
49      * <p>A collection of messages that Amazon Lex can send to the user. Amazon Lex
50      * chooses the actual message to send at runtime.</p>
51      */
MessageGroupsHasBeenSet()52     inline bool MessageGroupsHasBeenSet() const { return m_messageGroupsHasBeenSet; }
53 
54     /**
55      * <p>A collection of messages that Amazon Lex can send to the user. Amazon Lex
56      * chooses the actual message to send at runtime.</p>
57      */
SetMessageGroups(const Aws::Vector<MessageGroup> & value)58     inline void SetMessageGroups(const Aws::Vector<MessageGroup>& value) { m_messageGroupsHasBeenSet = true; m_messageGroups = value; }
59 
60     /**
61      * <p>A collection of messages that Amazon Lex can send to the user. Amazon Lex
62      * chooses the actual message to send at runtime.</p>
63      */
SetMessageGroups(Aws::Vector<MessageGroup> && value)64     inline void SetMessageGroups(Aws::Vector<MessageGroup>&& value) { m_messageGroupsHasBeenSet = true; m_messageGroups = std::move(value); }
65 
66     /**
67      * <p>A collection of messages that Amazon Lex can send to the user. Amazon Lex
68      * chooses the actual message to send at runtime.</p>
69      */
WithMessageGroups(const Aws::Vector<MessageGroup> & value)70     inline PromptSpecification& WithMessageGroups(const Aws::Vector<MessageGroup>& value) { SetMessageGroups(value); return *this;}
71 
72     /**
73      * <p>A collection of messages that Amazon Lex can send to the user. Amazon Lex
74      * chooses the actual message to send at runtime.</p>
75      */
WithMessageGroups(Aws::Vector<MessageGroup> && value)76     inline PromptSpecification& WithMessageGroups(Aws::Vector<MessageGroup>&& value) { SetMessageGroups(std::move(value)); return *this;}
77 
78     /**
79      * <p>A collection of messages that Amazon Lex can send to the user. Amazon Lex
80      * chooses the actual message to send at runtime.</p>
81      */
AddMessageGroups(const MessageGroup & value)82     inline PromptSpecification& AddMessageGroups(const MessageGroup& value) { m_messageGroupsHasBeenSet = true; m_messageGroups.push_back(value); return *this; }
83 
84     /**
85      * <p>A collection of messages that Amazon Lex can send to the user. Amazon Lex
86      * chooses the actual message to send at runtime.</p>
87      */
AddMessageGroups(MessageGroup && value)88     inline PromptSpecification& AddMessageGroups(MessageGroup&& value) { m_messageGroupsHasBeenSet = true; m_messageGroups.push_back(std::move(value)); return *this; }
89 
90 
91     /**
92      * <p>The maximum number of times the bot tries to elicit a response from the user
93      * using this prompt.</p>
94      */
GetMaxRetries()95     inline int GetMaxRetries() const{ return m_maxRetries; }
96 
97     /**
98      * <p>The maximum number of times the bot tries to elicit a response from the user
99      * using this prompt.</p>
100      */
MaxRetriesHasBeenSet()101     inline bool MaxRetriesHasBeenSet() const { return m_maxRetriesHasBeenSet; }
102 
103     /**
104      * <p>The maximum number of times the bot tries to elicit a response from the user
105      * using this prompt.</p>
106      */
SetMaxRetries(int value)107     inline void SetMaxRetries(int value) { m_maxRetriesHasBeenSet = true; m_maxRetries = value; }
108 
109     /**
110      * <p>The maximum number of times the bot tries to elicit a response from the user
111      * using this prompt.</p>
112      */
WithMaxRetries(int value)113     inline PromptSpecification& WithMaxRetries(int value) { SetMaxRetries(value); return *this;}
114 
115 
116     /**
117      * <p>Indicates whether the user can interrupt a speech prompt from the bot.</p>
118      */
GetAllowInterrupt()119     inline bool GetAllowInterrupt() const{ return m_allowInterrupt; }
120 
121     /**
122      * <p>Indicates whether the user can interrupt a speech prompt from the bot.</p>
123      */
AllowInterruptHasBeenSet()124     inline bool AllowInterruptHasBeenSet() const { return m_allowInterruptHasBeenSet; }
125 
126     /**
127      * <p>Indicates whether the user can interrupt a speech prompt from the bot.</p>
128      */
SetAllowInterrupt(bool value)129     inline void SetAllowInterrupt(bool value) { m_allowInterruptHasBeenSet = true; m_allowInterrupt = value; }
130 
131     /**
132      * <p>Indicates whether the user can interrupt a speech prompt from the bot.</p>
133      */
WithAllowInterrupt(bool value)134     inline PromptSpecification& WithAllowInterrupt(bool value) { SetAllowInterrupt(value); return *this;}
135 
136   private:
137 
138     Aws::Vector<MessageGroup> m_messageGroups;
139     bool m_messageGroupsHasBeenSet;
140 
141     int m_maxRetries;
142     bool m_maxRetriesHasBeenSet;
143 
144     bool m_allowInterrupt;
145     bool m_allowInterruptHasBeenSet;
146   };
147 
148 } // namespace Model
149 } // namespace LexModelsV2
150 } // namespace Aws
151