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)
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)
def set_last_handler_bot(self, name): self.__state['bot'] = name redis_store.set(self.__key, pickle.dumps(self.__state))
def set_q(self, value): self.__state['q'] = value redis_store.set(self.__key, pickle.dumps(self.__state))
def set_last_active(self, d): self.__state['last_active'] = d redis_store.set(self.__key, pickle.dumps(self.__state))
def set_chinese(self, value): self.__state['query_chinese'] = value redis_store.set(self.__key, pickle.dumps(self.__state))
def set_english(self, value): self.__state['query_english'] = value redis_store.set(self.__key, pickle.dumps(self.__state))
def set_status(self, status): self.__state['status'] = status redis_store.set(self.__key, pickle.dumps(self.__state))