Exemple #1
0
 def __init__(self, sender: SenderLogic, detect: DetectLogic,
              context: ContextLogic, suggest: SuggestLogic):
     self.sender = sender
     self.detect = detect
     self.context = context
     self.suggest = suggest
     self.context_responder = ContextResponder(sender)
Exemple #2
0
 def __init__(self, sender: SenderLogic, detect: DetectLogic, context: ContextLogic, suggest: SuggestLogic):
     self.sender = sender
     self.detect = detect
     self.context = context
     self.suggest = suggest
     self.context_responder = ContextResponder(sender)
Exemple #3
0
class NewMessageText(MessageHandler):
    logger = logging.getLogger(__name__)
    logger.setLevel(LOGGING_LEVEL)

    def __init__(self, sender: SenderLogic, detect: DetectLogic, context: ContextLogic, suggest: SuggestLogic):
        self.sender = sender
        self.detect = detect
        self.context = context
        self.suggest = suggest
        self.context_responder = ContextResponder(sender)

    def on_new_message_text(self, handler: WebSocketHandler, message: dict, new_message_text):
        self.detect.post_detect(
            handler.user_id, handler.application_id, handler.session_id, handler.locale, new_message_text,
            lambda response: self.post_detect_callback(response, handler, message)
        )

    def post_detect_callback(self, response, handler: WebSocketHandler, message: dict):
        self.logger.debug("post_detect_callback")
        self.detect.get_detect(
            response.headers["Location"],
            lambda res: self.get_detect_callback(res, handler, message)
        )

    def get_detect_callback(self, response, handler_callback: WebSocketHandler, message: dict):
        self.logger.debug("get_detect_callback")
        detection_response = self.json_decode(response.body)

        self.context.post_context_message(
            handler_callback.context_id,
            1,
            message["message_text"] if "message_text" in message else "",
            callback=lambda res: self.post_context_message_callback(res, handler_callback, message),
            detection=detection_response
        )

        detection_chat_response = self.detect.respond_to_detection_response(handler_callback, detection_response)
        if detection_chat_response is not None:
            self.sender.write_jemboo_response_message(handler_callback, detection_chat_response)

    def post_context_message_callback(self, response, handler_callback: WebSocketHandler, message: dict):
        self.logger.debug("post_context_message_callback")
        self.context.get_context(
            handler_callback,
            lambda res: self.get_context_callback(res, handler_callback, message)
        )

    def get_context_callback(self, response, handler: WebSocketHandler, message: dict):
        self.logger.debug("get_context_callback")
        handler.context = self.json_decode(response.body)
        handler.context_rev = handler.context["_rev"]

        self.context_responder.unsupported_entities(handler, handler.context)

        self.suggest.post_suggest(
            handler.user_id,
            handler.application_id,
            handler.session_id,
            handler.locale,
            handler.context,
            callback=lambda res: self.post_suggest_callback(res, handler, message)
        )

    def post_suggest_callback(self, response, handler: WebSocketHandler, message: dict):
        self.logger.debug("post_suggest_callback")
        handler.suggest_id = response.headers["_id"]
        self.suggest.write_new_suggestion(handler)
Exemple #4
0
class NewMessageText(MessageHandler):
    logger = logging.getLogger(__name__)
    logger.setLevel(LOGGING_LEVEL)

    def __init__(self, sender: SenderLogic, detect: DetectLogic,
                 context: ContextLogic, suggest: SuggestLogic):
        self.sender = sender
        self.detect = detect
        self.context = context
        self.suggest = suggest
        self.context_responder = ContextResponder(sender)

    def on_new_message_text(self, handler: WebSocketHandler, message: dict,
                            new_message_text):
        self.detect.post_detect(
            handler.user_id, handler.application_id, handler.session_id,
            handler.locale,
            new_message_text, lambda response: self.post_detect_callback(
                response, handler, message))

    def post_detect_callback(self, response, handler: WebSocketHandler,
                             message: dict):
        self.logger.debug("post_detect_callback")
        self.detect.get_detect(
            response.headers["Location"],
            lambda res: self.get_detect_callback(res, handler, message))

    def get_detect_callback(self, response, handler_callback: WebSocketHandler,
                            message: dict):
        self.logger.debug("get_detect_callback")
        detection_response = self.json_decode(response.body)

        self.context.post_context_message(
            handler_callback.context_id,
            1,
            message["message_text"] if "message_text" in message else "",
            callback=lambda res: self.post_context_message_callback(
                res, handler_callback, message),
            detection=detection_response)

        detection_chat_response = self.detect.respond_to_detection_response(
            handler_callback, detection_response)
        if detection_chat_response is not None:
            self.sender.write_jemboo_response_message(handler_callback,
                                                      detection_chat_response)

    def post_context_message_callback(self, response,
                                      handler_callback: WebSocketHandler,
                                      message: dict):
        self.logger.debug("post_context_message_callback")
        self.context.get_context(
            handler_callback, lambda res: self.get_context_callback(
                res, handler_callback, message))

    def get_context_callback(self, response, handler: WebSocketHandler,
                             message: dict):
        self.logger.debug("get_context_callback")
        handler.context = self.json_decode(response.body)
        handler.context_rev = handler.context["_rev"]

        self.context_responder.unsupported_entities(handler, handler.context)

        self.suggest.post_suggest(handler.user_id,
                                  handler.application_id,
                                  handler.session_id,
                                  handler.locale,
                                  handler.context,
                                  callback=lambda res: self.
                                  post_suggest_callback(res, handler, message))

    def post_suggest_callback(self, response, handler: WebSocketHandler,
                              message: dict):
        self.logger.debug("post_suggest_callback")
        handler.suggest_id = response.headers["_id"]
        self.suggest.write_new_suggestion(handler)