class_docstr: Abstract Parser class to be inherited by all StreamAlert Parsers
class_docstr_tok: ["Abstract","Parser","class","to","be","inherited","by","all","StreamAlert","Parsers"]
docstr: Extract envelope key/values from the original payload
  
  Args:
      payload (dict): The original record to pull envelope keys from
  
  Returns:
      dict: Key/values extracted from the log to be used as the envelope
docstr_tok: ["Extract","envelope","key\/values","from","the","original","payload","Args",":","payload","(","dict",")",":","The","original","record","to","pull","envelope","keys","from","Returns",":","dict",":","Key\/values","extracted","from","the","log","to","be","used","as","the","envelope"]
code: def _extract_envelope(self, payload):
      """Extract envelope key/values from the original payload
  
      Args:
          payload (dict): The original record to pull envelope keys from
  
      Returns:
          dict: Key/values extracted from the log to be used as the envelope
      """
      if not self._envelope_schema:
          return
  
      LOGGER.debug("Extracting envelope keys")
      return {
          key: payload[key]
          for key in self._envelope_schema
          if key
          in payload  # This is fine since some of these may be optional
      }
  
imports: from abc import ABCMeta, abstractmethod
  from copy import deepcopy
  import csv
  from fnmatch import fnmatch
  import json
  import logging
  import re
  import io
  import jmespath
  from streamalert.shared.logger import get_logger
label_desc: Use image node_id 24 for calling the ParserBase obj's underlying member method code with example usage: obj._extract_envelope(payload) and returns: unknown