Alice in Messenger Land

Use the drop-down list to view an archive of the bots past conversations:

If you just spoke with the bot, your conversation will be avaiable at midnight (it is now Label on my server)

These conversations are saved in MS SAPI (Speech API) TTS (Text-to-Speech) XML format. If you download that SDK here ( ), you can have the conversations read out loud to you

To talk with the bot, type in your MSN email address here:

From an idea by ~~Renegade Angel~~ , Im trying to make it such that evil mess (aka Alice) will no longer leave a multiple person conversation. Had a reason for that business logic in the past, but that reason no longer exists, and it might be fun in this new format 1-30-02 I have discovered most of what happened, which I thought was a malicious attack on my computer. Ends up if you ask Alice for the Date or Time, then it makes the 'date' command line request. This is what opened the cmd window on my server. As far as my files being moved, I am still looking into that; but I am pretty sure that it was not done with Alice, so it is back online now 1-28-02

Probably 6 months ago, I wrote the MSN Messenger Web Service ( ). It allows you to programmatically send an instant message to any MSN Messenger user. Built it with good intentions, as it was supposed to be useful as a notification service, e.g. .NET My Services Alerts (Examples of my .NET My Services work can be found here: Example of my using MSN Messenger Web Service for good purposes can be found here: ). Quickly, it turned into something else ... here is why. A typical MSN Messenger scenario involves this:

  1. Me adding you to my buddy list
  2. You getting a dialog asking if you want to receive messages from me or not
  3. You selecting to receive messages
  4. Me sending you a message

But with the MSN Messenger service, steps 2 and 3 ar skipped, you get the message from an unknown source without being prompted. This was not an expected result, but occured due to the way I hooked Messenger. So the scenario is this:

  1. I go to the Web Service ( )
  2. Enter in your hotmail address, and the initial message to send, and press submit
  3. You receive the message without being prompted

So, when I released it, people immediately began to use it to mess with their friends, familes, and enemies ... with some of the messages being quite vile. Thus, why its nick is now 'evil mess'. The very 1st day I released it, I went to workout, and came back to see 5 MSN Messenger windows open on my server, where people were saying that they were 'going to block me', asking 'who the h3ll i was' ... and you can imagine the other unpleasantries. But my web service could only send messages, it had no way of getting the response and dealing with it in some manner. So I had to quickly throw together a little WinForms app I call MessengerResponder appropriately, which would respond like this:

Well, this basically made it a virus. Because that person would get the message, go to my site and see the Web Service, and then use it themselves to play with their friends/enemies. Granted, tons of developers have hit it with test/hello world messages; but when I check my logs, it is full of .edu's :) [especially Virginia ... not sure what is going on there? but I should move there!]. So I have let it run like that for the last 6 months or so.

If you know me, you know that I am partially insomniatic, and write code all the time. If you do not know me, then I refer you to the blog below I just wrote to give you an idea. Regardless, I was in the zone ... or zoned out!?!?! ... late last night, and started looking around at Chat Bots. Somebody had actually recommended it be a bot as soon as they found out that I had the MessengerResponder, but just could not look into it at that time. Started reading about this XML schema called AIML and even began teaching myself. During the web surfing, I came across Windowpane's AimlBot, which provided a COM wrapper around the Alice Bot. Since I wanted this working NOW, and all the articles were about the AI instead of how to use AIML itself in a schema-based programming approach, so I scrapped teaching myself for a later date and tested out this wrapper. Ended up being exactly what I needed. So after grok'ing the API, I threw it in my MessengerResponder app, so that instead of just giving the canned response ... it could attempt to chat with the user like this. Notice how it grabs my nick!

Finally, I decided to archive those interactions as well. Had been playing with the Speech API 5.1 from MS the night before (refer you to the blog below) and remembered that it had an XML format for Text-To-Speech (TTS). So I threw that in VS.NET, made an XML schema after some modifications, and extended it by inserting the <iMessage time="" nick="">instant message text</iMessage> element. This would let users see the conversations that were taking place ... or if you prefer to listen like me ( ... i highly recommend) then they could just get an app to read the TTS XML formatted conversations to them. These apps are available in the Speech API which can be found here: NOTE: I did not do anything to handle the singleton nature of the application

The AimlBot only came with debug binaries, so after recalling some stuff when i was previously known as kc++, rebuilt it as a Release version (change precompiled header setting, remove alice.lib, an _ATL_MIN_CTR preprocess). Have tried a couple times to bulletproof it to no avail ... I might have just got it? Will have to wait until a school day, to see what happens. It has problems with the people that are cracking Messenger so they can have really unique Nicks, as well as some of the international characters that are getting passed around. Might have to go into the AimlBot public interfaces to add some more exception handling

Also, I need to read some of the AimlBot documentation to see how to get it run in more of a spoof mode. Right now, it asks the user if they want help to debug the program, and will say it is a robot and such. Will have to see if it has a switch to make it human ... (evil laugh here)

