Applescript is pretty cool
A friend of mine was saying that a certain person
he works with was like an Eliza program because he responds to email so fast. I
thought I would see how easy that was in AppleScript...
First I needed an Eliza program. I picked a
webservice because I heard that AppleScript can call webservices without a
problem and that would let me learn two things at once. Google gave me one right away.
So I loaded up the Script Editor and started
hacking.First I cut and pasted some
AppleScript Mail code to get the perform_mail_action callback information that I
needed. Then I looked at the examples for how to call SOAP services.
AppleScript won't parse WSDL out of the box so I had to do that myself to come
up with:
on perform_mail_action(info)
tell application "Mail"
set NewMail to |SelectedMessages| of info
repeat with CurrentMessage in NewMail
set NewMessage to reply CurrentMessage
set MessageSubject to subject of CurrentMessage as string
set MessageContent to content of CurrentMessage as string
tell application "http://www34.brinkster.com/4xws/eliza.asmx"
set MySubject to call soap {method name:"CHAT", method namespace uri:"http://xws.webservice.net/xws", SOAPAction:"http://xws.webservice.net/xws/CHAT", parameters:{|Say|:MessageSubject}}
end tell
set subject of NewMessage to "Re: " & MySubject
tell application "http://www34.brinkster.com/4xws/eliza.asmx"
set MyContent to call soap {method name:"CHAT", method namespace uri:"http://xws.webservice.net/xws", SOAPAction:"http://xws.webservice.net/xws/CHAT", parameters:{|Say|:MessageContent}}
end tell
set content of NewMessage to MyContent
send NewMessage
end repeat
end tell
end perform_mail_action
If you have never seen AppleScript before
you're probably pretty surprised at the syntax. It is sort of like English and
it does understand quite an array of little words for doing things. Some of
them you can leave out. The only really hairy thing I ran into was that "Say"
is a reserved word or something so I couldn't use it as a parameter at first
until I figured out how to quote it with the |Say|. That's really all there is
to it. I'm not sure there is any language where it is easier without a lot of
setup. This is with no imports, no adding libraries, no installation, really
just a little text editor that can dynamically look things up that are already
on the system.
Posted: Tue - October 21, 2003 at 10:39 PM
|