docs: def message(self,
                  assistant_id,
                  session_id,
                  input=None,
                  context=None,
                  **kwargs):
          """
          Send user input to assistant.
  
          Send user input to an assistant and receive a response.
          There is no rate limit for this operation.
  
          :param str assistant_id: Unique identifier of the assistant. You can find the
          assistant ID of an assistant on the **Assistants** tab of the Watson Assistant
          tool. For information about creating assistants, see the
          [documentation](https://console.bluemix.net/docs/services/assistant/assistant-add.html#assistant-add-task).
          **Note:** Currently, the v2 API does not support creating assistants.
          :param str session_id: Unique identifier of the session.
          :param MessageInput input: An input object that includes the input text.
          :param MessageContext context: State information for the conversation. The context
          is stored by the assistant on a per-session basis. You can use this property to
          set or modify context variables, which can also be accessed by dialog nodes.
          :param dict headers: A `dict` containing the request headers
          :return: A `DetailedResponse` containing the result, headers and HTTP status code.
          :rtype: DetailedResponse
          """
  
          if assistant_id is None:
              raise ValueError('assistant_id must be provided')
          if session_id is None:
              raise ValueError('session_id must be provided')
          if input is not None:
              input = self._convert_model(input, MessageInput)
          if context is not None:
              context = self._convert_model(context, MessageContext)
  
          headers = {}
          if 'headers' in kwargs:
              headers.update(kwargs.get('headers'))
          sdk_headers = get_sdk_headers('conversation', 'V2', 'message')
          headers.update(sdk_headers)
  
          params = {'version': self.version}
  
          data = {'input': input, 'context': context}
  
          url = '/v2/assistants/{0}/sessions/{1}/message'.format(
              *self._encode_path_vars(assistant_id, session_id))
          response = self.request(
              method='POST',
              url=url,
              headers=headers,
              params=params,
              json=data,
              accept_json=True)
          return response