BLOGGISH this is how one of my coding marathon sessions works (recreated from memory and scribbled notes on yellow paper). -released /myVoices last week trying to get some attention and find work. it was fully legitimate .NET myServices (webServices) and voiceXml (wireless). a merging of 2 of the latest and greatest, full source code, cell phone recording, diagrams, explanations ... the works. got some great responses for technical merit, but since im writing this, it is obvious no leads for work -only 1 response from /myVoices that wasnt entirely good, pointed out that some alpha bits for doing voice integration with .NET was passed out at the pdc. in other words, who cares about your voiceXml stuff, when we will get it built in soon enough. doh! -so a trip later to and ive learned that MS is coming out with something called SALT, which is similar to vxml, and that there is a new version of the speech sdk 5.1. go ahead and download that while im there, after asking them to get me on their beta list for speech .NET. they typically ignore my requests :( --had this RDF book sitting on my computer for a couple weeks now, so crack it open hoping for ideas ... nothing that i wanted to do at the moment; so i was like h3ll, ive got no new legit ideas, and voiceXml is going to die ... so ill go revolutionize pr0n (scrambled for your safety) to cheer myself up. grab the directX sdk, and a couple hours later, my intelligent app is downloading movies, and generating thumbs. that was my 2nd attempt at gen'ing thumbs from movies; had tried the windows media sdk last time and failed miserably. regardless, i seriously believe i now have one of the best free, fully automated adult sites. intelligent agents, C#, ASP.NET, winForms, ADO.NET, XML, XSD, XSLT and all of that goodness, of course. -so im still idealess at this point, and am wondering what else i can do to the adult site other than passwords and movies. decide to go after live/streaming feeds. -im surfing around and checking out the state of the net, when i stumble across a couple sites dedicated to non adult web cams; a whole internet community that i had no knowledge about. mainly a bunch of college kids, probably english majors. im like h3ll, ive got a full on live video feed, with a scrolling marquee sign that you can send messages to through a C# class lib i wrote, ill blow these punks out of the water. note, that completes the triumvarant of categories i work on: fully legit bleeding edge stuff, revolutionizing pr0n, and pure silliness. spend that night (thursday) adding the reciprocal links to my live feed page and put myself out there for all the voyeurs to stare at. in fact, somebody is watching me right now. back to rambling, start getting lots of hits, because im a mega hit generating machine in general. had to recently shut down my winamp plugin because it was beating up my server too badly. -when i 1st setup the live video feed, had written a little winForm app called 3rdParty. basically, all it did was register with the media server and would audibly notify me when somebody was watching me by playing a wav file, so i could suck my belly in, stop picking my nose and such. usually its my parents watching, and making sure im not revolutionizing pr0n. regardless, it would not tell me how many people were watching at any time, just 0 or 1toN -when i checked out the server directly, i saw that up to 5 people were watching at once. dang, i needed some way to know how many people were watching at all times, to give me a priority on how much my belly needed to be sucked in. didnt want to create a whole bunch of wav files for diff # of people that could be watching, and it just happens that i downloaded the new speech sdk a couple days ago. remember. -so that afternoon (friday) bust that out and am like, how does this work. while somebody is watching me, i have the 3rdParty v2 counting off connections within 10 minutes. they had a C# sample ... serious! since i want to say something to the freak watching me, add that capability as well. granted he thinks im a freak for setting up a live video feed. its a vicious cycle. well, the lurker ends up writing me and saying that it sounds just like HAL 9000. so the 1st message i send him, is to the effect of 'would you like to play a game of global thermodynamic nuclear war?'. when he immediately responds on the scrolling marquee 'wouldnt you rather play a nice game of chess?' -after im done laughing my butt off, we then sit there in uncomfortable silence, i throw on some mp3s. but this makes it so we cannot hear the audio for the program i just wrote! -since winamp had already been conquered with the last plugin, i knew it could easily be integrated here. -trip to later and 3rdParty is further upgraded to pause winamp, then speak, and then unpause winamp ... perfect. -then i just go speech crazy. decide that the messages that are posted to the scrolling marquee sign need to be read out loud as well, so in my apartment, it would be like g0d speaking to me. since i made the speech/winamp thing a class library, that took all of another 5 minutes. the only problem is that i could not get it to send messages to winamp's message pump. yes, tried impersonation and all that. impersonation will let me control the process, but the messages are ignored for some reason. ill revisit later. regardless, its late in the afternoon now, and had to go workout. thats why the sites named brains-n-brawn ... to force me to go workout :) should be able to write it off. -while im working out, im obsessed that all sorts of people are hitting my live feed and nothing is happening ... lame. recalling the hal 9000 comment, decide to make my computer randomly talk while im gone. -so when i get back, start checking out chat bots, which somebody had mentioned to me as soon as id released the MSN Messenger Web Service with corresponding MessengerResponder. find AIML and Alice and all this incredibly cool AI stuff. but ultimately, i find a COM that wraps AIML/Alice ... perfect. -but once i have this in hand, realize that it has much cooler uses then the original intention. -thus the whole msnBot thing above. that took be the rest of that night, and the morning of the next day (saturday). - the next day, played around with setting up 2 bots and letting them talk to each other, this worked, but the conversation was purely annoying. but the good thing out of that is it forced me to update my speech/winamp class lib to support multiple voices. and it gave me some other ideas. -if i could get the sign to pause winamp, then i could set it up to speak with a different voice than my 3rdParty app. so the 3 other people that were just watching, and not talking over the sign, could just listen to the conversation and understand whom said what. finally, went and updated 3rdParty with 'away' functionality, so that it would read a joshua/hal9000 quotes while i was working out or reading/listening to a book and away from my computer. which brings this back full circle ... to voiceXml. think i can add a vxml interface to the bot, so that you could call the bot on the phone and talk to it. the hard part is that the voiceXml spec doesnt easily support speech-to-text. which is needed to get the users input, convert it to text, and hand off to the bot so that it can formulate a response. but the servers do have a <record> tag that will post a .wav file to a server. so im thinking that i could post it to my server, and on my server, use the speech sdk 5.1 to do the text conversion and process as normal from there. that is the currently planned project for tomorrow. it is saturday night now, almost sunday. 2 people are watching me. they are full on lurkers, they have not posted any messages 1/17/02