示例#1
0
    async def parse(self, event):
        """Parse a string against all skills.

        Args:
            event (String): The string to parsed against all available skills.

        Returns:
            tasks (list): Task that tells the skill which best matches the parsed event.

        """
        self.stats["messages_parsed"] = self.stats["messages_parsed"] + 1
        tasks = []
        tasks.append(self.eventloop.create_task(parse_always(self, event)))
        tasks.append(self.eventloop.create_task(parse_event_type(self, event)))
        if isinstance(event, events.Message):
            _LOGGER.debug(_("Parsing input: %s."), event)

            unconstrained_skills = await self._constrain_skills(
                self.skills, event)
            ranked_skills = await self.get_ranked_skills(
                unconstrained_skills, event)
            if ranked_skills:
                tasks.append(
                    self.eventloop.create_task(
                        self.run_skill(
                            ranked_skills[0]["skill"],
                            ranked_skills[0]["config"],
                            ranked_skills[0]["message"],
                        )))

        await asyncio.gather(*tasks)

        return tasks
示例#2
0
    async def parse(self, message):
        """Parse a string against all skills."""
        self.stats["messages_parsed"] = self.stats["messages_parsed"] + 1
        tasks = []
        if message.text.strip() != "":
            _LOGGER.debug("Parsing input: %s", message.text)

            tasks.append(
                self.eventloop.create_task(parse_regex(self, message)))
            tasks.append(
                self.eventloop.create_task(parse_always(self, message)))

            if "parsers" in self.config:
                _LOGGER.debug("Processing parsers...")
                parsers = self.config["parsers"]

                dialogflow = [p for p in parsers if p["name"] == "dialogflow"
                              or p["name"] == "apiai"]

                # Show deprecation message but  parse message
                # Once it stops working remove this bit
                apiai = [p for p in parsers if p["name"] == "apiai"]
                if apiai:
                    _LOGGER.warning("Api.ai is now called Dialogflow. This "
                                    "parser will stop working in the future "
                                    "please swap: 'name: apiai' for "
                                    "'name: dialogflow' in configuration.yaml")

                _LOGGER.debug("Checking dialogflow...")
                if len(dialogflow) == 1 and \
                        ("enabled" not in dialogflow[0] or
                         dialogflow[0]["enabled"] is not False):
                    _LOGGER.debug("Parsing with Dialogflow.")
                    tasks.append(
                        self.eventloop.create_task(
                            parse_dialogflow(self, message, dialogflow[0])))

                luisai = [p for p in parsers if p["name"] == "luisai"]
                _LOGGER.debug("Checking luisai...")
                if len(luisai) == 1 and \
                        ("enabled" not in luisai[0] or
                         luisai[0]["enabled"] is not False):
                    _LOGGER.debug("Parsing with luisai.")
                    tasks.append(
                        self.eventloop.create_task(
                            parse_luisai(self, message, luisai[0])))

                witai = [p for p in parsers if p["name"] == "witai"]
                _LOGGER.debug("Checking wit.ai...")
                if len(witai) == 1 and \
                        ("enabled" not in witai[0] or
                         witai[0]["enabled"] is not False):
                    _LOGGER.debug("Parsing with witai.")
                    tasks.append(
                        self.eventloop.create_task(
                            parse_witai(self, message, witai[0])))

        return tasks
