class_docstr: Container for data that can be used to describe a conversation turn.
  
  The turn is described by a set of attributes such as e.g. `TEXT`  and  `INTENT`
  when describing a user utterance or e.g. `ACTION_NAME` for describing a bot action.
  The container includes raw information (`self.data`) as well as features
  (`self.features`) for each such attribute.
  Moreover, the message has a timestamp and can keep track about information
  on a specific subset of attributes (`self.output_properties`).
docstr: Builds a Message from `UserUttered` data.
  
  Args:
      text: text of a user's utterance
      intent: an intent of the user utterance
      entities: entities in the user's utterance
      intent_metadata: optional metadata for the intent
      example_metadata: optional metadata for the intent example
  
  Returns:
      Message
docstr_tok: ["Builds","a","Message","from","`","UserUttered","`","data",".","Args",":","text",":","text","of","a","user","'s","utterance","intent",":","an","intent","of","the","user","utterance","entities",":","entities","in","the","user","'s","utterance","intent_metadata",":","optional","metadata","for","the","intent","example_metadata",":","optional","metadata","for","the","intent","example","Returns",":","Message"]
code: def build(
      cls,
      text: Text,
      intent: Optional[Text] = None,
      entities: Optional[List[Dict[Text, Any]]] = None,
      intent_metadata: Optional[Any] = None,
      example_metadata: Optional[Any] = None,
      **kwargs: Any,
  ) -> "Message":
      """Builds a Message from `UserUttered` data.
  
      Args:
          text: text of a user's utterance
          intent: an intent of the user utterance
          entities: entities in the user's utterance
          intent_metadata: optional metadata for the intent
          example_metadata: optional metadata for the intent example
  
      Returns:
          Message
      """
      data: Dict[Text, Any] = {TEXT: text}
      if intent:
          split_intent, response_key = cls.separate_intent_response_key(
              intent
          )
          if split_intent:
              data[INTENT] = split_intent
          if response_key:
              # intent label can be of the form - {intent}/{response_key},
              # so store the full intent label in intent_response_key
              data[INTENT_RESPONSE_KEY] = intent
      if entities:
          data[ENTITIES] = entities
      if intent_metadata is not None:
          data[METADATA] = {METADATA_INTENT: intent_metadata}
      if example_metadata is not None:
          data.setdefault(METADATA, {})[
              METADATA_EXAMPLE
          ] = example_metadata
  
      return cls(data, **kwargs)
  
imports: from typing import Any, Optional, Tuple, Text, Dict, Set, List
  import typing
  import copy
  import rasa.shared.utils.io
  from rasa.shared.exceptions import RasaException
  from rasa.shared.nlu.constants import TEXT, INTENT, RESPONSE, INTENT_RESPONSE_KEY, METADATA, METADATA_INTENT, METADATA_EXAMPLE, ENTITIES, ENTITY_ATTRIBUTE_START, ENTITY_ATTRIBUTE_END, RESPONSE_IDENTIFIER_DELIMITER, FEATURE_TYPE_SENTENCE, FEATURE_TYPE_SEQUENCE, ACTION_TEXT, ACTION_NAME, TEXT_TOKENS
  from rasa.shared.constants import DIAGNOSTIC_DATA
label_desc: Use image node_id 11 for calling the Message obj's underlying member method code with example usage: obj.build(cls, text, intent, entities, intent_metadata, example_metadata) and returns: cls