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/PostFulfillmentStatusSpecification.h>
9 #include <aws/lexv2-models/model/FulfillmentUpdatesSpecification.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>Determines if a Lambda function should be invoked for a specific
29    * intent.</p><p><h3>See Also:</h3>   <a
30    * href="http://docs.aws.amazon.com/goto/WebAPI/models.lex.v2-2020-08-07/FulfillmentCodeHookSettings">AWS
31    * API Reference</a></p>
32    */
33   class AWS_LEXMODELSV2_API FulfillmentCodeHookSettings
34   {
35   public:
36     FulfillmentCodeHookSettings();
37     FulfillmentCodeHookSettings(Aws::Utils::Json::JsonView jsonValue);
38     FulfillmentCodeHookSettings& operator=(Aws::Utils::Json::JsonView jsonValue);
39     Aws::Utils::Json::JsonValue Jsonize() const;
40 
41 
42     /**
43      * <p>Indicates whether a Lambda function should be invoked to fulfill a specific
44      * intent.</p>
45      */
GetEnabled()46     inline bool GetEnabled() const{ return m_enabled; }
47 
48     /**
49      * <p>Indicates whether a Lambda function should be invoked to fulfill a specific
50      * intent.</p>
51      */
EnabledHasBeenSet()52     inline bool EnabledHasBeenSet() const { return m_enabledHasBeenSet; }
53 
54     /**
55      * <p>Indicates whether a Lambda function should be invoked to fulfill a specific
56      * intent.</p>
57      */
SetEnabled(bool value)58     inline void SetEnabled(bool value) { m_enabledHasBeenSet = true; m_enabled = value; }
59 
60     /**
61      * <p>Indicates whether a Lambda function should be invoked to fulfill a specific
62      * intent.</p>
63      */
WithEnabled(bool value)64     inline FulfillmentCodeHookSettings& WithEnabled(bool value) { SetEnabled(value); return *this;}
65 
66 
67     /**
68      * <p>Provides settings for messages sent to the user for after the Lambda
69      * fulfillment function completes. Post-fulfillment messages can be sent for both
70      * streaming and non-streaming conversations.</p>
71      */
GetPostFulfillmentStatusSpecification()72     inline const PostFulfillmentStatusSpecification& GetPostFulfillmentStatusSpecification() const{ return m_postFulfillmentStatusSpecification; }
73 
74     /**
75      * <p>Provides settings for messages sent to the user for after the Lambda
76      * fulfillment function completes. Post-fulfillment messages can be sent for both
77      * streaming and non-streaming conversations.</p>
78      */
PostFulfillmentStatusSpecificationHasBeenSet()79     inline bool PostFulfillmentStatusSpecificationHasBeenSet() const { return m_postFulfillmentStatusSpecificationHasBeenSet; }
80 
81     /**
82      * <p>Provides settings for messages sent to the user for after the Lambda
83      * fulfillment function completes. Post-fulfillment messages can be sent for both
84      * streaming and non-streaming conversations.</p>
85      */
SetPostFulfillmentStatusSpecification(const PostFulfillmentStatusSpecification & value)86     inline void SetPostFulfillmentStatusSpecification(const PostFulfillmentStatusSpecification& value) { m_postFulfillmentStatusSpecificationHasBeenSet = true; m_postFulfillmentStatusSpecification = value; }
87 
88     /**
89      * <p>Provides settings for messages sent to the user for after the Lambda
90      * fulfillment function completes. Post-fulfillment messages can be sent for both
91      * streaming and non-streaming conversations.</p>
92      */
SetPostFulfillmentStatusSpecification(PostFulfillmentStatusSpecification && value)93     inline void SetPostFulfillmentStatusSpecification(PostFulfillmentStatusSpecification&& value) { m_postFulfillmentStatusSpecificationHasBeenSet = true; m_postFulfillmentStatusSpecification = std::move(value); }
94 
95     /**
96      * <p>Provides settings for messages sent to the user for after the Lambda
97      * fulfillment function completes. Post-fulfillment messages can be sent for both
98      * streaming and non-streaming conversations.</p>
99      */
WithPostFulfillmentStatusSpecification(const PostFulfillmentStatusSpecification & value)100     inline FulfillmentCodeHookSettings& WithPostFulfillmentStatusSpecification(const PostFulfillmentStatusSpecification& value) { SetPostFulfillmentStatusSpecification(value); return *this;}
101 
102     /**
103      * <p>Provides settings for messages sent to the user for after the Lambda
104      * fulfillment function completes. Post-fulfillment messages can be sent for both
105      * streaming and non-streaming conversations.</p>
106      */
WithPostFulfillmentStatusSpecification(PostFulfillmentStatusSpecification && value)107     inline FulfillmentCodeHookSettings& WithPostFulfillmentStatusSpecification(PostFulfillmentStatusSpecification&& value) { SetPostFulfillmentStatusSpecification(std::move(value)); return *this;}
108 
109 
110     /**
111      * <p>Provides settings for update messages sent to the user for long-running
112      * Lambda fulfillment functions. Fulfillment updates can be used only with
113      * streaming conversations.</p>
114      */
GetFulfillmentUpdatesSpecification()115     inline const FulfillmentUpdatesSpecification& GetFulfillmentUpdatesSpecification() const{ return m_fulfillmentUpdatesSpecification; }
116 
117     /**
118      * <p>Provides settings for update messages sent to the user for long-running
119      * Lambda fulfillment functions. Fulfillment updates can be used only with
120      * streaming conversations.</p>
121      */
FulfillmentUpdatesSpecificationHasBeenSet()122     inline bool FulfillmentUpdatesSpecificationHasBeenSet() const { return m_fulfillmentUpdatesSpecificationHasBeenSet; }
123 
124     /**
125      * <p>Provides settings for update messages sent to the user for long-running
126      * Lambda fulfillment functions. Fulfillment updates can be used only with
127      * streaming conversations.</p>
128      */
SetFulfillmentUpdatesSpecification(const FulfillmentUpdatesSpecification & value)129     inline void SetFulfillmentUpdatesSpecification(const FulfillmentUpdatesSpecification& value) { m_fulfillmentUpdatesSpecificationHasBeenSet = true; m_fulfillmentUpdatesSpecification = value; }
130 
131     /**
132      * <p>Provides settings for update messages sent to the user for long-running
133      * Lambda fulfillment functions. Fulfillment updates can be used only with
134      * streaming conversations.</p>
135      */
SetFulfillmentUpdatesSpecification(FulfillmentUpdatesSpecification && value)136     inline void SetFulfillmentUpdatesSpecification(FulfillmentUpdatesSpecification&& value) { m_fulfillmentUpdatesSpecificationHasBeenSet = true; m_fulfillmentUpdatesSpecification = std::move(value); }
137 
138     /**
139      * <p>Provides settings for update messages sent to the user for long-running
140      * Lambda fulfillment functions. Fulfillment updates can be used only with
141      * streaming conversations.</p>
142      */
WithFulfillmentUpdatesSpecification(const FulfillmentUpdatesSpecification & value)143     inline FulfillmentCodeHookSettings& WithFulfillmentUpdatesSpecification(const FulfillmentUpdatesSpecification& value) { SetFulfillmentUpdatesSpecification(value); return *this;}
144 
145     /**
146      * <p>Provides settings for update messages sent to the user for long-running
147      * Lambda fulfillment functions. Fulfillment updates can be used only with
148      * streaming conversations.</p>
149      */
WithFulfillmentUpdatesSpecification(FulfillmentUpdatesSpecification && value)150     inline FulfillmentCodeHookSettings& WithFulfillmentUpdatesSpecification(FulfillmentUpdatesSpecification&& value) { SetFulfillmentUpdatesSpecification(std::move(value)); return *this;}
151 
152   private:
153 
154     bool m_enabled;
155     bool m_enabledHasBeenSet;
156 
157     PostFulfillmentStatusSpecification m_postFulfillmentStatusSpecification;
158     bool m_postFulfillmentStatusSpecificationHasBeenSet;
159 
160     FulfillmentUpdatesSpecification m_fulfillmentUpdatesSpecification;
161     bool m_fulfillmentUpdatesSpecificationHasBeenSet;
162   };
163 
164 } // namespace Model
165 } // namespace LexModelsV2
166 } // namespace Aws
167