def get_slot_name(self): if Utils.checkKeysInDict(self.data, ['response', 'directives']): directive = self.data['response']['directives'] if directive and Utils.checkKeysInDict( directive[0], ['slotToElicit']) and directive[0]['slotToElicit']: return directive[0]['slotToElicit'] return None
def get_app_launcher_context(self): ''' 获取设备app安装列表 :return: ''' return Utils.get_dict_data_by_keys(self.data, ['context', 'AppLauncher'])
def get_location(self): if Utils.checkKeysInDict( self.data, ['context', 'System', 'user', 'userInfo', 'location', 'geo']): return self.data['context']['System']['user']['userInfo'][ 'location']['geo'] return None
def set_opration_tic(self, task_name): if self.is_should_disable(): return if task_name: self.user_event_list[task_name] = Utils.get_millisecond() self.is_event_make_pair[task_name] = False
def get_botid(self): if Utils.checkKeysInDict( self.data, ['context', 'System', 'application', 'applicationId']): return self.data['context']['System']['application'][ 'applicationId'] return None
def get_audio_player_context(self): ''' 获取设备音频播放的状态 :return: ''' return Utils.get_dict_data_by_keys(self.data, ['context', 'AudioPlayer'])
def get_audio_player_context(self): ''' 获取设备音频播放的状态 :return: ''' if Utils.checkKeysInDict(self.data, ['context', 'AudioPlayer']): return self.data['context']['AudioPlayer'] return None
def getUserInfo(self): ''' :return: ''' if Utils.checkKeysInDict(self.data, ['user_info']): return self.data['user_info'] return None
def get_app_launcher_context(self): ''' 获取设备app安装列表 :return: ''' if Utils.checkKeysInDict(self.data, ['context', 'AppLauncher']): return self.data['context']['AppLauncher'] return None
def __build_upload_data(self): sysEvent = { 'preEventList': {}, 'postEventList': {}, 'eventCostTime': self.event_cost_time, 'deviceEventCostTime': self.device_event_cost_time } timestamp = Utils.get_millisecond() retData = { 'serviceData': { 'sdkType': self.config.get_sdk_type(), 'sdkVersion': self.config.get_sdk_version(), 'requestId': self.request.get_request_id(), 'query': self.request.get_query(), 'reason': self.request.get_reson(), 'deviceId': self.request.get_device_id(), 'requestType': self.request.get_type(), 'userId': self.request.get_user_id(), 'intentName': self.request.get_intent_name(), 'sessionId': self.request.get_session_id(), 'location': self.request.get_location(), 'slotToElicit': self.response.get_slot_name(), 'shouldEndSession': self.response.get_should_end_session(), 'outputSpeech': self.response.get_output_speech(), 'reprompt': self.response.get_reprompt(), 'audioUrl': self.audio_url, 'appInfo': { 'appName': self.app_name, 'packageName': self.package_name, 'deepLink': self.deep_link }, 'requestStartTime': self.request_start_time, 'requestEndTime': self.request_end_time, 'timestamp': timestamp, 'sysEvent': sysEvent, 'userEvent': self.user_event_list } } orginData = json.dumps(retData) logging.info('数据统计原始数据:' + orginData) base64Data = str(base64.b64encode(orginData.encode('utf-8'))) # logging.info('数据统计加密数据:' + base64Data) if self.environment == 0: pkversion = 'debug' else: pkversion = 'online' return (base64Data, timestamp, pkversion)
def set_opration_toc(self, task_name): if self.is_should_disable(): return if task_name: if task_name in self.user_event_list: old_time = self.user_event_list[task_name] else: old_time = None cost_time = 0 if old_time: curr_time = Utils.get_millisecond() cost_time = curr_time - old_time self.user_event_list[task_name] = cost_time self.is_event_make_pair[task_name] = True
def __init__(self, post_data, private_key=None): if not isinstance(post_data, dict): post_data = json.loads(post_data) self.data = post_data self.request_start_time = Utils.get_millisecond() self.request_end_time = 0 self.request = Request(post_data) self.audio_url = None self.app_name = None self.package_name = None self.deep_link = None self.event_start_time = 0 self.event_cost_time = 0 self.device_event_start_time = 0 self.device_event_cost_time = 0 self.user_event_list = {} self.is_event_make_pair = {} self.config = BotMonitorConfig() self.private_key = private_key self.environment = 0 self.enabled = False self.certificate = None self.response = None
def get_reprompt(self): return Utils.get_dict_data_by_keys( self.data, ['response', 'reprompt', 'outputSpeech'])
def is_dialog_state_completed(self): if Utils.checkKeysInDict(self.data, ['request', 'dialogState']): return self.data['request']['dialogState'] == 'COMPLETED' return False
def get_reson(self): return Utils.get_dict_data_by_keys(self.data, ['request', 'reason'])
def getLocation(self): return Utils.getDictDataByKeys( self.data, ['context', 'System', 'user', 'userInfo', 'location', 'geo'])
def getUserId(self): return Utils.getDictDataByKeys(self.data, ['context', 'System', 'user', 'userId'])
def get_bot_id(self): return Utils.get_dict_data_by_keys( self.data, ['context', 'System', 'application', 'applicationId'])
def get_request_id(self): return Utils.get_dict_data_by_keys(self.data, ['request', 'requestId'])
def set_response_data(self, response_data): if self.is_should_disable(): return self.request_end_time = Utils.get_millisecond() self.response = Response(response_data)
def get_session_id(self): return Utils.get_dict_data_by_keys(self.data, ['session', 'sessionId'])
def set_event_start(self): if self.is_should_disable(): return self.event_start_time = Utils.get_millisecond()
def get_device_id(self): return Utils.get_dict_data_by_keys( self.data, ['context', 'System', 'device', 'deviceId'])
def get_user_info(self): ''' :return: ''' return Utils.get_dict_data_by_keys(self.data, ['user_info'])
def set_device_event_end(self): if self.is_should_disable(): return self.device_event_cost_time = Utils.get_millisecond( ) - self.device_event_start_time
def get_location(self): return Utils.get_dict_data_by_keys( self.data, ['context', 'System', 'user', 'userInfo', 'location', 'geo'])
def get_user_id(self): return Utils.get_dict_data_by_keys( self.data, ['context', 'System', 'user', 'userId'])
def get_output_speech(self): return Utils.get_dict_data_by_keys(self.data, ['response', 'outputSpeech'])
def get_timestamp(self): return Utils.get_dict_data_by_keys(self.data, ['request', 'timestamp'])
def get_should_end_session(self): return Utils.get_dict_data_by_keys(self.data, ['response', 'shouldEndSession'])