Show / Hide Table of Contents

Class CfnBotProps

Properties for defining a CfnBot.

Inheritance
System.Object
CfnBotProps
Implements
ICfnBotProps
Namespace: Amazon.CDK.AWS.Lex
Assembly: Amazon.CDK.AWS.Lex.dll
Syntax (csharp)
public class CfnBotProps : Object, ICfnBotProps
Syntax (vb)
Public Class CfnBotProps
    Inherits Object
    Implements ICfnBotProps
Remarks

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html

ExampleMetadata: fixture=_generated

Examples
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
using Amazon.CDK.AWS.Lex;

var dataPrivacy;
var sentimentAnalysisSettings;
SlotValueOverrideProperty slotValueOverrideProperty_;

var cfnBotProps = new CfnBotProps {
    DataPrivacy = dataPrivacy,
    IdleSessionTtlInSeconds = 123,
    Name = "name",
    RoleArn = "roleArn",

    // the properties below are optional
    AutoBuildBotLocales = false,
    BotFileS3Location = new S3LocationProperty {
        S3Bucket = "s3Bucket",
        S3ObjectKey = "s3ObjectKey",

        // the properties below are optional
        S3ObjectVersion = "s3ObjectVersion"
    },
    BotLocales = new [] { new BotLocaleProperty {
        LocaleId = "localeId",
        NluConfidenceThreshold = 123,

        // the properties below are optional
        CustomVocabulary = new CustomVocabularyProperty {
            CustomVocabularyItems = new [] { new CustomVocabularyItemProperty {
                Phrase = "phrase",

                // the properties below are optional
                DisplayAs = "displayAs",
                Weight = 123
            } }
        },
        Description = "description",
        Intents = new [] { new IntentProperty {
            Name = "name",

            // the properties below are optional
            Description = "description",
            DialogCodeHook = new DialogCodeHookSettingProperty {
                Enabled = false
            },
            FulfillmentCodeHook = new FulfillmentCodeHookSettingProperty {
                Enabled = false,

                // the properties below are optional
                FulfillmentUpdatesSpecification = new FulfillmentUpdatesSpecificationProperty {
                    Active = false,

                    // the properties below are optional
                    StartResponse = new FulfillmentStartResponseSpecificationProperty {
                        DelayInSeconds = 123,
                        MessageGroups = new [] { new MessageGroupProperty {
                            Message = new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            },

                            // the properties below are optional
                            Variations = new [] { new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            } }
                        } },

                        // the properties below are optional
                        AllowInterrupt = false
                    },
                    TimeoutInSeconds = 123,
                    UpdateResponse = new FulfillmentUpdateResponseSpecificationProperty {
                        FrequencyInSeconds = 123,
                        MessageGroups = new [] { new MessageGroupProperty {
                            Message = new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            },

                            // the properties below are optional
                            Variations = new [] { new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            } }
                        } },

                        // the properties below are optional
                        AllowInterrupt = false
                    }
                },
                IsActive = false,
                PostFulfillmentStatusSpecification = new PostFulfillmentStatusSpecificationProperty {
                    FailureConditional = new ConditionalSpecificationProperty {
                        ConditionalBranches = new [] { new ConditionalBranchProperty {
                            Condition = new ConditionProperty {
                                ExpressionString = "expressionString"
                            },
                            Name = "name",
                            NextStep = new DialogStateProperty {
                                DialogAction = new DialogActionProperty {
                                    Type = "type",

                                    // the properties below are optional
                                    SlotToElicit = "slotToElicit",
                                    SuppressNextMessage = false
                                },
                                Intent = new IntentOverrideProperty {
                                    Name = "name",
                                    Slots = new [] { new SlotValueOverrideMapProperty {
                                        SlotName = "slotName",
                                        SlotValueOverride = new SlotValueOverrideProperty {
                                            Shape = "shape",
                                            Value = new SlotValueProperty {
                                                InterpretedValue = "interpretedValue"
                                            },
                                            Values = new [] { slotValueOverrideProperty_ }
                                        }
                                    } }
                                },
                                SessionAttributes = new [] { new SessionAttributeProperty {
                                    Key = "key",

                                    // the properties below are optional
                                    Value = "value"
                                } }
                            },

                            // the properties below are optional
                            Response = new ResponseSpecificationProperty {
                                MessageGroupsList = new [] { new MessageGroupProperty {
                                    Message = new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    },

                                    // the properties below are optional
                                    Variations = new [] { new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    } }
                                } },

                                // the properties below are optional
                                AllowInterrupt = false
                            }
                        } },
                        DefaultBranch = new DefaultConditionalBranchProperty {
                            NextStep = new DialogStateProperty {
                                DialogAction = new DialogActionProperty {
                                    Type = "type",

                                    // the properties below are optional
                                    SlotToElicit = "slotToElicit",
                                    SuppressNextMessage = false
                                },
                                Intent = new IntentOverrideProperty {
                                    Name = "name",
                                    Slots = new [] { new SlotValueOverrideMapProperty {
                                        SlotName = "slotName",
                                        SlotValueOverride = new SlotValueOverrideProperty {
                                            Shape = "shape",
                                            Value = new SlotValueProperty {
                                                InterpretedValue = "interpretedValue"
                                            },
                                            Values = new [] { slotValueOverrideProperty_ }
                                        }
                                    } }
                                },
                                SessionAttributes = new [] { new SessionAttributeProperty {
                                    Key = "key",

                                    // the properties below are optional
                                    Value = "value"
                                } }
                            },
                            Response = new ResponseSpecificationProperty {
                                MessageGroupsList = new [] { new MessageGroupProperty {
                                    Message = new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    },

                                    // the properties below are optional
                                    Variations = new [] { new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    } }
                                } },

                                // the properties below are optional
                                AllowInterrupt = false
                            }
                        },
                        IsActive = false
                    },
                    FailureNextStep = new DialogStateProperty {
                        DialogAction = new DialogActionProperty {
                            Type = "type",

                            // the properties below are optional
                            SlotToElicit = "slotToElicit",
                            SuppressNextMessage = false
                        },
                        Intent = new IntentOverrideProperty {
                            Name = "name",
                            Slots = new [] { new SlotValueOverrideMapProperty {
                                SlotName = "slotName",
                                SlotValueOverride = new SlotValueOverrideProperty {
                                    Shape = "shape",
                                    Value = new SlotValueProperty {
                                        InterpretedValue = "interpretedValue"
                                    },
                                    Values = new [] { slotValueOverrideProperty_ }
                                }
                            } }
                        },
                        SessionAttributes = new [] { new SessionAttributeProperty {
                            Key = "key",

                            // the properties below are optional
                            Value = "value"
                        } }
                    },
                    FailureResponse = new ResponseSpecificationProperty {
                        MessageGroupsList = new [] { new MessageGroupProperty {
                            Message = new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            },

                            // the properties below are optional
                            Variations = new [] { new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            } }
                        } },

                        // the properties below are optional
                        AllowInterrupt = false
                    },
                    SuccessConditional = new ConditionalSpecificationProperty {
                        ConditionalBranches = new [] { new ConditionalBranchProperty {
                            Condition = new ConditionProperty {
                                ExpressionString = "expressionString"
                            },
                            Name = "name",
                            NextStep = new DialogStateProperty {
                                DialogAction = new DialogActionProperty {
                                    Type = "type",

                                    // the properties below are optional
                                    SlotToElicit = "slotToElicit",
                                    SuppressNextMessage = false
                                },
                                Intent = new IntentOverrideProperty {
                                    Name = "name",
                                    Slots = new [] { new SlotValueOverrideMapProperty {
                                        SlotName = "slotName",
                                        SlotValueOverride = new SlotValueOverrideProperty {
                                            Shape = "shape",
                                            Value = new SlotValueProperty {
                                                InterpretedValue = "interpretedValue"
                                            },
                                            Values = new [] { slotValueOverrideProperty_ }
                                        }
                                    } }
                                },
                                SessionAttributes = new [] { new SessionAttributeProperty {
                                    Key = "key",

                                    // the properties below are optional
                                    Value = "value"
                                } }
                            },

                            // the properties below are optional
                            Response = new ResponseSpecificationProperty {
                                MessageGroupsList = new [] { new MessageGroupProperty {
                                    Message = new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    },

                                    // the properties below are optional
                                    Variations = new [] { new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    } }
                                } },

                                // the properties below are optional
                                AllowInterrupt = false
                            }
                        } },
                        DefaultBranch = new DefaultConditionalBranchProperty {
                            NextStep = new DialogStateProperty {
                                DialogAction = new DialogActionProperty {
                                    Type = "type",

                                    // the properties below are optional
                                    SlotToElicit = "slotToElicit",
                                    SuppressNextMessage = false
                                },
                                Intent = new IntentOverrideProperty {
                                    Name = "name",
                                    Slots = new [] { new SlotValueOverrideMapProperty {
                                        SlotName = "slotName",
                                        SlotValueOverride = new SlotValueOverrideProperty {
                                            Shape = "shape",
                                            Value = new SlotValueProperty {
                                                InterpretedValue = "interpretedValue"
                                            },
                                            Values = new [] { slotValueOverrideProperty_ }
                                        }
                                    } }
                                },
                                SessionAttributes = new [] { new SessionAttributeProperty {
                                    Key = "key",

                                    // the properties below are optional
                                    Value = "value"
                                } }
                            },
                            Response = new ResponseSpecificationProperty {
                                MessageGroupsList = new [] { new MessageGroupProperty {
                                    Message = new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    },

                                    // the properties below are optional
                                    Variations = new [] { new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    } }
                                } },

                                // the properties below are optional
                                AllowInterrupt = false
                            }
                        },
                        IsActive = false
                    },
                    SuccessNextStep = new DialogStateProperty {
                        DialogAction = new DialogActionProperty {
                            Type = "type",

                            // the properties below are optional
                            SlotToElicit = "slotToElicit",
                            SuppressNextMessage = false
                        },
                        Intent = new IntentOverrideProperty {
                            Name = "name",
                            Slots = new [] { new SlotValueOverrideMapProperty {
                                SlotName = "slotName",
                                SlotValueOverride = new SlotValueOverrideProperty {
                                    Shape = "shape",
                                    Value = new SlotValueProperty {
                                        InterpretedValue = "interpretedValue"
                                    },
                                    Values = new [] { slotValueOverrideProperty_ }
                                }
                            } }
                        },
                        SessionAttributes = new [] { new SessionAttributeProperty {
                            Key = "key",

                            // the properties below are optional
                            Value = "value"
                        } }
                    },
                    SuccessResponse = new ResponseSpecificationProperty {
                        MessageGroupsList = new [] { new MessageGroupProperty {
                            Message = new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            },

                            // the properties below are optional
                            Variations = new [] { new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            } }
                        } },

                        // the properties below are optional
                        AllowInterrupt = false
                    },
                    TimeoutConditional = new ConditionalSpecificationProperty {
                        ConditionalBranches = new [] { new ConditionalBranchProperty {
                            Condition = new ConditionProperty {
                                ExpressionString = "expressionString"
                            },
                            Name = "name",
                            NextStep = new DialogStateProperty {
                                DialogAction = new DialogActionProperty {
                                    Type = "type",

                                    // the properties below are optional
                                    SlotToElicit = "slotToElicit",
                                    SuppressNextMessage = false
                                },
                                Intent = new IntentOverrideProperty {
                                    Name = "name",
                                    Slots = new [] { new SlotValueOverrideMapProperty {
                                        SlotName = "slotName",
                                        SlotValueOverride = new SlotValueOverrideProperty {
                                            Shape = "shape",
                                            Value = new SlotValueProperty {
                                                InterpretedValue = "interpretedValue"
                                            },
                                            Values = new [] { slotValueOverrideProperty_ }
                                        }
                                    } }
                                },
                                SessionAttributes = new [] { new SessionAttributeProperty {
                                    Key = "key",

                                    // the properties below are optional
                                    Value = "value"
                                } }
                            },

                            // the properties below are optional
                            Response = new ResponseSpecificationProperty {
                                MessageGroupsList = new [] { new MessageGroupProperty {
                                    Message = new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    },

                                    // the properties below are optional
                                    Variations = new [] { new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    } }
                                } },

                                // the properties below are optional
                                AllowInterrupt = false
                            }
                        } },
                        DefaultBranch = new DefaultConditionalBranchProperty {
                            NextStep = new DialogStateProperty {
                                DialogAction = new DialogActionProperty {
                                    Type = "type",

                                    // the properties below are optional
                                    SlotToElicit = "slotToElicit",
                                    SuppressNextMessage = false
                                },
                                Intent = new IntentOverrideProperty {
                                    Name = "name",
                                    Slots = new [] { new SlotValueOverrideMapProperty {
                                        SlotName = "slotName",
                                        SlotValueOverride = new SlotValueOverrideProperty {
                                            Shape = "shape",
                                            Value = new SlotValueProperty {
                                                InterpretedValue = "interpretedValue"
                                            },
                                            Values = new [] { slotValueOverrideProperty_ }
                                        }
                                    } }
                                },
                                SessionAttributes = new [] { new SessionAttributeProperty {
                                    Key = "key",

                                    // the properties below are optional
                                    Value = "value"
                                } }
                            },
                            Response = new ResponseSpecificationProperty {
                                MessageGroupsList = new [] { new MessageGroupProperty {
                                    Message = new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    },

                                    // the properties below are optional
                                    Variations = new [] { new MessageProperty {
                                        CustomPayload = new CustomPayloadProperty {
                                            Value = "value"
                                        },
                                        ImageResponseCard = new ImageResponseCardProperty {
                                            Title = "title",

                                            // the properties below are optional
                                            Buttons = new [] { new ButtonProperty {
                                                Text = "text",
                                                Value = "value"
                                            } },
                                            ImageUrl = "imageUrl",
                                            Subtitle = "subtitle"
                                        },
                                        PlainTextMessage = new PlainTextMessageProperty {
                                            Value = "value"
                                        },
                                        SsmlMessage = new SSMLMessageProperty {
                                            Value = "value"
                                        }
                                    } }
                                } },

                                // the properties below are optional
                                AllowInterrupt = false
                            }
                        },
                        IsActive = false
                    },
                    TimeoutNextStep = new DialogStateProperty {
                        DialogAction = new DialogActionProperty {
                            Type = "type",

                            // the properties below are optional
                            SlotToElicit = "slotToElicit",
                            SuppressNextMessage = false
                        },
                        Intent = new IntentOverrideProperty {
                            Name = "name",
                            Slots = new [] { new SlotValueOverrideMapProperty {
                                SlotName = "slotName",
                                SlotValueOverride = new SlotValueOverrideProperty {
                                    Shape = "shape",
                                    Value = new SlotValueProperty {
                                        InterpretedValue = "interpretedValue"
                                    },
                                    Values = new [] { slotValueOverrideProperty_ }
                                }
                            } }
                        },
                        SessionAttributes = new [] { new SessionAttributeProperty {
                            Key = "key",

                            // the properties below are optional
                            Value = "value"
                        } }
                    },
                    TimeoutResponse = new ResponseSpecificationProperty {
                        MessageGroupsList = new [] { new MessageGroupProperty {
                            Message = new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            },

                            // the properties below are optional
                            Variations = new [] { new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            } }
                        } },

                        // the properties below are optional
                        AllowInterrupt = false
                    }
                }
            },
            InitialResponseSetting = new InitialResponseSettingProperty {
                CodeHook = new DialogCodeHookInvocationSettingProperty {
                    EnableCodeHookInvocation = false,
                    IsActive = false,
                    PostCodeHookSpecification = new PostDialogCodeHookInvocationSpecificationProperty {
                        FailureConditional = new ConditionalSpecificationProperty {
                            ConditionalBranches = new [] { new ConditionalBranchProperty {
                                Condition = new ConditionProperty {
                                    ExpressionString = "expressionString"
                                },
                                Name = "name",
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },

                                // the properties below are optional
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            } },
                            DefaultBranch = new DefaultConditionalBranchProperty {
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            },
                            IsActive = false
                        },
                        FailureNextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        FailureResponse = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        },
                        SuccessConditional = new ConditionalSpecificationProperty {
                            ConditionalBranches = new [] { new ConditionalBranchProperty {
                                Condition = new ConditionProperty {
                                    ExpressionString = "expressionString"
                                },
                                Name = "name",
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },

                                // the properties below are optional
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            } },
                            DefaultBranch = new DefaultConditionalBranchProperty {
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            },
                            IsActive = false
                        },
                        SuccessNextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        SuccessResponse = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        },
                        TimeoutConditional = new ConditionalSpecificationProperty {
                            ConditionalBranches = new [] { new ConditionalBranchProperty {
                                Condition = new ConditionProperty {
                                    ExpressionString = "expressionString"
                                },
                                Name = "name",
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },

                                // the properties below are optional
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            } },
                            DefaultBranch = new DefaultConditionalBranchProperty {
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            },
                            IsActive = false
                        },
                        TimeoutNextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        TimeoutResponse = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    },

                    // the properties below are optional
                    InvocationLabel = "invocationLabel"
                },
                Conditional = new ConditionalSpecificationProperty {
                    ConditionalBranches = new [] { new ConditionalBranchProperty {
                        Condition = new ConditionProperty {
                            ExpressionString = "expressionString"
                        },
                        Name = "name",
                        NextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },

                        // the properties below are optional
                        Response = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    } },
                    DefaultBranch = new DefaultConditionalBranchProperty {
                        NextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        Response = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    },
                    IsActive = false
                },
                InitialResponse = new ResponseSpecificationProperty {
                    MessageGroupsList = new [] { new MessageGroupProperty {
                        Message = new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        },

                        // the properties below are optional
                        Variations = new [] { new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        } }
                    } },

                    // the properties below are optional
                    AllowInterrupt = false
                },
                NextStep = new DialogStateProperty {
                    DialogAction = new DialogActionProperty {
                        Type = "type",

                        // the properties below are optional
                        SlotToElicit = "slotToElicit",
                        SuppressNextMessage = false
                    },
                    Intent = new IntentOverrideProperty {
                        Name = "name",
                        Slots = new [] { new SlotValueOverrideMapProperty {
                            SlotName = "slotName",
                            SlotValueOverride = new SlotValueOverrideProperty {
                                Shape = "shape",
                                Value = new SlotValueProperty {
                                    InterpretedValue = "interpretedValue"
                                },
                                Values = new [] { slotValueOverrideProperty_ }
                            }
                        } }
                    },
                    SessionAttributes = new [] { new SessionAttributeProperty {
                        Key = "key",

                        // the properties below are optional
                        Value = "value"
                    } }
                }
            },
            InputContexts = new [] { new InputContextProperty {
                Name = "name"
            } },
            IntentClosingSetting = new IntentClosingSettingProperty {
                ClosingResponse = new ResponseSpecificationProperty {
                    MessageGroupsList = new [] { new MessageGroupProperty {
                        Message = new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        },

                        // the properties below are optional
                        Variations = new [] { new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        } }
                    } },

                    // the properties below are optional
                    AllowInterrupt = false
                },
                Conditional = new ConditionalSpecificationProperty {
                    ConditionalBranches = new [] { new ConditionalBranchProperty {
                        Condition = new ConditionProperty {
                            ExpressionString = "expressionString"
                        },
                        Name = "name",
                        NextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },

                        // the properties below are optional
                        Response = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    } },
                    DefaultBranch = new DefaultConditionalBranchProperty {
                        NextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        Response = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    },
                    IsActive = false
                },
                IsActive = false,
                NextStep = new DialogStateProperty {
                    DialogAction = new DialogActionProperty {
                        Type = "type",

                        // the properties below are optional
                        SlotToElicit = "slotToElicit",
                        SuppressNextMessage = false
                    },
                    Intent = new IntentOverrideProperty {
                        Name = "name",
                        Slots = new [] { new SlotValueOverrideMapProperty {
                            SlotName = "slotName",
                            SlotValueOverride = new SlotValueOverrideProperty {
                                Shape = "shape",
                                Value = new SlotValueProperty {
                                    InterpretedValue = "interpretedValue"
                                },
                                Values = new [] { slotValueOverrideProperty_ }
                            }
                        } }
                    },
                    SessionAttributes = new [] { new SessionAttributeProperty {
                        Key = "key",

                        // the properties below are optional
                        Value = "value"
                    } }
                }
            },
            IntentConfirmationSetting = new IntentConfirmationSettingProperty {
                PromptSpecification = new PromptSpecificationProperty {
                    MaxRetries = 123,
                    MessageGroupsList = new [] { new MessageGroupProperty {
                        Message = new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        },

                        // the properties below are optional
                        Variations = new [] { new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        } }
                    } },

                    // the properties below are optional
                    AllowInterrupt = false,
                    MessageSelectionStrategy = "messageSelectionStrategy",
                    PromptAttemptsSpecification = new Dictionary<string, object> {
                        { "promptAttemptsSpecificationKey", new PromptAttemptSpecificationProperty {
                            AllowedInputTypes = new AllowedInputTypesProperty {
                                AllowAudioInput = false,
                                AllowDtmfInput = false
                            },

                            // the properties below are optional
                            AllowInterrupt = false,
                            AudioAndDtmfInputSpecification = new AudioAndDTMFInputSpecificationProperty {
                                StartTimeoutMs = 123,

                                // the properties below are optional
                                AudioSpecification = new AudioSpecificationProperty {
                                    EndTimeoutMs = 123,
                                    MaxLengthMs = 123
                                },
                                DtmfSpecification = new DTMFSpecificationProperty {
                                    DeletionCharacter = "deletionCharacter",
                                    EndCharacter = "endCharacter",
                                    EndTimeoutMs = 123,
                                    MaxLength = 123
                                }
                            },
                            TextInputSpecification = new TextInputSpecificationProperty {
                                StartTimeoutMs = 123
                            }
                        } }
                    }
                },

                // the properties below are optional
                CodeHook = new DialogCodeHookInvocationSettingProperty {
                    EnableCodeHookInvocation = false,
                    IsActive = false,
                    PostCodeHookSpecification = new PostDialogCodeHookInvocationSpecificationProperty {
                        FailureConditional = new ConditionalSpecificationProperty {
                            ConditionalBranches = new [] { new ConditionalBranchProperty {
                                Condition = new ConditionProperty {
                                    ExpressionString = "expressionString"
                                },
                                Name = "name",
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },

                                // the properties below are optional
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            } },
                            DefaultBranch = new DefaultConditionalBranchProperty {
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            },
                            IsActive = false
                        },
                        FailureNextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        FailureResponse = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        },
                        SuccessConditional = new ConditionalSpecificationProperty {
                            ConditionalBranches = new [] { new ConditionalBranchProperty {
                                Condition = new ConditionProperty {
                                    ExpressionString = "expressionString"
                                },
                                Name = "name",
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },

                                // the properties below are optional
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            } },
                            DefaultBranch = new DefaultConditionalBranchProperty {
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            },
                            IsActive = false
                        },
                        SuccessNextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        SuccessResponse = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        },
                        TimeoutConditional = new ConditionalSpecificationProperty {
                            ConditionalBranches = new [] { new ConditionalBranchProperty {
                                Condition = new ConditionProperty {
                                    ExpressionString = "expressionString"
                                },
                                Name = "name",
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },

                                // the properties below are optional
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            } },
                            DefaultBranch = new DefaultConditionalBranchProperty {
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            },
                            IsActive = false
                        },
                        TimeoutNextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        TimeoutResponse = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    },

                    // the properties below are optional
                    InvocationLabel = "invocationLabel"
                },
                ConfirmationConditional = new ConditionalSpecificationProperty {
                    ConditionalBranches = new [] { new ConditionalBranchProperty {
                        Condition = new ConditionProperty {
                            ExpressionString = "expressionString"
                        },
                        Name = "name",
                        NextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },

                        // the properties below are optional
                        Response = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    } },
                    DefaultBranch = new DefaultConditionalBranchProperty {
                        NextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        Response = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    },
                    IsActive = false
                },
                ConfirmationNextStep = new DialogStateProperty {
                    DialogAction = new DialogActionProperty {
                        Type = "type",

                        // the properties below are optional
                        SlotToElicit = "slotToElicit",
                        SuppressNextMessage = false
                    },
                    Intent = new IntentOverrideProperty {
                        Name = "name",
                        Slots = new [] { new SlotValueOverrideMapProperty {
                            SlotName = "slotName",
                            SlotValueOverride = new SlotValueOverrideProperty {
                                Shape = "shape",
                                Value = new SlotValueProperty {
                                    InterpretedValue = "interpretedValue"
                                },
                                Values = new [] { slotValueOverrideProperty_ }
                            }
                        } }
                    },
                    SessionAttributes = new [] { new SessionAttributeProperty {
                        Key = "key",

                        // the properties below are optional
                        Value = "value"
                    } }
                },
                ConfirmationResponse = new ResponseSpecificationProperty {
                    MessageGroupsList = new [] { new MessageGroupProperty {
                        Message = new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        },

                        // the properties below are optional
                        Variations = new [] { new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        } }
                    } },

                    // the properties below are optional
                    AllowInterrupt = false
                },
                DeclinationConditional = new ConditionalSpecificationProperty {
                    ConditionalBranches = new [] { new ConditionalBranchProperty {
                        Condition = new ConditionProperty {
                            ExpressionString = "expressionString"
                        },
                        Name = "name",
                        NextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },

                        // the properties below are optional
                        Response = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    } },
                    DefaultBranch = new DefaultConditionalBranchProperty {
                        NextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        Response = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    },
                    IsActive = false
                },
                DeclinationNextStep = new DialogStateProperty {
                    DialogAction = new DialogActionProperty {
                        Type = "type",

                        // the properties below are optional
                        SlotToElicit = "slotToElicit",
                        SuppressNextMessage = false
                    },
                    Intent = new IntentOverrideProperty {
                        Name = "name",
                        Slots = new [] { new SlotValueOverrideMapProperty {
                            SlotName = "slotName",
                            SlotValueOverride = new SlotValueOverrideProperty {
                                Shape = "shape",
                                Value = new SlotValueProperty {
                                    InterpretedValue = "interpretedValue"
                                },
                                Values = new [] { slotValueOverrideProperty_ }
                            }
                        } }
                    },
                    SessionAttributes = new [] { new SessionAttributeProperty {
                        Key = "key",

                        // the properties below are optional
                        Value = "value"
                    } }
                },
                DeclinationResponse = new ResponseSpecificationProperty {
                    MessageGroupsList = new [] { new MessageGroupProperty {
                        Message = new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        },

                        // the properties below are optional
                        Variations = new [] { new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        } }
                    } },

                    // the properties below are optional
                    AllowInterrupt = false
                },
                ElicitationCodeHook = new ElicitationCodeHookInvocationSettingProperty {
                    EnableCodeHookInvocation = false,

                    // the properties below are optional
                    InvocationLabel = "invocationLabel"
                },
                FailureConditional = new ConditionalSpecificationProperty {
                    ConditionalBranches = new [] { new ConditionalBranchProperty {
                        Condition = new ConditionProperty {
                            ExpressionString = "expressionString"
                        },
                        Name = "name",
                        NextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },

                        // the properties below are optional
                        Response = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    } },
                    DefaultBranch = new DefaultConditionalBranchProperty {
                        NextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        Response = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    },
                    IsActive = false
                },
                FailureNextStep = new DialogStateProperty {
                    DialogAction = new DialogActionProperty {
                        Type = "type",

                        // the properties below are optional
                        SlotToElicit = "slotToElicit",
                        SuppressNextMessage = false
                    },
                    Intent = new IntentOverrideProperty {
                        Name = "name",
                        Slots = new [] { new SlotValueOverrideMapProperty {
                            SlotName = "slotName",
                            SlotValueOverride = new SlotValueOverrideProperty {
                                Shape = "shape",
                                Value = new SlotValueProperty {
                                    InterpretedValue = "interpretedValue"
                                },
                                Values = new [] { slotValueOverrideProperty_ }
                            }
                        } }
                    },
                    SessionAttributes = new [] { new SessionAttributeProperty {
                        Key = "key",

                        // the properties below are optional
                        Value = "value"
                    } }
                },
                FailureResponse = new ResponseSpecificationProperty {
                    MessageGroupsList = new [] { new MessageGroupProperty {
                        Message = new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        },

                        // the properties below are optional
                        Variations = new [] { new MessageProperty {
                            CustomPayload = new CustomPayloadProperty {
                                Value = "value"
                            },
                            ImageResponseCard = new ImageResponseCardProperty {
                                Title = "title",

                                // the properties below are optional
                                Buttons = new [] { new ButtonProperty {
                                    Text = "text",
                                    Value = "value"
                                } },
                                ImageUrl = "imageUrl",
                                Subtitle = "subtitle"
                            },
                            PlainTextMessage = new PlainTextMessageProperty {
                                Value = "value"
                            },
                            SsmlMessage = new SSMLMessageProperty {
                                Value = "value"
                            }
                        } }
                    } },

                    // the properties below are optional
                    AllowInterrupt = false
                },
                IsActive = false
            },
            KendraConfiguration = new KendraConfigurationProperty {
                KendraIndex = "kendraIndex",

                // the properties below are optional
                QueryFilterString = "queryFilterString",
                QueryFilterStringEnabled = false
            },
            OutputContexts = new [] { new OutputContextProperty {
                Name = "name",
                TimeToLiveInSeconds = 123,
                TurnsToLive = 123
            } },
            ParentIntentSignature = "parentIntentSignature",
            SampleUtterances = new [] { new SampleUtteranceProperty {
                Utterance = "utterance"
            } },
            SlotPriorities = new [] { new SlotPriorityProperty {
                Priority = 123,
                SlotName = "slotName"
            } },
            Slots = new [] { new SlotProperty {
                Name = "name",
                SlotTypeName = "slotTypeName",
                ValueElicitationSetting = new SlotValueElicitationSettingProperty {
                    SlotConstraint = "slotConstraint",

                    // the properties below are optional
                    DefaultValueSpecification = new SlotDefaultValueSpecificationProperty {
                        DefaultValueList = new [] { new SlotDefaultValueProperty {
                            DefaultValue = "defaultValue"
                        } }
                    },
                    PromptSpecification = new PromptSpecificationProperty {
                        MaxRetries = 123,
                        MessageGroupsList = new [] { new MessageGroupProperty {
                            Message = new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            },

                            // the properties below are optional
                            Variations = new [] { new MessageProperty {
                                CustomPayload = new CustomPayloadProperty {
                                    Value = "value"
                                },
                                ImageResponseCard = new ImageResponseCardProperty {
                                    Title = "title",

                                    // the properties below are optional
                                    Buttons = new [] { new ButtonProperty {
                                        Text = "text",
                                        Value = "value"
                                    } },
                                    ImageUrl = "imageUrl",
                                    Subtitle = "subtitle"
                                },
                                PlainTextMessage = new PlainTextMessageProperty {
                                    Value = "value"
                                },
                                SsmlMessage = new SSMLMessageProperty {
                                    Value = "value"
                                }
                            } }
                        } },

                        // the properties below are optional
                        AllowInterrupt = false,
                        MessageSelectionStrategy = "messageSelectionStrategy",
                        PromptAttemptsSpecification = new Dictionary<string, object> {
                            { "promptAttemptsSpecificationKey", new PromptAttemptSpecificationProperty {
                                AllowedInputTypes = new AllowedInputTypesProperty {
                                    AllowAudioInput = false,
                                    AllowDtmfInput = false
                                },

                                // the properties below are optional
                                AllowInterrupt = false,
                                AudioAndDtmfInputSpecification = new AudioAndDTMFInputSpecificationProperty {
                                    StartTimeoutMs = 123,

                                    // the properties below are optional
                                    AudioSpecification = new AudioSpecificationProperty {
                                        EndTimeoutMs = 123,
                                        MaxLengthMs = 123
                                    },
                                    DtmfSpecification = new DTMFSpecificationProperty {
                                        DeletionCharacter = "deletionCharacter",
                                        EndCharacter = "endCharacter",
                                        EndTimeoutMs = 123,
                                        MaxLength = 123
                                    }
                                },
                                TextInputSpecification = new TextInputSpecificationProperty {
                                    StartTimeoutMs = 123
                                }
                            } }
                        }
                    },
                    SampleUtterances = new [] { new SampleUtteranceProperty {
                        Utterance = "utterance"
                    } },
                    SlotCaptureSetting = new SlotCaptureSettingProperty {
                        CaptureConditional = new ConditionalSpecificationProperty {
                            ConditionalBranches = new [] { new ConditionalBranchProperty {
                                Condition = new ConditionProperty {
                                    ExpressionString = "expressionString"
                                },
                                Name = "name",
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },

                                // the properties below are optional
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            } },
                            DefaultBranch = new DefaultConditionalBranchProperty {
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            },
                            IsActive = false
                        },
                        CaptureNextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        CaptureResponse = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        },
                        CodeHook = new DialogCodeHookInvocationSettingProperty {
                            EnableCodeHookInvocation = false,
                            IsActive = false,
                            PostCodeHookSpecification = new PostDialogCodeHookInvocationSpecificationProperty {
                                FailureConditional = new ConditionalSpecificationProperty {
                                    ConditionalBranches = new [] { new ConditionalBranchProperty {
                                        Condition = new ConditionProperty {
                                            ExpressionString = "expressionString"
                                        },
                                        Name = "name",
                                        NextStep = new DialogStateProperty {
                                            DialogAction = new DialogActionProperty {
                                                Type = "type",

                                                // the properties below are optional
                                                SlotToElicit = "slotToElicit",
                                                SuppressNextMessage = false
                                            },
                                            Intent = new IntentOverrideProperty {
                                                Name = "name",
                                                Slots = new [] { new SlotValueOverrideMapProperty {
                                                    SlotName = "slotName",
                                                    SlotValueOverride = new SlotValueOverrideProperty {
                                                        Shape = "shape",
                                                        Value = new SlotValueProperty {
                                                            InterpretedValue = "interpretedValue"
                                                        },
                                                        Values = new [] { slotValueOverrideProperty_ }
                                                    }
                                                } }
                                            },
                                            SessionAttributes = new [] { new SessionAttributeProperty {
                                                Key = "key",

                                                // the properties below are optional
                                                Value = "value"
                                            } }
                                        },

                                        // the properties below are optional
                                        Response = new ResponseSpecificationProperty {
                                            MessageGroupsList = new [] { new MessageGroupProperty {
                                                Message = new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                },

                                                // the properties below are optional
                                                Variations = new [] { new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                } }
                                            } },

                                            // the properties below are optional
                                            AllowInterrupt = false
                                        }
                                    } },
                                    DefaultBranch = new DefaultConditionalBranchProperty {
                                        NextStep = new DialogStateProperty {
                                            DialogAction = new DialogActionProperty {
                                                Type = "type",

                                                // the properties below are optional
                                                SlotToElicit = "slotToElicit",
                                                SuppressNextMessage = false
                                            },
                                            Intent = new IntentOverrideProperty {
                                                Name = "name",
                                                Slots = new [] { new SlotValueOverrideMapProperty {
                                                    SlotName = "slotName",
                                                    SlotValueOverride = new SlotValueOverrideProperty {
                                                        Shape = "shape",
                                                        Value = new SlotValueProperty {
                                                            InterpretedValue = "interpretedValue"
                                                        },
                                                        Values = new [] { slotValueOverrideProperty_ }
                                                    }
                                                } }
                                            },
                                            SessionAttributes = new [] { new SessionAttributeProperty {
                                                Key = "key",

                                                // the properties below are optional
                                                Value = "value"
                                            } }
                                        },
                                        Response = new ResponseSpecificationProperty {
                                            MessageGroupsList = new [] { new MessageGroupProperty {
                                                Message = new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                },

                                                // the properties below are optional
                                                Variations = new [] { new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                } }
                                            } },

                                            // the properties below are optional
                                            AllowInterrupt = false
                                        }
                                    },
                                    IsActive = false
                                },
                                FailureNextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                FailureResponse = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                },
                                SuccessConditional = new ConditionalSpecificationProperty {
                                    ConditionalBranches = new [] { new ConditionalBranchProperty {
                                        Condition = new ConditionProperty {
                                            ExpressionString = "expressionString"
                                        },
                                        Name = "name",
                                        NextStep = new DialogStateProperty {
                                            DialogAction = new DialogActionProperty {
                                                Type = "type",

                                                // the properties below are optional
                                                SlotToElicit = "slotToElicit",
                                                SuppressNextMessage = false
                                            },
                                            Intent = new IntentOverrideProperty {
                                                Name = "name",
                                                Slots = new [] { new SlotValueOverrideMapProperty {
                                                    SlotName = "slotName",
                                                    SlotValueOverride = new SlotValueOverrideProperty {
                                                        Shape = "shape",
                                                        Value = new SlotValueProperty {
                                                            InterpretedValue = "interpretedValue"
                                                        },
                                                        Values = new [] { slotValueOverrideProperty_ }
                                                    }
                                                } }
                                            },
                                            SessionAttributes = new [] { new SessionAttributeProperty {
                                                Key = "key",

                                                // the properties below are optional
                                                Value = "value"
                                            } }
                                        },

                                        // the properties below are optional
                                        Response = new ResponseSpecificationProperty {
                                            MessageGroupsList = new [] { new MessageGroupProperty {
                                                Message = new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                },

                                                // the properties below are optional
                                                Variations = new [] { new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                } }
                                            } },

                                            // the properties below are optional
                                            AllowInterrupt = false
                                        }
                                    } },
                                    DefaultBranch = new DefaultConditionalBranchProperty {
                                        NextStep = new DialogStateProperty {
                                            DialogAction = new DialogActionProperty {
                                                Type = "type",

                                                // the properties below are optional
                                                SlotToElicit = "slotToElicit",
                                                SuppressNextMessage = false
                                            },
                                            Intent = new IntentOverrideProperty {
                                                Name = "name",
                                                Slots = new [] { new SlotValueOverrideMapProperty {
                                                    SlotName = "slotName",
                                                    SlotValueOverride = new SlotValueOverrideProperty {
                                                        Shape = "shape",
                                                        Value = new SlotValueProperty {
                                                            InterpretedValue = "interpretedValue"
                                                        },
                                                        Values = new [] { slotValueOverrideProperty_ }
                                                    }
                                                } }
                                            },
                                            SessionAttributes = new [] { new SessionAttributeProperty {
                                                Key = "key",

                                                // the properties below are optional
                                                Value = "value"
                                            } }
                                        },
                                        Response = new ResponseSpecificationProperty {
                                            MessageGroupsList = new [] { new MessageGroupProperty {
                                                Message = new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                },

                                                // the properties below are optional
                                                Variations = new [] { new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                } }
                                            } },

                                            // the properties below are optional
                                            AllowInterrupt = false
                                        }
                                    },
                                    IsActive = false
                                },
                                SuccessNextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                SuccessResponse = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                },
                                TimeoutConditional = new ConditionalSpecificationProperty {
                                    ConditionalBranches = new [] { new ConditionalBranchProperty {
                                        Condition = new ConditionProperty {
                                            ExpressionString = "expressionString"
                                        },
                                        Name = "name",
                                        NextStep = new DialogStateProperty {
                                            DialogAction = new DialogActionProperty {
                                                Type = "type",

                                                // the properties below are optional
                                                SlotToElicit = "slotToElicit",
                                                SuppressNextMessage = false
                                            },
                                            Intent = new IntentOverrideProperty {
                                                Name = "name",
                                                Slots = new [] { new SlotValueOverrideMapProperty {
                                                    SlotName = "slotName",
                                                    SlotValueOverride = new SlotValueOverrideProperty {
                                                        Shape = "shape",
                                                        Value = new SlotValueProperty {
                                                            InterpretedValue = "interpretedValue"
                                                        },
                                                        Values = new [] { slotValueOverrideProperty_ }
                                                    }
                                                } }
                                            },
                                            SessionAttributes = new [] { new SessionAttributeProperty {
                                                Key = "key",

                                                // the properties below are optional
                                                Value = "value"
                                            } }
                                        },

                                        // the properties below are optional
                                        Response = new ResponseSpecificationProperty {
                                            MessageGroupsList = new [] { new MessageGroupProperty {
                                                Message = new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                },

                                                // the properties below are optional
                                                Variations = new [] { new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                } }
                                            } },

                                            // the properties below are optional
                                            AllowInterrupt = false
                                        }
                                    } },
                                    DefaultBranch = new DefaultConditionalBranchProperty {
                                        NextStep = new DialogStateProperty {
                                            DialogAction = new DialogActionProperty {
                                                Type = "type",

                                                // the properties below are optional
                                                SlotToElicit = "slotToElicit",
                                                SuppressNextMessage = false
                                            },
                                            Intent = new IntentOverrideProperty {
                                                Name = "name",
                                                Slots = new [] { new SlotValueOverrideMapProperty {
                                                    SlotName = "slotName",
                                                    SlotValueOverride = new SlotValueOverrideProperty {
                                                        Shape = "shape",
                                                        Value = new SlotValueProperty {
                                                            InterpretedValue = "interpretedValue"
                                                        },
                                                        Values = new [] { slotValueOverrideProperty_ }
                                                    }
                                                } }
                                            },
                                            SessionAttributes = new [] { new SessionAttributeProperty {
                                                Key = "key",

                                                // the properties below are optional
                                                Value = "value"
                                            } }
                                        },
                                        Response = new ResponseSpecificationProperty {
                                            MessageGroupsList = new [] { new MessageGroupProperty {
                                                Message = new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                },

                                                // the properties below are optional
                                                Variations = new [] { new MessageProperty {
                                                    CustomPayload = new CustomPayloadProperty {
                                                        Value = "value"
                                                    },
                                                    ImageResponseCard = new ImageResponseCardProperty {
                                                        Title = "title",

                                                        // the properties below are optional
                                                        Buttons = new [] { new ButtonProperty {
                                                            Text = "text",
                                                            Value = "value"
                                                        } },
                                                        ImageUrl = "imageUrl",
                                                        Subtitle = "subtitle"
                                                    },
                                                    PlainTextMessage = new PlainTextMessageProperty {
                                                        Value = "value"
                                                    },
                                                    SsmlMessage = new SSMLMessageProperty {
                                                        Value = "value"
                                                    }
                                                } }
                                            } },

                                            // the properties below are optional
                                            AllowInterrupt = false
                                        }
                                    },
                                    IsActive = false
                                },
                                TimeoutNextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                TimeoutResponse = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            },

                            // the properties below are optional
                            InvocationLabel = "invocationLabel"
                        },
                        ElicitationCodeHook = new ElicitationCodeHookInvocationSettingProperty {
                            EnableCodeHookInvocation = false,

                            // the properties below are optional
                            InvocationLabel = "invocationLabel"
                        },
                        FailureConditional = new ConditionalSpecificationProperty {
                            ConditionalBranches = new [] { new ConditionalBranchProperty {
                                Condition = new ConditionProperty {
                                    ExpressionString = "expressionString"
                                },
                                Name = "name",
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },

                                // the properties below are optional
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            } },
                            DefaultBranch = new DefaultConditionalBranchProperty {
                                NextStep = new DialogStateProperty {
                                    DialogAction = new DialogActionProperty {
                                        Type = "type",

                                        // the properties below are optional
                                        SlotToElicit = "slotToElicit",
                                        SuppressNextMessage = false
                                    },
                                    Intent = new IntentOverrideProperty {
                                        Name = "name",
                                        Slots = new [] { new SlotValueOverrideMapProperty {
                                            SlotName = "slotName",
                                            SlotValueOverride = new SlotValueOverrideProperty {
                                                Shape = "shape",
                                                Value = new SlotValueProperty {
                                                    InterpretedValue = "interpretedValue"
                                                },
                                                Values = new [] { slotValueOverrideProperty_ }
                                            }
                                        } }
                                    },
                                    SessionAttributes = new [] { new SessionAttributeProperty {
                                        Key = "key",

                                        // the properties below are optional
                                        Value = "value"
                                    } }
                                },
                                Response = new ResponseSpecificationProperty {
                                    MessageGroupsList = new [] { new MessageGroupProperty {
                                        Message = new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        },

                                        // the properties below are optional
                                        Variations = new [] { new MessageProperty {
                                            CustomPayload = new CustomPayloadProperty {
                                                Value = "value"
                                            },
                                            ImageResponseCard = new ImageResponseCardProperty {
                                                Title = "title",

                                                // the properties below are optional
                                                Buttons = new [] { new ButtonProperty {
                                                    Text = "text",
                                                    Value = "value"
                                                } },
                                                ImageUrl = "imageUrl",
                                                Subtitle = "subtitle"
                                            },
                                            PlainTextMessage = new PlainTextMessageProperty {
                                                Value = "value"
                                            },
                                            SsmlMessage = new SSMLMessageProperty {
                                                Value = "value"
                                            }
                                        } }
                                    } },

                                    // the properties below are optional
                                    AllowInterrupt = false
                                }
                            },
                            IsActive = false
                        },
                        FailureNextStep = new DialogStateProperty {
                            DialogAction = new DialogActionProperty {
                                Type = "type",

                                // the properties below are optional
                                SlotToElicit = "slotToElicit",
                                SuppressNextMessage = false
                            },
                            Intent = new IntentOverrideProperty {
                                Name = "name",
                                Slots = new [] { new SlotValueOverrideMapProperty {
                                    SlotName = "slotName",
                                    SlotValueOverride = new SlotValueOverrideProperty {
                                        Shape = "shape",
                                        Value = new SlotValueProperty {
                                            InterpretedValue = "interpretedValue"
                                        },
                                        Values = new [] { slotValueOverrideProperty_ }
                                    }
                                } }
                            },
                            SessionAttributes = new [] { new SessionAttributeProperty {
                                Key = "key",

                                // the properties below are optional
                                Value = "value"
                            } }
                        },
                        FailureResponse = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    },
                    WaitAndContinueSpecification = new WaitAndContinueSpecificationProperty {
                        ContinueResponse = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        },
                        WaitingResponse = new ResponseSpecificationProperty {
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },

                            // the properties below are optional
                            AllowInterrupt = false
                        },

                        // the properties below are optional
                        IsActive = false,
                        StillWaitingResponse = new StillWaitingResponseSpecificationProperty {
                            FrequencyInSeconds = 123,
                            MessageGroupsList = new [] { new MessageGroupProperty {
                                Message = new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                },

                                // the properties below are optional
                                Variations = new [] { new MessageProperty {
                                    CustomPayload = new CustomPayloadProperty {
                                        Value = "value"
                                    },
                                    ImageResponseCard = new ImageResponseCardProperty {
                                        Title = "title",

                                        // the properties below are optional
                                        Buttons = new [] { new ButtonProperty {
                                            Text = "text",
                                            Value = "value"
                                        } },
                                        ImageUrl = "imageUrl",
                                        Subtitle = "subtitle"
                                    },
                                    PlainTextMessage = new PlainTextMessageProperty {
                                        Value = "value"
                                    },
                                    SsmlMessage = new SSMLMessageProperty {
                                        Value = "value"
                                    }
                                } }
                            } },
                            TimeoutInSeconds = 123,

                            // the properties below are optional
                            AllowInterrupt = false
                        }
                    }
                },

                // the properties below are optional
                Description = "description",
                MultipleValuesSetting = new MultipleValuesSettingProperty {
                    AllowMultipleValues = false
                },
                ObfuscationSetting = new ObfuscationSettingProperty {
                    ObfuscationSettingType = "obfuscationSettingType"
                }
            } }
        } },
        SlotTypes = new [] { new SlotTypeProperty {
            Name = "name",

            // the properties below are optional
            Description = "description",
            ExternalSourceSetting = new ExternalSourceSettingProperty {
                GrammarSlotTypeSetting = new GrammarSlotTypeSettingProperty {
                    Source = new GrammarSlotTypeSourceProperty {
                        S3BucketName = "s3BucketName",
                        S3ObjectKey = "s3ObjectKey",

                        // the properties below are optional
                        KmsKeyArn = "kmsKeyArn"
                    }
                }
            },
            ParentSlotTypeSignature = "parentSlotTypeSignature",
            SlotTypeValues = new [] { new SlotTypeValueProperty {
                SampleValue = new SampleValueProperty {
                    Value = "value"
                },

                // the properties below are optional
                Synonyms = new [] { new SampleValueProperty {
                    Value = "value"
                } }
            } },
            ValueSelectionSetting = new SlotValueSelectionSettingProperty {
                ResolutionStrategy = "resolutionStrategy",

                // the properties below are optional
                AdvancedRecognitionSetting = new AdvancedRecognitionSettingProperty {
                    AudioRecognitionStrategy = "audioRecognitionStrategy"
                },
                RegexFilter = new SlotValueRegexFilterProperty {
                    Pattern = "pattern"
                }
            }
        } },
        VoiceSettings = new VoiceSettingsProperty {
            VoiceId = "voiceId",

            // the properties below are optional
            Engine = "engine"
        }
    } },
    BotTags = new [] { new CfnTag {
        Key = "key",
        Value = "value"
    } },
    Description = "description",
    TestBotAliasSettings = new TestBotAliasSettingsProperty {
        BotAliasLocaleSettings = new [] { new BotAliasLocaleSettingsItemProperty {
            BotAliasLocaleSetting = new BotAliasLocaleSettingsProperty {
                Enabled = false,

                // the properties below are optional
                CodeHookSpecification = new CodeHookSpecificationProperty {
                    LambdaCodeHook = new LambdaCodeHookProperty {
                        CodeHookInterfaceVersion = "codeHookInterfaceVersion",
                        LambdaArn = "lambdaArn"
                    }
                }
            },
            LocaleId = "localeId"
        } },
        ConversationLogSettings = new ConversationLogSettingsProperty {
            AudioLogSettings = new [] { new AudioLogSettingProperty {
                Destination = new AudioLogDestinationProperty {
                    S3Bucket = new S3BucketLogDestinationProperty {
                        LogPrefix = "logPrefix",
                        S3BucketArn = "s3BucketArn",

                        // the properties below are optional
                        KmsKeyArn = "kmsKeyArn"
                    }
                },
                Enabled = false
            } },
            TextLogSettings = new [] { new TextLogSettingProperty {
                Destination = new TextLogDestinationProperty {
                    CloudWatch = new CloudWatchLogGroupLogDestinationProperty {
                        CloudWatchLogGroupArn = "cloudWatchLogGroupArn",
                        LogPrefix = "logPrefix"
                    }
                },
                Enabled = false
            } }
        },
        Description = "description",
        SentimentAnalysisSettings = sentimentAnalysisSettings
    },
    TestBotAliasTags = new [] { new CfnTag {
        Key = "key",
        Value = "value"
    } }
};

