Esempio n. 1
0
    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
Esempio n. 2
0
 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
Esempio n. 3
0
    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
Esempio n. 5
0
 def get_request_query_original(self):
     """
     获取最原始的请求内容
     :return:
     """
     if Utils.checkKeyInDict(self.data['request'], ['query']):
         return self.data['request']['query']['original']
Esempio n. 6
0
    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())
Esempio n. 7
0
    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
Esempio n. 8
0
 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
Esempio n. 9
0
 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
Esempio n. 10
0
    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())
Esempio n. 11
0
    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
Esempio n. 12
0
 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()
Esempio n. 13
0
 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()
Esempio n. 14
0
    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)
Esempio n. 15
0
    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()
Esempio n. 16
0
 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
Esempio n. 17
0
    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
Esempio n. 19
0
 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'
Esempio n. 20
0
 def setArt(self, src):
     if not Utils.checkKeyInDict(self.data['content'], 'art'):
         self.data['content']['art'] = {}
     self.data['content']['art']['src'] = src
Esempio n. 21
0
 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})