code: def invoke(self, request_envelope, context):
          # type: (RequestEnvelope, Any) -> ResponseEnvelope
          
          if (self.skill_id is not None and
                  request_envelope.context.system.application.application_id !=
                  self.skill_id):
              raise AskSdkException("Skill ID Verification failed!!")
  
          if self.api_client is not None:
              api_token = request_envelope.context.system.api_access_token
              api_endpoint = request_envelope.context.system.api_endpoint
              api_configuration = ApiConfiguration(
                  serializer=self.serializer, api_client=self.api_client,
                  authorization_value=api_token,
                  api_endpoint=api_endpoint)
              factory = ServiceClientFactory(api_configuration=api_configuration)
          else:
              factory = None
  
          attributes_manager = AttributesManager(
              request_envelope=request_envelope,
              persistence_adapter=self.persistence_adapter)
  
          handler_input = HandlerInput(
              request_envelope=request_envelope,
              attributes_manager=attributes_manager,
              context=context,
              service_client_factory=factory)
  
          response = self.request_dispatcher.dispatch(
              handler_input=handler_input)
          session_attributes = None
  
          if request_envelope.session is not None:
              session_attributes = (
                  handler_input.attributes_manager.session_attributes)
  
          return ResponseEnvelope(
              response=response, version=RESPONSE_FORMAT_VERSION,
              session_attributes=session_attributes,
              user_agent=user_agent_info(
                  sdk_version=__version__,
                  custom_user_agent=self.custom_user_agent))
docs: Invokes the dispatcher, to handle the request envelope and
          return a response envelope.
  
          :param request_envelope: Request Envelope instance containing
              request information
          :type request_envelope: RequestEnvelope
          :param context: Context passed during invocation
          :type context: Any
          :return: Response Envelope generated by handling the request
          :rtype: ResponseEnvelope