def set_provider(self, name, logo): if not Utils.checkKeyInDict(self.data['content'], 'provider'): self.data['content']['provider'] = {} self.data['content']['provider']['name'] = name if not Utils.checkKeyInDict(self.data['content']['provider'], 'logo'): self.data['content']['provider']['logo'] = {} self.data['content']['provider']['logo']['src'] = logo
def __get_register_event_handler(self): """ 根据request数据获取指定事件的处理函数 :return: Func/None """ 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.warning('request type = %s 未匹配到任何处理事件' % key) return None
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_request_query_original(self): """ 获取最原始的请求内容 :return: """ if Utils.checkKeyInDict(self.data['request'], ['query']): return self.data['request']['query']['original']
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 _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 _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_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 set_controls(self, controls): if not Utils.checkKeyInDict(self.data, 'controls'): self.data['controls'] = [] if isinstance(controls, BaseButton): self.data['controls'].append(controls.get_data()) if type(controls) == list: for control in controls: self.data['controls'].append(control.get_data())
def __is_support_interface(self, support_func): """ 校验客户端是否支持某些特性 :param support_func: Display、AudioPlayer、VideoPlayer :return: True:支持; False:不支持 """ 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_plain_secondary_text(self, secondary_text): """ 设置二级标题 :param secondary_text: :return: """ if not Utils.checkKeyInDict(self.data, 'textContent'): self.data['textContent'] = {} secondary_text_structure = self.create_text_structure( secondary_text, TextType.PLAIN_TEXT) if secondary_text_structure: self.data['textContent'][ 'secondaryText'] = secondary_text_structure.get_data()
def set_tertiary_text(self, tertiary_text): """ 设置三级标题 :param tertiary_text: :return: """ if not Utils.checkKeyInDict(self.data, 'textContent'): self.data['textContent'] = {} tertiary_text_structure = self.create_text_structure( tertiary_text, TextType.PLAIN_TEXT) if tertiary_text_structure: self.data['textContent'][ 'tertiaryText'] = tertiary_text_structure.get_data()
def set_report_interval_in_ms(self, interval_ms): if isinstance(interval_ms, str) and interval_ms.isdigit(): interval_ms = int(interval_ms) if isinstance(interval_ms, int) or isinstance(interval_ms, float): if not Utils.checkKeyInDict(self.data['videoItem']['stream'], 'progressReport'): self.data['videoItem']['stream']['progressReport'] = {} self.data['videoItem']['stream']['progressReport'][ 'progressReportIntervalInMilliseconds'] = int(interval_ms)
def set_plain_primary_text(self, primary_text): """ 设置一级标题 :param primary_text: :return: """ if not Utils.checkKeyInDict(self.data, 'textContent'): self.data['textContent'] = {} primary_text_structure = self.create_text_structure( primary_text, TextType.PLAIN_TEXT) if primary_text_structure: self.data['textContent'][ 'primaryText'] = primary_text_structure.get_data()
def get_data(self, key=''): if Utils.checkKeyInDict(self.data, 'image') and self.image_tags: self.data['image']['tags'] = get_image_tag_data(self.image_tags) if key: return self.data[key] return self.data
def build(self, data): """ 构造response 返回结果 :param data: data = { 'card': card, 'directives': directives, 'outputSpeech': string, 'reprompt': string } :return: """ if data is None: data = {} self._pre_build(data) if 'directives' in data: directives = data['directives'] else: directives = [] if len(directives) > 0: directives = list( map( lambda value: value.get_data(), list( filter(lambda value: isinstance(value, BaseDirective), directives)))) if self.nlu: arr = self.nlu.to_directive() if arr: directives.append(arr) auto_complete_speech = True if Utils.checkKeyInDict(data, 'autoCompleteSpeech') and isinstance( Utils.checkKeyInDict(data, 'autoCompleteSpeech'), bool): auto_complete_speech = data['autoCompleteSpeech'] if auto_complete_speech and not data['outputSpeech'] and data[ 'card'] and isinstance(data['card'], TextCard): data['outputSpeech'] = data['card'].get_data()['content'] ret = { "version": "2.0", "context": self._build_context(), "session": self.session.to_response(), "response": { "directives": directives, "shouldEndSession": self.should_end_session, "card": data['card'].get_data() if data['card'] else None, "resource": data['resource'], "outputSpeech": self.format_speech(data['outputSpeech']) if data['outputSpeech'] else None, "reprompt": { "outputSpeech": self.format_speech(data['reprompt']) } if data['reprompt'] else None } } if isinstance(self.need_determine, bool): ret['response']['needDetermine'] = self.need_determine if isinstance(self.expect_speech, bool): ret['response']['expectSpeech'] = self.expect_speech if isinstance(self.fallback, bool): ret['response']['fallBack'] = self.fallback if self.directives_arrangement: ret['response'][ 'directivesArrangement'] = self.directives_arrangement return ret
def set_art(self, src): if not Utils.checkKeyInDict(self.data, 'art'): self.data['art'] = {} self.data['art']['src'] = src
def setLyric(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'] = 'FORMAT_LRC'
def setArt(self, src): if not Utils.checkKeyInDict(self.data['content'], 'art'): self.data['content']['art'] = {} self.data['content']['art']['src'] = src
def add_permission(self, name): if name and PermissionEnum.inEnum(name): if not Utils.checkKeyInDict(self.data, 'permissions'): self.data['permissions'] = [] self.data['permissions'].append({'name': name.value})