A perpetual problem for myself and others whose body clocks are tuned to Greenwich Mean Time is that of communication with other residents of Second Life. A gap of eight hours between London and the Western coast of the Americas means that, when dealing with those resident in the Colonies, one spends much of one's time asleep when they are awake, and then wakes and is eager to speak, but is unable to actually enter Second Life due to the demands of work and has to wait for many hours, tapping fingers irritably and perhaps forgetting what one meant to say.
(This is not to mention the much greater irritation caused by not being able to attend events, but there is little to be done about that apart from demanding that they start earlier. LSL doesn't have any time machine functions it appears.)
There are also other occasions when one is trapped in the Other World for extended periods - say, on account of one's Powerbook having broken down again - with access to email but not to Second Life itself. It would be nice to be able to at least initiate messages, and at the moment one cannot do this. Most people are aware that instant messages from within Second Life can be forwarded as email, and many of those people are also aware that replying to the email will send an instant message back.
What fewer people are aware of is that the address that one replies to is actually only a temporary session one, and is not reliable for long term use. Normally, to send an email into Second Life one addresses it to
email@example.com, and when one receives an email from an instant message, the reply address is similarly
And that's all well and good when dealing with objects. Objects retain their key indefinitely, so I can save the key of an object somewhere, send it emails until the end of the world at the same address and it will always pick them up. But this does not work for communicating with people - the value of key-of-the-sender above when they send you email via IM is not their actual key.
I am not sure whether addressing mail to
firstname.lastname@example.org works, but it's inconvenient to carry around an address book, or keyring I suppose, full of impossible-to-remember keys. If this doesn't work, and it's only temporary keys that do, which may be an attempt to limit people harassing others via email sent from the Other World (laudable intention, annoying results for me) there is no way to initiate a conversation from outside.
(Yes, Ordinal, get to the point.) So, anyway, here is my temporary solution - a script that waits for email and turns it into instant messages. Say I wanted to send a message to my friend Professor Jefferson Gould but was unable to log on. When I first set the object going, it said three things which hopefully I recorded somewhere:
Email-IM Gateway: My email address is email@example.com
Email-IM Gateway: Security key is 12345678 - include this as the subject of the email
Email-IM Gateway: Polling for email every 60.00000 seconds
Actually I don't need to record the last one, that's a bit irrelevant, but the first two I do. I compose a short message to Professor Gould and send an email in the following format:
Jefferson Gould//Mr Watson - come here!
The gateway receives the email and sends two instant messages to Professor Gould:
Email-IM Gateway: Ordinal Malaprop has sent you the following message - please use the IM tool to reply to them directly
Email-IM Gateway: Mr Watson - come here!
"Aha!" I hear those of you who script thinking, "How does it know the proper key just from the name Jefferson Gould? You need a key to send a message with llInstantMessage. You're cheating, aren't you?" Er, that's the problem really. There is no way of getting a key directly from a name in LSL. So I have to have keys and names listed in a notecard, and the script reads through the lines of the notecard until it finds the right name, then takes the key from that. Which is a pain because they need gathering first, which means that I won't be able to send an email to anyone whose key I have not already obtained, unless I can find a public key database somewhere.
I've not tested the script for this so I won't post it up right now - in any case this entry is getting rather long. Once I do so, though, I will, and also the script for the key harvester that I use, and they'll be in the showroom as usual, which could get a bit crowded. Maybe I should script a vendor too so that not all of these things need to have their own prims, even if I do quite like the current layout.
The issue of keys and names is an interesting one. People do feel protective about their keys being recorded. I wonder how much of that is just simple suspicion at surveillance. Perhaps that's something for another entry.
thinks I might integrate this into my existing "contact me" object, to produce a Multi-Functional Communications Engine.
Edit: I've been informed that there are public name to key databases in existence that can be used for this purpose - for instance, the one maintained by Ulrika Zugzwang or this one on w-hat.com. These are not entirely complete, and would take a long time for a script to search if fully included - but the public web lookup pages give one the option of finding a key from a name and then sending to that. I shall modify the script so that one can specify either a key or a name to send to.