Thanks Art. It's a start
Actually I had spent a while on this but kept quiet as I've got a lot of ideas to try out still.
I've resisted laying out any script because it is liable to change, but I can give you some examples to your questions.
Yes it has wildcards. I use % for the wildcard instead of *. This is because % is very useful in SQL queries as that's it's wild card. So I'm being a little economical by using it as my wildcard as the patterns are stored in a MySQL database. The fuzzy pattern matching takes it up a notch, but would be difficult to describe briefly here.
Here's an example of simple
in
out.
i: i like to eat cake;
o: I'm not a fan myself;
That's it for a basic pattern.
If you wanted to match different inputs to the same output you just do this :
i: i am a boy||i am male||i am a man;
o: Okay Mr !;
You don't need to write out each input/output pairing or do a lot of recursion. The whole idea is to reduce typing to a minimum. Similarly you can do this with the output, to pick a random response from one input...
i: pick a random colour;
o: I choose magenta||I think black||How about cyan ?;
How are Triggers Handled or marked?
For triggers I use a format like PHP, but I use my own commands - so it's a bit like a wrapper around parts of PHP. My variables are prefixed with a $ like PHP too. So to test a variable you do something like this :
i: is my name freddy;
c: ($username == "Freddy")
o: Yes !;
e:
o: No !;
Where
c: means
condition. So it checks if the variable $username is set to "Freddy". If it is, you get the output (o:) of Yes ! The
e: is an else statement. This is a simple example, you can nest them and do other things like query an array of variables too.
And something I have called
fields adds another level so that you can mark out a whole bunch of patterns that only apply in given situations - controlled by variables. Like AIML's topics but a little different and I hope more flexible.
Does it have a provision for Wild Cards like * ?
Yup. Of course you would want to set that $username variable so you use the set (s:) command...
i: my name is %;
o: Hello %1 pleased to meet you;
s: $username = %1;
The %1 is a quick way to refer to whatever wildcards you need. Like AIML has the <star index="1" /> or something like that, just shorter. So if there was a second wildcard you would get it with %2.
You can do other things with wildcards too like pluralise them correctly, turn them into variables and other little tricks. And like I mentioned you have access to a number of PHP commands to fiddle with it too.
Is it capable of saving a log file of the conversation?
I've got basic log files working just the other day as it happens, so I could show you guys what I had. The chat I posted came from a log file. I do plan to do much more with the log file for the use of the botmaster too.
Could it be "taught" by feeding it info from say, a text file or other sources?
Not so far, I don't rule anything out. But that kind of thing I think is quite an undertaking by itself. I think I would look around to see what's been done and then see if I can somehow use it to make patterns. However if text is set out in an organised way then it's a lot easier to parse. I've certainly scanned quiz questions and answers into it so far so I didn't have to type them all in. But if you want to take a book about gerbils and get some good information out of it, then so far I don't have anything.