示例#3
0
    async def parse(self, message):
        """Parse a string against all skills."""
        self.stats["messages_parsed"] = self.stats["messages_parsed"] + 1
        tasks = []
        if message.text.strip() != "":
            _LOGGER.debug("Parsing input: " + message.text)

            tasks.append(self.eventloop.create_task(parse_regex(self,
                                                                message)))
            tasks.append(
                self.eventloop.create_task(parse_always(self, message)))

            if "parsers" in self.config:
                _LOGGER.debug("Processing parsers")
                parsers = self.config["parsers"]

                dialogflow = [p for p in parsers if p["name"] == "dialogflow"]
                _LOGGER.debug("Checking dialogflow")
                if len(dialogflow) == 1 and \
                        ("enabled" not in dialogflow[0] or
                         dialogflow[0]["enabled"] is not False):
                    _LOGGER.debug("Parsing with Dialogflow")
                    tasks.append(
                        self.eventloop.create_task(
                            parse_dialogflow(self, message, dialogflow[0])))

                luisai = [p for p in parsers if p["name"] == "luisai"]
                _LOGGER.debug("Checking luisai")
                if len(luisai) == 1 and \
                        ("enabled" not in luisai[0] or
                         luisai[0]["enabled"] is not False):
                    _LOGGER.debug("Parsing with luisai")
                    tasks.append(
                        self.eventloop.create_task(
                            parse_luisai(self, message, luisai[0])))

                witai = [p for p in parsers if p["name"] == "witai"]
                _LOGGER.debug("Checking wit.ai")
                if len(witai) == 1 and \
                        ("enabled" not in witai[0] or
                         witai[0]["enabled"] is not False):
                    _LOGGER.debug("Parsing with witai")
                    tasks.append(
                        self.eventloop.create_task(
                            parse_witai(self, message, witai[0])))

        return tasks
示例#4
0
    async def parse(self, message):
        """Parse a string against all skills."""
        self.stats["messages_parsed"] = self.stats["messages_parsed"] + 1
        tasks = []
        if message.text.strip() != "":
            _LOGGER.debug("Parsing input: %s", message.text)

            tasks.append(
                self.eventloop.create_task(parse_always(self, message)))

            ranked_skills = await self.get_ranked_skills(message)
            if ranked_skills:
                tasks.append(
                    self.eventloop.create_task(
                        self.run_skill(ranked_skills[0]["skill"],
                                       ranked_skills[0]["config"], message)))

        return tasks
示例#5
0
    async def parse(self, event):
        """Parse a string against all skills."""
        self.stats["messages_parsed"] = self.stats["messages_parsed"] + 1
        tasks = []
        if isinstance(event, events.Event):
            _LOGGER.debug(_("Parsing input: %s"), event)

            tasks.append(self.eventloop.create_task(parse_always(self, event)))

            unconstrained_skills = await self._constrain_skills(
                self.skills, event)
            ranked_skills = await self.get_ranked_skills(
                unconstrained_skills, event)
            if ranked_skills:
                tasks.append(
                    self.eventloop.create_task(
                        self.run_skill(ranked_skills[0]["skill"],
                                       ranked_skills[0]["config"], event)))

        return tasks
示例#6
0
    async def parse(self, message):
        """Parse a string against all skills."""
        self.stats["messages_parsed"] = self.stats["messages_parsed"] + 1
        tasks = []
        if message is not None:
            if str(message.text).strip():
                _LOGGER.debug(_("Parsing input: %s"), message.text)

                tasks.append(
                    self.eventloop.create_task(parse_always(self, message)))

                unconstrained_skills = await self._constrain_skills(
                    self.skills, message)
                ranked_skills = await self.get_ranked_skills(
                    unconstrained_skills, message)
                if ranked_skills:
                    tasks.append(
                        self.eventloop.create_task(
                            self.run_skill(ranked_skills[0]["skill"],
                                           ranked_skills[0]["config"],
                                           ranked_skills[0]["message"])))

        return tasks
示例#7
0
文件: core.py 项目: opsdroid/opsdroid
    async def parse(self, message):
        """Parse a string against all skills."""
        self.stats["messages_parsed"] = self.stats["messages_parsed"] + 1
        tasks = []
        if message is not None:
            if str(message.text).strip():
                _LOGGER.debug(_("Parsing input: %s"), message.text)

                tasks.append(
                    self.eventloop.create_task(parse_always(self, message)))

                unconstrained_skills = await self._constrain_skills(
                    self.skills, message)
                ranked_skills = await self.get_ranked_skills(
                    unconstrained_skills, message)
                if ranked_skills:
                    tasks.append(
                        self.eventloop.create_task(
                            self.run_skill(ranked_skills[0]["skill"],
                                           ranked_skills[0]["config"],
                                           ranked_skills[0]["message"])))

        return tasks