/*
* Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
*  http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

#pragma once
#include <aws/lex/LexRuntimeService_EXPORTS.h>
#include <aws/core/utils/stream/ResponseStream.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/lex/model/MessageFormatType.h>
#include <aws/lex/model/DialogState.h>
#include <aws/core/utils/Array.h>
#include <utility>

namespace Aws
{
template<typename RESULT_TYPE>
class AmazonWebServiceResult;

namespace LexRuntimeService
{
namespace Model
{
  class AWS_LEXRUNTIMESERVICE_API PutSessionResult
  {
  public:
    PutSessionResult();
    //We have to define these because Microsoft doesn't auto generate them
    PutSessionResult(PutSessionResult&&);
    PutSessionResult& operator=(PutSessionResult&&);
    //we delete these because Microsoft doesn't handle move generation correctly
    //and we therefore don't trust them to get it right here either.
    PutSessionResult(const PutSessionResult&) = delete;
    PutSessionResult& operator=(const PutSessionResult&) = delete;


    PutSessionResult(Aws::AmazonWebServiceResult<Aws::Utils::Stream::ResponseStream>&& result);
    PutSessionResult& operator=(Aws::AmazonWebServiceResult<Aws::Utils::Stream::ResponseStream>&& result);



    /**
     * <p>Content type as specified in the <code>Accept</code> HTTP header in the
     * request.</p>
     */
    inline const Aws::String& GetContentType() const{ return m_contentType; }

    /**
     * <p>Content type as specified in the <code>Accept</code> HTTP header in the
     * request.</p>
     */
    inline void SetContentType(const Aws::String& value) { m_contentType = value; }

    /**
     * <p>Content type as specified in the <code>Accept</code> HTTP header in the
     * request.</p>
     */
    inline void SetContentType(Aws::String&& value) { m_contentType = std::move(value); }

    /**
     * <p>Content type as specified in the <code>Accept</code> HTTP header in the
     * request.</p>
     */
    inline void SetContentType(const char* value) { m_contentType.assign(value); }

    /**
     * <p>Content type as specified in the <code>Accept</code> HTTP header in the
     * request.</p>
     */
    inline PutSessionResult& WithContentType(const Aws::String& value) { SetContentType(value); return *this;}

    /**
     * <p>Content type as specified in the <code>Accept</code> HTTP header in the
     * request.</p>
     */
    inline PutSessionResult& WithContentType(Aws::String&& value) { SetContentType(std::move(value)); return *this;}

    /**
     * <p>Content type as specified in the <code>Accept</code> HTTP header in the
     * request.</p>
     */
    inline PutSessionResult& WithContentType(const char* value) { SetContentType(value); return *this;}


    /**
     * <p>The name of the current intent.</p>
     */
    inline const Aws::String& GetIntentName() const{ return m_intentName; }

    /**
     * <p>The name of the current intent.</p>
     */
    inline void SetIntentName(const Aws::String& value) { m_intentName = value; }

    /**
     * <p>The name of the current intent.</p>
     */
    inline void SetIntentName(Aws::String&& value) { m_intentName = std::move(value); }

    /**
     * <p>The name of the current intent.</p>
     */
    inline void SetIntentName(const char* value) { m_intentName.assign(value); }

    /**
     * <p>The name of the current intent.</p>
     */
    inline PutSessionResult& WithIntentName(const Aws::String& value) { SetIntentName(value); return *this;}

    /**
     * <p>The name of the current intent.</p>
     */
    inline PutSessionResult& WithIntentName(Aws::String&& value) { SetIntentName(std::move(value)); return *this;}

    /**
     * <p>The name of the current intent.</p>
     */
    inline PutSessionResult& WithIntentName(const char* value) { SetIntentName(value); return *this;}


    /**
     * <p>Map of zero or more intent slots Amazon Lex detected from the user input
     * during the conversation.</p> <p>Amazon Lex creates a resolution list containing
     * likely values for a slot. The value that it returns is determined by the
     * <code>valueSelectionStrategy</code> selected when the slot type was created or
     * updated. If <code>valueSelectionStrategy</code> is set to
     * <code>ORIGINAL_VALUE</code>, the value provided by the user is returned, if the
     * user value is similar to the slot values. If <code>valueSelectionStrategy</code>
     * is set to <code>TOP_RESOLUTION</code> Amazon Lex returns the first value in the
     * resolution list or, if there is no resolution list, null. If you don't specify a
     * <code>valueSelectionStrategy</code> the default is <code>ORIGINAL_VALUE</code>.
     * </p>
     */
    inline const Aws::String& GetSlots() const{ return m_slots; }

    /**
     * <p>Map of zero or more intent slots Amazon Lex detected from the user input
     * during the conversation.</p> <p>Amazon Lex creates a resolution list containing
     * likely values for a slot. The value that it returns is determined by the
     * <code>valueSelectionStrategy</code> selected when the slot type was created or
     * updated. If <code>valueSelectionStrategy</code> is set to
     * <code>ORIGINAL_VALUE</code>, the value provided by the user is returned, if the
     * user value is similar to the slot values. If <code>valueSelectionStrategy</code>
     * is set to <code>TOP_RESOLUTION</code> Amazon Lex returns the first value in the
     * resolution list or, if there is no resolution list, null. If you don't specify a
     * <code>valueSelectionStrategy</code> the default is <code>ORIGINAL_VALUE</code>.
     * </p>
     */
    inline void SetSlots(const Aws::String& value) { m_slots = value; }

    /**
     * <p>Map of zero or more intent slots Amazon Lex detected from the user input
     * during the conversation.</p> <p>Amazon Lex creates a resolution list containing
     * likely values for a slot. The value that it returns is determined by the
     * <code>valueSelectionStrategy</code> selected when the slot type was created or
     * updated. If <code>valueSelectionStrategy</code> is set to
     * <code>ORIGINAL_VALUE</code>, the value provided by the user is returned, if the
     * user value is similar to the slot values. If <code>valueSelectionStrategy</code>
     * is set to <code>TOP_RESOLUTION</code> Amazon Lex returns the first value in the
     * resolution list or, if there is no resolution list, null. If you don't specify a
     * <code>valueSelectionStrategy</code> the default is <code>ORIGINAL_VALUE</code>.
     * </p>
     */
    inline void SetSlots(Aws::String&& value) { m_slots = std::move(value); }

    /**
     * <p>Map of zero or more intent slots Amazon Lex detected from the user input
     * during the conversation.</p> <p>Amazon Lex creates a resolution list containing
     * likely values for a slot. The value that it returns is determined by the
     * <code>valueSelectionStrategy</code> selected when the slot type was created or
     * updated. If <code>valueSelectionStrategy</code> is set to
     * <code>ORIGINAL_VALUE</code>, the value provided by the user is returned, if the
     * user value is similar to the slot values. If <code>valueSelectionStrategy</code>
     * is set to <code>TOP_RESOLUTION</code> Amazon Lex returns the first value in the
     * resolution list or, if there is no resolution list, null. If you don't specify a
     * <code>valueSelectionStrategy</code> the default is <code>ORIGINAL_VALUE</code>.
     * </p>
     */
    inline void SetSlots(const char* value) { m_slots.assign(value); }

    /**
     * <p>Map of zero or more intent slots Amazon Lex detected from the user input
     * during the conversation.</p> <p>Amazon Lex creates a resolution list containing
     * likely values for a slot. The value that it returns is determined by the
     * <code>valueSelectionStrategy</code> selected when the slot type was created or
     * updated. If <code>valueSelectionStrategy</code> is set to
     * <code>ORIGINAL_VALUE</code>, the value provided by the user is returned, if the
     * user value is similar to the slot values. If <code>valueSelectionStrategy</code>
     * is set to <code>TOP_RESOLUTION</code> Amazon Lex returns the first value in the
     * resolution list or, if there is no resolution list, null. If you don't specify a
     * <code>valueSelectionStrategy</code> the default is <code>ORIGINAL_VALUE</code>.
     * </p>
     */
    inline PutSessionResult& WithSlots(const Aws::String& value) { SetSlots(value); return *this;}

    /**
     * <p>Map of zero or more intent slots Amazon Lex detected from the user input
     * during the conversation.</p> <p>Amazon Lex creates a resolution list containing
     * likely values for a slot. The value that it returns is determined by the
     * <code>valueSelectionStrategy</code> selected when the slot type was created or
     * updated. If <code>valueSelectionStrategy</code> is set to
     * <code>ORIGINAL_VALUE</code>, the value provided by the user is returned, if the
     * user value is similar to the slot values. If <code>valueSelectionStrategy</code>
     * is set to <code>TOP_RESOLUTION</code> Amazon Lex returns the first value in the
     * resolution list or, if there is no resolution list, null. If you don't specify a
     * <code>valueSelectionStrategy</code> the default is <code>ORIGINAL_VALUE</code>.
     * </p>
     */
    inline PutSessionResult& WithSlots(Aws::String&& value) { SetSlots(std::move(value)); return *this;}

    /**
     * <p>Map of zero or more intent slots Amazon Lex detected from the user input
     * during the conversation.</p> <p>Amazon Lex creates a resolution list containing
     * likely values for a slot. The value that it returns is determined by the
     * <code>valueSelectionStrategy</code> selected when the slot type was created or
     * updated. If <code>valueSelectionStrategy</code> is set to
     * <code>ORIGINAL_VALUE</code>, the value provided by the user is returned, if the
     * user value is similar to the slot values. If <code>valueSelectionStrategy</code>
     * is set to <code>TOP_RESOLUTION</code> Amazon Lex returns the first value in the
     * resolution list or, if there is no resolution list, null. If you don't specify a
     * <code>valueSelectionStrategy</code> the default is <code>ORIGINAL_VALUE</code>.
     * </p>
     */
    inline PutSessionResult& WithSlots(const char* value) { SetSlots(value); return *this;}


    /**
     * <p>Map of key/value pairs representing session-specific context information.</p>
     */
    inline const Aws::String& GetSessionAttributes() const{ return m_sessionAttributes; }

    /**
     * <p>Map of key/value pairs representing session-specific context information.</p>
     */
    inline void SetSessionAttributes(const Aws::String& value) { m_sessionAttributes = value; }

    /**
     * <p>Map of key/value pairs representing session-specific context information.</p>
     */
    inline void SetSessionAttributes(Aws::String&& value) { m_sessionAttributes = std::move(value); }

    /**
     * <p>Map of key/value pairs representing session-specific context information.</p>
     */
    inline void SetSessionAttributes(const char* value) { m_sessionAttributes.assign(value); }

    /**
     * <p>Map of key/value pairs representing session-specific context information.</p>
     */
    inline PutSessionResult& WithSessionAttributes(const Aws::String& value) { SetSessionAttributes(value); return *this;}

    /**
     * <p>Map of key/value pairs representing session-specific context information.</p>
     */
    inline PutSessionResult& WithSessionAttributes(Aws::String&& value) { SetSessionAttributes(std::move(value)); return *this;}

    /**
     * <p>Map of key/value pairs representing session-specific context information.</p>
     */
    inline PutSessionResult& WithSessionAttributes(const char* value) { SetSessionAttributes(value); return *this;}


    /**
     * <p>The next message that should be presented to the user.</p>
     */
    inline const Aws::String& GetMessage() const{ return m_message; }

    /**
     * <p>The next message that should be presented to the user.</p>
     */
    inline void SetMessage(const Aws::String& value) { m_message = value; }

    /**
     * <p>The next message that should be presented to the user.</p>
     */
    inline void SetMessage(Aws::String&& value) { m_message = std::move(value); }

    /**
     * <p>The next message that should be presented to the user.</p>
     */
    inline void SetMessage(const char* value) { m_message.assign(value); }

    /**
     * <p>The next message that should be presented to the user.</p>
     */
    inline PutSessionResult& WithMessage(const Aws::String& value) { SetMessage(value); return *this;}

    /**
     * <p>The next message that should be presented to the user.</p>
     */
    inline PutSessionResult& WithMessage(Aws::String&& value) { SetMessage(std::move(value)); return *this;}

    /**
     * <p>The next message that should be presented to the user.</p>
     */
    inline PutSessionResult& WithMessage(const char* value) { SetMessage(value); return *this;}


    /**
     * <p>The format of the response message. One of the following values:</p> <ul>
     * <li> <p> <code>PlainText</code> - The message contains plain UTF-8 text.</p>
     * </li> <li> <p> <code>CustomPayload</code> - The message is a custom format for
     * the client.</p> </li> <li> <p> <code>SSML</code> - The message contains text
     * formatted for voice output.</p> </li> <li> <p> <code>Composite</code> - The
     * message contains an escaped JSON object containing one or more messages from the
     * groups that messages were assigned to when the intent was created.</p> </li>
     * </ul>
     */
    inline const MessageFormatType& GetMessageFormat() const{ return m_messageFormat; }

    /**
     * <p>The format of the response message. One of the following values:</p> <ul>
     * <li> <p> <code>PlainText</code> - The message contains plain UTF-8 text.</p>
     * </li> <li> <p> <code>CustomPayload</code> - The message is a custom format for
     * the client.</p> </li> <li> <p> <code>SSML</code> - The message contains text
     * formatted for voice output.</p> </li> <li> <p> <code>Composite</code> - The
     * message contains an escaped JSON object containing one or more messages from the
     * groups that messages were assigned to when the intent was created.</p> </li>
     * </ul>
     */
    inline void SetMessageFormat(const MessageFormatType& value) { m_messageFormat = value; }

    /**
     * <p>The format of the response message. One of the following values:</p> <ul>
     * <li> <p> <code>PlainText</code> - The message contains plain UTF-8 text.</p>
     * </li> <li> <p> <code>CustomPayload</code> - The message is a custom format for
     * the client.</p> </li> <li> <p> <code>SSML</code> - The message contains text
     * formatted for voice output.</p> </li> <li> <p> <code>Composite</code> - The
     * message contains an escaped JSON object containing one or more messages from the
     * groups that messages were assigned to when the intent was created.</p> </li>
     * </ul>
     */
    inline void SetMessageFormat(MessageFormatType&& value) { m_messageFormat = std::move(value); }

    /**
     * <p>The format of the response message. One of the following values:</p> <ul>
     * <li> <p> <code>PlainText</code> - The message contains plain UTF-8 text.</p>
     * </li> <li> <p> <code>CustomPayload</code> - The message is a custom format for
     * the client.</p> </li> <li> <p> <code>SSML</code> - The message contains text
     * formatted for voice output.</p> </li> <li> <p> <code>Composite</code> - The
     * message contains an escaped JSON object containing one or more messages from the
     * groups that messages were assigned to when the intent was created.</p> </li>
     * </ul>
     */
    inline PutSessionResult& WithMessageFormat(const MessageFormatType& value) { SetMessageFormat(value); return *this;}

    /**
     * <p>The format of the response message. One of the following values:</p> <ul>
     * <li> <p> <code>PlainText</code> - The message contains plain UTF-8 text.</p>
     * </li> <li> <p> <code>CustomPayload</code> - The message is a custom format for
     * the client.</p> </li> <li> <p> <code>SSML</code> - The message contains text
     * formatted for voice output.</p> </li> <li> <p> <code>Composite</code> - The
     * message contains an escaped JSON object containing one or more messages from the
     * groups that messages were assigned to when the intent was created.</p> </li>
     * </ul>
     */
    inline PutSessionResult& WithMessageFormat(MessageFormatType&& value) { SetMessageFormat(std::move(value)); return *this;}


    /**
     * <p/> <ul> <li> <p> <code>ConfirmIntent</code> - Amazon Lex is expecting a "yes"
     * or "no" response to confirm the intent before fulfilling an intent.</p> </li>
     * <li> <p> <code>ElicitIntent</code> - Amazon Lex wants to elicit the user's
     * intent.</p> </li> <li> <p> <code>ElicitSlot</code> - Amazon Lex is expecting the
     * value of a slot for the current intent.</p> </li> <li> <p> <code>Failed</code> -
     * Conveys that the conversation with the user has failed. This can happen for
     * various reasons, including the user does not provide an appropriate response to
     * prompts from the service, or if the Lambda function fails to fulfill the
     * intent.</p> </li> <li> <p> <code>Fulfilled</code> - Conveys that the Lambda
     * function has sucessfully fulfilled the intent.</p> </li> <li> <p>
     * <code>ReadyForFulfillment</code> - Conveys that the client has to fulfill the
     * intent.</p> </li> </ul>
     */
    inline const DialogState& GetDialogState() const{ return m_dialogState; }

    /**
     * <p/> <ul> <li> <p> <code>ConfirmIntent</code> - Amazon Lex is expecting a "yes"
     * or "no" response to confirm the intent before fulfilling an intent.</p> </li>
     * <li> <p> <code>ElicitIntent</code> - Amazon Lex wants to elicit the user's
     * intent.</p> </li> <li> <p> <code>ElicitSlot</code> - Amazon Lex is expecting the
     * value of a slot for the current intent.</p> </li> <li> <p> <code>Failed</code> -
     * Conveys that the conversation with the user has failed. This can happen for
     * various reasons, including the user does not provide an appropriate response to
     * prompts from the service, or if the Lambda function fails to fulfill the
     * intent.</p> </li> <li> <p> <code>Fulfilled</code> - Conveys that the Lambda
     * function has sucessfully fulfilled the intent.</p> </li> <li> <p>
     * <code>ReadyForFulfillment</code> - Conveys that the client has to fulfill the
     * intent.</p> </li> </ul>
     */
    inline void SetDialogState(const DialogState& value) { m_dialogState = value; }

    /**
     * <p/> <ul> <li> <p> <code>ConfirmIntent</code> - Amazon Lex is expecting a "yes"
     * or "no" response to confirm the intent before fulfilling an intent.</p> </li>
     * <li> <p> <code>ElicitIntent</code> - Amazon Lex wants to elicit the user's
     * intent.</p> </li> <li> <p> <code>ElicitSlot</code> - Amazon Lex is expecting the
     * value of a slot for the current intent.</p> </li> <li> <p> <code>Failed</code> -
     * Conveys that the conversation with the user has failed. This can happen for
     * various reasons, including the user does not provide an appropriate response to
     * prompts from the service, or if the Lambda function fails to fulfill the
     * intent.</p> </li> <li> <p> <code>Fulfilled</code> - Conveys that the Lambda
     * function has sucessfully fulfilled the intent.</p> </li> <li> <p>
     * <code>ReadyForFulfillment</code> - Conveys that the client has to fulfill the
     * intent.</p> </li> </ul>
     */
    inline void SetDialogState(DialogState&& value) { m_dialogState = std::move(value); }

    /**
     * <p/> <ul> <li> <p> <code>ConfirmIntent</code> - Amazon Lex is expecting a "yes"
     * or "no" response to confirm the intent before fulfilling an intent.</p> </li>
     * <li> <p> <code>ElicitIntent</code> - Amazon Lex wants to elicit the user's
     * intent.</p> </li> <li> <p> <code>ElicitSlot</code> - Amazon Lex is expecting the
     * value of a slot for the current intent.</p> </li> <li> <p> <code>Failed</code> -
     * Conveys that the conversation with the user has failed. This can happen for
     * various reasons, including the user does not provide an appropriate response to
     * prompts from the service, or if the Lambda function fails to fulfill the
     * intent.</p> </li> <li> <p> <code>Fulfilled</code> - Conveys that the Lambda
     * function has sucessfully fulfilled the intent.</p> </li> <li> <p>
     * <code>ReadyForFulfillment</code> - Conveys that the client has to fulfill the
     * intent.</p> </li> </ul>
     */
    inline PutSessionResult& WithDialogState(const DialogState& value) { SetDialogState(value); return *this;}

    /**
     * <p/> <ul> <li> <p> <code>ConfirmIntent</code> - Amazon Lex is expecting a "yes"
     * or "no" response to confirm the intent before fulfilling an intent.</p> </li>
     * <li> <p> <code>ElicitIntent</code> - Amazon Lex wants to elicit the user's
     * intent.</p> </li> <li> <p> <code>ElicitSlot</code> - Amazon Lex is expecting the
     * value of a slot for the current intent.</p> </li> <li> <p> <code>Failed</code> -
     * Conveys that the conversation with the user has failed. This can happen for
     * various reasons, including the user does not provide an appropriate response to
     * prompts from the service, or if the Lambda function fails to fulfill the
     * intent.</p> </li> <li> <p> <code>Fulfilled</code> - Conveys that the Lambda
     * function has sucessfully fulfilled the intent.</p> </li> <li> <p>
     * <code>ReadyForFulfillment</code> - Conveys that the client has to fulfill the
     * intent.</p> </li> </ul>
     */
    inline PutSessionResult& WithDialogState(DialogState&& value) { SetDialogState(std::move(value)); return *this;}


    /**
     * <p>If the <code>dialogState</code> is <code>ElicitSlot</code>, returns the name
     * of the slot for which Amazon Lex is eliciting a value.</p>
     */
    inline const Aws::String& GetSlotToElicit() const{ return m_slotToElicit; }

    /**
     * <p>If the <code>dialogState</code> is <code>ElicitSlot</code>, returns the name
     * of the slot for which Amazon Lex is eliciting a value.</p>
     */
    inline void SetSlotToElicit(const Aws::String& value) { m_slotToElicit = value; }

    /**
     * <p>If the <code>dialogState</code> is <code>ElicitSlot</code>, returns the name
     * of the slot for which Amazon Lex is eliciting a value.</p>
     */
    inline void SetSlotToElicit(Aws::String&& value) { m_slotToElicit = std::move(value); }

    /**
     * <p>If the <code>dialogState</code> is <code>ElicitSlot</code>, returns the name
     * of the slot for which Amazon Lex is eliciting a value.</p>
     */
    inline void SetSlotToElicit(const char* value) { m_slotToElicit.assign(value); }

    /**
     * <p>If the <code>dialogState</code> is <code>ElicitSlot</code>, returns the name
     * of the slot for which Amazon Lex is eliciting a value.</p>
     */
    inline PutSessionResult& WithSlotToElicit(const Aws::String& value) { SetSlotToElicit(value); return *this;}

    /**
     * <p>If the <code>dialogState</code> is <code>ElicitSlot</code>, returns the name
     * of the slot for which Amazon Lex is eliciting a value.</p>
     */
    inline PutSessionResult& WithSlotToElicit(Aws::String&& value) { SetSlotToElicit(std::move(value)); return *this;}

    /**
     * <p>If the <code>dialogState</code> is <code>ElicitSlot</code>, returns the name
     * of the slot for which Amazon Lex is eliciting a value.</p>
     */
    inline PutSessionResult& WithSlotToElicit(const char* value) { SetSlotToElicit(value); return *this;}


    /**
     * <p>The audio version of the message to convey to the user.</p>
     */
    inline Aws::IOStream& GetAudioStream() { return m_audioStream.GetUnderlyingStream(); }

    /**
     * <p>The audio version of the message to convey to the user.</p>
     */
    inline void ReplaceBody(Aws::IOStream* body) { m_audioStream = Aws::Utils::Stream::ResponseStream(body); }


    /**
     * <p>A unique identifier for the session.</p>
     */
    inline const Aws::String& GetSessionId() const{ return m_sessionId; }

    /**
     * <p>A unique identifier for the session.</p>
     */
    inline void SetSessionId(const Aws::String& value) { m_sessionId = value; }

    /**
     * <p>A unique identifier for the session.</p>
     */
    inline void SetSessionId(Aws::String&& value) { m_sessionId = std::move(value); }

    /**
     * <p>A unique identifier for the session.</p>
     */
    inline void SetSessionId(const char* value) { m_sessionId.assign(value); }

    /**
     * <p>A unique identifier for the session.</p>
     */
    inline PutSessionResult& WithSessionId(const Aws::String& value) { SetSessionId(value); return *this;}

    /**
     * <p>A unique identifier for the session.</p>
     */
    inline PutSessionResult& WithSessionId(Aws::String&& value) { SetSessionId(std::move(value)); return *this;}

    /**
     * <p>A unique identifier for the session.</p>
     */
    inline PutSessionResult& WithSessionId(const char* value) { SetSessionId(value); return *this;}

  private:

    Aws::String m_contentType;

    Aws::String m_intentName;

    Aws::String m_slots;

    Aws::String m_sessionAttributes;

    Aws::String m_message;

    MessageFormatType m_messageFormat;

    DialogState m_dialogState;

    Aws::String m_slotToElicit;

  Aws::Utils::Stream::ResponseStream m_audioStream;

    Aws::String m_sessionId;
  };

} // namespace Model
} // namespace LexRuntimeService
} // namespace Aws
