Ejemplo n.º 1
0
    def handle_message(self, msg, sender, msgbody):
        """ 處理訊息的函式。

            Keyword Arguments: 
            msg -- (dictionary) Facebook 的 Message 格式
            sender -- (string) sender_id
            msgbody -- (dictionary) 特別把 message 的部份挑出來,方便處理

            Return:
            不回傳任何東西
        """
        # 這段應該是測試的 code...
        counter = int(redis_store.get('state::counter') or '0')
        counter += 1
        print(counter)
        redis_store.set('state::counter', str(counter))

        # 檢查 sender 現在的狀態(回答問題、問問題或是提供反饋)
        # 方法是從暫存的 redis 裡頭取出關於目前這個 sender 的所有資訊
        user = UserStatus(sender)

        # 時間間隔太久,一律視為新詢問
        # tdelta = datetime.now() - user.get_last_active()
        # if tdelta.total_seconds() >= 300:
        #    user.set_status('new')
        # user.set_last_active(datetime.now())

        # 從送進來的 msg 分析, 作為 input
        parsed_msg, template_params = self.intention_detector.parse_msg(user, msgbody)

        # 執行到下一個 state
        self.state_machine.run(self.intention_bot, user, parsed_msg, **template_params)
Ejemplo n.º 2
0
    def handle_message(self, msg, sender, msgbody):
        """ 處理訊息的函式。

            Keyword Arguments: 
            msg -- (dictionary) Facebook 的 Message 格式
            sender -- (string) sender_id
            msgbody -- (dictionary) 特別把 message 的部份挑出來,方便處理

            Return:
            不回傳任何東西
        """
        # 這段應該是測試的 code...
        counter = int(redis_store.get('state::counter') or '0')
        counter += 1
        print(counter)
        redis_store.set('state::counter', str(counter))

        # 檢查 sender 現在的狀態(回答問題、問問題或是提供反饋)
        # 方法是從暫存的 redis 裡頭取出關於目前這個 sender 的所有資訊
        state = UserStatus(sender)

        # 時間間隔太久,一律視為新詢問
        tdelta = datetime.now() - state.get_last_active()
        if tdelta.total_seconds() >= 300:
            state.set_status('new')
        state.set_last_active(datetime.now())

        # 取得意圖
        intention_bot = self.intention_detector.get_intention_bot(sender, state, msgbody)

        # 處理意圖
        intention_bot.handle_message(msg, sender, state, msgbody)
Ejemplo n.º 3
0
 def set_last_handler_bot(self, name):
     self.__state['bot'] = name
     redis_store.set(self.__key, pickle.dumps(self.__state))
Ejemplo n.º 4
0
 def set_q(self, value):
     self.__state['q'] = value
     redis_store.set(self.__key, pickle.dumps(self.__state))
Ejemplo n.º 5
0
 def set_last_active(self, d):
     self.__state['last_active'] = d
     redis_store.set(self.__key, pickle.dumps(self.__state))
Ejemplo n.º 6
0
 def set_chinese(self, value):
     self.__state['query_chinese'] = value
     redis_store.set(self.__key, pickle.dumps(self.__state))
Ejemplo n.º 7
0
 def set_english(self, value):
     self.__state['query_english'] = value
     redis_store.set(self.__key, pickle.dumps(self.__state))
Ejemplo n.º 8
0
 def set_status(self, status):
     self.__state['status'] = status
     redis_store.set(self.__key, pickle.dumps(self.__state))