class_docstr: Orchestrates delivery of alerts to the appropriate dispatchers.
class_docstr_tok: ["Orchestrates","delivery","of","alerts","to","the","appropriate","dispatchers","."]
docstr: Create a dispatcher for the given output.
  
  Args:
      output (str): Alert output, e.g. "aws-sns:topic-name"
  
  Returns:
      OutputDispatcher: Based on the output type.
          Returns None if the output is invalid or not defined in the config.
docstr_tok: ["Create","a","dispatcher","for","the","given","output",".","Args",":","output","(","str",")",":","Alert","output",",","e.g",".","``","aws-sns",":","topic-name","''","Returns",":","OutputDispatcher",":","Based","on","the","output","type",".","Returns","None","if","the","output","is","invalid","or","not","defined","in","the","config","."]
code: def _create_dispatcher(self, output):
      """Create a dispatcher for the given output.
  
      Args:
          output (str): Alert output, e.g. "aws-sns:topic-name"
  
      Returns:
          OutputDispatcher: Based on the output type.
              Returns None if the output is invalid or not defined in the config.
      """
      try:
          service, descriptor = output.split(":")
      except ValueError:
          LOGGER.error(
              "Improperly formatted output [%s]. Outputs for rules must "
              "be declared with both a service and a descriptor for the "
              "integration (ie: 'slack:my_channel')",
              output,
          )
          return None
  
      if (
          service not in self.config
          or descriptor not in self.config[service]
      ):
          LOGGER.error("The output '%s' does not exist!", output)
          return None
  
      return StreamAlertOutput.create_dispatcher(service, self.config)
  
file_path: streamalert/streamalert/alert_processor/main.py
imports: from os import environ
  import backoff
  from botocore.exceptions import ClientError
  from streamalert.alert_processor.outputs.output_base import StreamAlertOutput
  from streamalert.shared import backoff_handlers, resources
  from streamalert.shared.alert import Alert, AlertCreationError
  from streamalert.shared.alert_table import AlertTable
  from streamalert.shared.config import load_config
  from streamalert.shared.logger import get_logger
  from streamalert.shared.normalize import Normalizer
label_desc: Use image node_id 3 for calling the AlertProcessor obj's underlying member method code with example usage: obj._create_dispatcher(output) and returns: StreamAlertOutput, None, None