示例#1
0
    def default(self, _input: str):
        self.environment.text = _input
        self.environment.message_id += 1

        if self.lt_settings.DISPLAY_RAW:
            pprint.pprint(self.environment.as_dict)

        user, answers = self.process_message(str(self.environment))
        self.user_data = user.raw_str

        answers = combine_commands(answers, user)
        for answer in answers:
            respond = self.after_process_message(answer)
            if respond:
                _, new_answers = self.process_message(
                    respond,
                    (('app_callback_id', answer.request_data['app_callback_id'].encode()),),
                )
                answers.extend(new_answers or [])

        if not answers:
            print("Нет ответа")
            return

        for answer in answers:
            ans = answer.raw
            print("{}\nrequest type: {}\n".format(self.format_answer_value(ans), answer.request_type))
            if ans["message_name"] == "ANSWER_TO_USER":
                params = ans["payload"]
                intent = params.get("intent")
                if intent:
                    self.environment.intent = intent
            if self.lt_settings.DISPLAY_RAW:
                pprint.pprint(answer.raw)
    def _generate_answers(self, user, commands, message, **kwargs):
        commands = combine_commands(commands, user)
        if len(commands) > 1:
            raise ValueError
        answer = commands.pop() if commands else None

        return answer
    def test_pronounce(self, mock_get_app_config):
        patch_get_app_config(mock_get_app_config, True)
        command_1 = Mock('Command')
        command_1.name = message_names.ANSWER_TO_USER
        command_1.request_type = 'a'
        command_1.request_data = 'b'
        command_1.payload = {
            field.PRONOUNCE_TEXT: "some_text",
        }

        command_2 = Mock('Command')
        command_2.name = message_names.ANSWER_TO_USER
        command_2.request_type = 'a'
        command_2.request_data = 'b'
        command_2.payload = {
            field.PRONOUNCE_TEXT: "some_text",
        }

        command_3 = Mock('Command')
        command_3.name = message_names.ANSWER_TO_USER
        command_3.request_type = 'a'
        command_3.request_data = 'b'
        command_3.payload = {
            field.PRONOUNCE_TEXT: "some_text",
        }

        list_of_commands = [command_1, command_2, command_3]
        user = PicklableMock()
        result = commands.combine_commands(list_of_commands, user)

        self.assertTrue(result[0].payload[field.AUTO_LISTENING])
示例#4
0
    def test_no_pronounce(self, mock_get_app_config):
        patch_get_app_config(mock_get_app_config, False)
        command_1 = Mock('Command')
        command_1.name = message_names.ANSWER_TO_USER
        command_1.request_type = 'a'
        command_1.request_data = 'b'
        command_1.payload = {}

        command_2 = Mock('Command')
        command_2.name = message_names.ANSWER_TO_USER
        command_2.request_type = 'a'
        command_2.request_data = 'b'
        command_2.payload = {}

        command_3 = Mock('Command')
        command_3.name = message_names.ANSWER_TO_USER
        command_3.request_type = 'a'
        command_3.request_data = 'b'
        command_3.payload = {}

        list_of_commands = [command_1, command_2, command_3]
        user = Mock()
        result = commands.combine_commands(list_of_commands, user)

        self.assertFalse(result[0].payload[field.AUTO_LISTENING])
    def _generate_answers(self, user, commands, message, **kwargs):
        topic_key = kwargs["topic_key"]
        kafka_key = kwargs["kafka_key"]
        answers = []
        commands = commands or []

        commands = combine_commands(commands, user)

        for command in commands:
            request = SmartKitKafkaRequest(id=None, items=command.request_data)
            request.update_empty_items({
                "topic_key": topic_key,
                "kafka_key": kafka_key
            })
            to_message = get_to_message(command.name)
            answer = to_message(command=command,
                                message=message,
                                request=request,
                                masking_fields=self.masking_fields,
                                validators=self.to_msg_validators)
            if answer.validate():
                answers.append(answer)
            else:
                answers.append(
                    SmartAppToMessage(self.BAD_ANSWER_COMMAND,
                                      message=message,
                                      request=request))

            smart_kit_metrics.counter_outgoing(self.app_name, command.name,
                                               answer, user)

        return answers
示例#6
0
    def _generate_answers(self, user, commands, message):

        answers = []
        commands = commands or []

        commands = combine_commands(commands, user)

        for command in commands:
            request = SmartKitKafkaRequest(id=None, items=command.request_data)
            answer = SmartAppToMessage(command=command, message=message, request=request)
            answers.append(answer)
        return answers
示例#7
0
    def _generate_answers(self, user, commands, message, **kwargs):
        topic_key = kwargs["topic_key"]
        kafka_key = kwargs["kafka_key"]
        answers = []
        commands = commands or []

        commands = combine_commands(commands, user)

        for command in commands:
            request = SmartKitKafkaRequest(id=None, items=command.request_data)
            request.update_empty_items({
                "topic_key": topic_key,
                "kafka_key": kafka_key
            })
            answer = SmartAppToMessage(command=command,
                                       message=message,
                                       request=request,
                                       masking_fields=self.masking_fields)
            answers.append(answer)

            smart_kit_metrics.counter_outgoing(self.app_name, command.name,
                                               answer, user)

        return answers