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])
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
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
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