예제 #1
0
    def test_topic_pattern(self):
        client = TestClient()
        client_context = ClientContext(client, "testid")
        client_context.bot = Bot(BotConfiguration(), client)
        client_context.bot.configuration.conversations._max_histories = 3
        client_context.brain = client_context.bot.brain

        conversation = Conversation(client_context)

        self.assertEquals("*", conversation.get_topic_pattern(client_context))

        conversation.set_property("topic", "TOPIC1")

        self.assertEquals("TOPIC1", conversation.get_topic_pattern(client_context))
예제 #2
0
    def set_conversation_valiables(self, client_context, variables):
        if client_context.userid in self._conversations:
            conversation = self._conversations[client_context.userid]
            if self._conversation_storage is not None:
                self._conversation_storage.load_conversation(
                    client_context, conversation)
        else:
            conversation = Conversation(client_context)
            conversation.num_categories = client_context.brain.aiml_parser.num_categories
            if self._conversation_storage is not None:
                self._conversation_storage.load_conversation(
                    client_context, conversation)
            conversation.load_initial_variables(
                client_context.brain.default_variables)
            self._conversations[client_context.userid] = conversation

        for variable in variables:
            try:
                var_type = variable['type']
                var_key = variable['key']
                var_value = variable['value']
            except Exception:
                raise

            if var_type == 'name':
                YLogger.debug(client_context,
                              "set userid[%s] variable name[%s] = [%s]",
                              client_context.userid, var_key, var_value)
                conversation.set_property(var_key, var_value)
            elif var_type == 'data':
                YLogger.debug(client_context,
                              "set userid[%s] variable data[%s] = [%s]",
                              client_context.userid, var_key, var_value)
                conversation.set_data_property(var_key, var_value)
            else:
                raise Exception('variable type not supported.')

        if self._conversation_storage is not None:
            self._conversation_storage.modify_conversation_data(
                client_context, conversation)

        if client_context.server_mode is True:
            self.remove_conversation(client_context)
예제 #3
0
    def test_properties(self):
        client = TestClient()
        client_context = ClientContext(client, "testid")
        client_context.bot = Bot(BotConfiguration(), client)
        client_context.bot.configuration.conversations._max_histories = 3
        client_context.brain = client_context.bot.brain

        conversation = Conversation(client_context)

        conversation.set_property("name1", "value1")
        self.assertEquals("value1", conversation.property("name1"))
        conversation.set_property("name2", "value2")
        self.assertEquals("value2", conversation.property("name2"))
        conversation.set_property("name2", "value3")
        self.assertEquals("value3", conversation.property("name2"))
        self.assertEquals(None, conversation.property("name3"))