Synopsis

Constructors

CfnBotProps()

Properties

AutoBuildBotLocales

Indicates whether Amazon Lex V2 should automatically build the locales for the bot after a change.

BotFileS3Location

The Amazon S3 location of files used to import a bot.

BotLocales

A list of locales for the bot.

BotTags

A list of tags to add to the bot.

DataPrivacy

By default, data stored by Amazon Lex is encrypted.

Description

The description of the version.

IdleSessionTtlInSeconds

The time, in seconds, that Amazon Lex should keep information about a user's conversation with the bot.

Name

The name of the bot locale.

RoleArn

The Amazon Resource Name (ARN) of the IAM role used to build and run the bot.

TestBotAliasSettings

Specifies configuration settings for the alias used to test the bot.

TestBotAliasTags

A list of tags to add to the test alias for a bot.

Constructors

CfnBotProps()

public CfnBotProps()

Properties

AutoBuildBotLocales

Indicates whether Amazon Lex V2 should automatically build the locales for the bot after a change.

public object AutoBuildBotLocales { get; set; }
Property Value

System.Object

Remarks

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-autobuildbotlocales

BotFileS3Location

The Amazon S3 location of files used to import a bot.

public object BotFileS3Location { get; set; }
Property Value

System.Object

Remarks

The files must be in the import format specified in JSON format for importing and exporting in the Amazon Lex developer guide.

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-botfiles3location

