def add_control(self, control): if not Utils.checkKeyInDict(self.data, 'controls'): self.data['controls'] = [] if isinstance(control, BaseButton): self.data['controls'].append(control.get_data())
def set_lyric(self, url): if not Utils.checkKeyInDict(self.data['content'], 'lyric'): self.data['content']['lyric'] = {} self.data['content']['lyric']['url'] = url self.data['content']['lyric'][ 'format'] = AudioItemTypeEnum.FORMAT_LRC.value
def set_lyric(self, url): if isinstance(url, str): if not Utils.checkKeyInDict(self.data, 'lyric'): self.data['lyric'] = {} self.data['lyric']['url'] = url self.data['lyric']['format'] = AudioItemTypeEnum.FORMAT_LRC.value
def get_token(self): """ 获取directive的token. 默认在构造时自动生成了token :return: """ return Utils.getDictDataByKeyss(self.data, ['videoItem', 'stream', 'token'])
def get_request_query_original(self): """ 获取最原始的请求内容 :return: """ if Utils.checkKeyInDict(self.data['request'], ['query']): return self.data['request']['query']['original']
def get_user_info(self): """ 获取用户信息 :return: """ return Utils.get_dict_data_by_keys( self.data, ['context', 'System', 'user', 'userInfo'])
def get_app_launcher_context(self): """ 获取设备app安装列表 :return: """ return Utils.get_dict_data_by_keys(self.data, ['context', 'AppLauncher'])
def get_audio_player_context(self): """ 获取设备音频播放状态 :return: """ return Utils.get_dict_data_by_keys(self.data, ['context', 'AudioPlayer'])
def get_screen_token_from_context(self): """ 获取屏幕数据中的token :return: """ return Utils.get_dict_data_by_keys(self.data, ['context', 'Screen', 'token'])
def _get_register_event_handler(self): """ 根据Dueros传递来的事件,在本地查找是否注册过本事件,如果找到则返回对应的handler方法,否则返回默认的handler :see addEventListener :return: """ event_data = self._request.get_event_data() if event_data and event_data['type']: key = event_data['type'] if key is not None and Utils.checkKeyInDict(self._event, key): return self._event[key] elif Utils.checkKeyInDict(self._event, '__default__'): return self._event['__default__'] else: logging.info('request type = %s 未匹配到任何处理事件' % key) return None
def get_baidu_uid(self): """ 获取百度Id :return: """ return Utils.get_dict_data_by_keys(self.data, ['context', 'System', 'user', 'userInfo', 'account', 'baidu', 'baiduUid'])
def set_report_delay_in_ms(self, report_delay_ms): report_delay_ms = Utils.convert_number(report_delay_ms) if report_delay_ms: if 'progressReport' not in self.data['videoItem']['stream']: self.data['videoItem']['stream']['progressReport'] = {} self.data['videoItem']['stream']['progressReport'][ 'progressReportDelayInMilliseconds'] = int(report_delay_ms)
def set_repeat_count(self, repeat_count): """ 重复执行次数 :param repeat_count: :return: """ if Utils.is_numeric(repeat_count): self.data['repeatCount'] = repeat_count
def getUserInfo(self): ''' 获取用户信息 :return: ''' return Utils.getDictDataByKeys( self.data, ['context', 'System', 'user', 'userInfo'])
def get_video_player_context(self): """ 获取设备的视频播放状态 :return: """ return Utils.get_dict_data_by_keys(self.data, ['context', 'VideoPlayer'])
def set_duration_in_millisecond(self, duration): """ 设置切换间隔 :param duration: :return: """ if Utils.is_numeric(duration): self.data['durationInMillisecond'] = duration
def set_offset_in_milliseconds(self, milliseconds): """ 指定从当前offset播放视频 :param milliseconds: :return: """ milliseconds = Utils.convert_number(milliseconds) if milliseconds: self.data['videoItem']['stream']['offsetInMilliseconds'] = milliseconds
def set_delay_in_milliseconds(self, delay): """ 设置延迟时间间隔 :param delay: :return: """ if Utils.is_numeric(delay): self.data['delayInMilliseconds'] = delay
def set_duration(self, duration): """ 设置动画执行的时间 :param duration: :return: """ if Utils.is_numeric(duration): self.data['duration'] = duration
def set_value(self, value): """ 设置切换步长 :param value: :return: """ if Utils.is_numeric(value): self.data['value'] = value
def set_index(self, index): """ 设置index索引值 :param index: :return: """ if Utils.is_numeric(index): self.data['index'] = index
def get_query(self): """ 获取请求的Query :return: """ if self.request_type == 'IntentRequest' and self.data['request']['query']['original']: return Utils.get_dict_data_by_keys(self.data, ['request', 'query', 'original']) else: return ''
def set_media_length_in_ms(self, media_length_in_ms): """ :param media_length_in_ms: :return: """ media_length_in_ms = Utils.convert_number(media_length_in_ms) if media_length_in_ms: self.data['content'][ 'mediaLengthInMilliseconds'] = media_length_in_ms
def set_provider(self, name, logo): """ :param name: :param logo: :return: """ if not Utils.checkKeysInDict(self.data, ['content', 'provider']): self.data['content']['provider'] = {} if name is not None: self.data['content']['provider']['name'] = str(name) if not Utils.checkKeysInDict(self.data, ['content', 'provider', 'logo']): self.data['content']['provider']['logo'] = {} if logo is not None: self.data['content']['provider']['logo']['src'] = str(logo)
def set_art(self, src): """ :param src: :return: """ if not Utils.checkKeysInDict(self.data, ['content', 'art']): self.data['content']['art'] = {} if src is not None: self.data['content']['art']['src'] = str(src)
def __init__(self, data): """ :param data: 请求数据 """ super(Request, self).__init__() if not isinstance(data, dict): self.data = json.loads(data) else: self.data = data self.request_type = Utils.getDictDataByKeyss(self.data, ['request', 'type']) self.session = Session(self.data['session']) self.nlu = None if self.request_type == 'IntentRequest': self.nlu = Nlu( Utils.getDictDataByKeyss(self.data, ['request', 'intents'])) self.deviceData = None self.arrUserProfile = None
def getBaiduUid(self): ''' 获取百度Id :return: ''' return Utils.getDictDataByKeys(self.data, [ 'context', 'System', 'user', 'userInfo', 'account', 'baidu', 'baiduUid' ])
def set_image(self, image): """ 设置image :param image: :return: """ if image and isinstance(image, str): if not Utils.checkKeyInDict(self.data, 'image'): self.data['image'] = {} self.data['image']['src'] = {} self.data['image']['src'] = image
def _is_support_interface(self, support_func): """ 校验是否支持 :param support_func: :return: """ supported_interfaces = self._request.get_supported_interfaces() if supported_interfaces and isinstance(supported_interfaces, dict): return Utils.checkKeyInDict(supported_interfaces, support_func) else: return False
def set_progress_report_interval_ms(self, interval_ms): ''' 设置directive的属性。定时上报事件的间隔时间 :param interval_ms: 毫秒数。 :return: ''' interval_ms = Utils.convert_number(interval_ms) if interval_ms: self.data['audioItem']['stream'][ 'progressReportIntervalMs'] = interval_ms return self