BotLocales

A list of locales for the bot.

public object BotLocales { get; set; }
Property Value

System.Object

Remarks

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-botlocales

BotTags

A list of tags to add to the bot.

public object BotTags { get; set; }
Property Value

System.Object

Remarks

You can only add tags when you import a bot. You can't use the UpdateBot operation to update tags. To update tags, use the TagResource operation.

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-bottags

DataPrivacy

By default, data stored by Amazon Lex is encrypted.

public object DataPrivacy { get; set; }
Property Value

System.Object

Remarks

The DataPrivacy structure provides settings that determine how Amazon Lex handles special cases of securing the data for your bot.

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-dataprivacy

Description

The description of the version.

public string Description { get; set; }
Property Value

System.String

Remarks

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-description

IdleSessionTtlInSeconds

The time, in seconds, that Amazon Lex should keep information about a user's conversation with the bot.

public double IdleSessionTtlInSeconds { get; set; }
Property Value

System.Double

Remarks

A user interaction remains active for the amount of time specified. If no conversation occurs during this time, the session expires and Amazon Lex deletes any data provided before the timeout.

You can specify between 60 (1 minute) and 86,400 (24 hours) seconds.

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-idlesessionttlinseconds

Name

The name of the bot locale.

public string Name { get; set; }
Property Value

System.String

Remarks

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-name

RoleArn

The Amazon Resource Name (ARN) of the IAM role used to build and run the bot.

public string RoleArn { get; set; }
Property Value

System.String

Remarks

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-rolearn

TestBotAliasSettings

Specifies configuration settings for the alias used to test the bot.

public object TestBotAliasSettings { get; set; }
Property Value

System.Object

Remarks

If the TestBotAliasSettings property is not specified, the settings are configured with default values.

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-testbotaliassettings

TestBotAliasTags

A list of tags to add to the test alias for a bot.

public object TestBotAliasTags { get; set; }
Property Value

System.Object

Remarks

You can only add tags when you import a bot. You can't use the UpdateAlias operation to update tags. To update tags on the test alias, use the TagResource operation.

Link: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lex-bot.html#cfn-lex-bot-testbotaliastags

Implements

ICfnBotProps
Back to top Generated by DocFX