This is a wonderful idea. I like the app_im concept a lot. I'd make a few additions though. Like the ability to have festival read the "Away" message as the Voicemail message. I'd definitely change my voicemail more often if I could do it by changing my Jabber away message.
I would suggest that Jabber would be a more effective first target though, as with it comes the ability to hit AIM/ICQ/MSN/Yahoo/etc users via a simple proxy. Having just the one implementation would simplify things. Chris Tooley On Wed, 2004-04-07 at 21:29 -0400, John Todd wrote: > At 8:29 PM -0400 on 4/7/04, Shad Mortazavi wrote: > >I have to agree. > > > >A large number of people are looking for this feature. I have > >written a web script that can show Agent logged into the system. > > > >I think integration/gateway between Asterisk and Jabber would be a > >amazingly wonderful product. > > > >There is always MSN. > > > >Shad Mortazavi > >--------------------------------------------------- > >Nexus Technical Manager > >n|m Nexus Management Inc > >Netural Bay > >Sydney > > My idea for AIM/Jabber/Yahoo integration is below. > > Comments and/or programmers are welcome to have at it, and to expand > on my ideas. I have mentioned this to several programmers who > expressed an interest, but I'm sure that lack of time and funding has > kept them from starting on the project, if it indeed is worthwhile. > This is a kludge to some degree, but it uses _already existing_ > presence tools to extend Asterisk's functionality, without needing to > modify any client software or hardware. > > > ******** > > This is really a one-way presence idea at the moment. There are the > glimmerings of two-way presence (see the "activewhen" keyword) but > this is mostly for CTI outbound notices from an * server to humans > upon some events defined by the administrator. I would see this most > typically used either as a screenpop on an inbound or outbound call, > or perhaps as a voicemail notification tool if the administrator is > clever enough to embed a URL into the string for the instant message > text. > > > Phase 1: Create a set of programs for Asterisk which allows status > checking of a particular username on a particular instant messaging > system (availability, idle time) and also allows for transmission of > instant messages from Asterisk to other users on those instant > messaging systems (one-way.) The first systems that come to mind > would be AOL's AIM and Yahoo. > > Phase 2: Add additional instant message systems: maybe Jabber, MSN. > Allow examination of user's header line (in AOL, at least) and pass > that through the app_imstatus return codes. This would allow me to > specify "mobile:" as the first digits of my status, thus a GotoIf > would be able to know that it should send calls to my cell phone. Or > when I get to work, and shift between my home account ("home: hello, > I'm home") to work ("work: at my desk") then the system will > automatically forward calls appropriately. This might be easy enough > to do in Phase 1, but I'm uncertain. > > Future paths: > A true "presence" application for telephony in a large scale method > is lacking today. It may be the case that this could be done by > creating a custom telephony presence presentation application that is > based on an existing (or multiple existing) chat protocols. As an > example, it is possible that I might be able to make my status > message on AIM change from "avail/sip:[EMAIL PROTECTED]" to > "busy/sip:[EMAIL PROTECTED]" every time I pick up the phone; > that could be done programmatically by Asterisk. Then, my friends > who have the custom telephony presence application would see the > little icon beside "pinkycaruthers" go from green to flashing orange. > As soon as I went back to non-busy, they could just click on my icon, > and two things would happen: a password-protected message would get > fired off to THEIR phone system and extension from the presence > application on their desktop, which in turn would be received by an > asterisk-aware application on their Asterisk server, which in turn > would create a spool call to MY phone system from the SIP URI that I > included in my Status message. Presto! We have minimalist call > routing, presence, and click-to-dial - we're just missing the little > app to do it on <Windows, MacOS, Linux, Java, whatever>. The core > message transport protocols all exist; it's just a matter of layers > on top of them. Using standard telephony URI's, we could not just do > this with SIP, but with tel, h323, iax2, anything - it's not limited > to VoIP. > > > > ; im.conf > ; > ; Use of this file implies that you have an active account with one or more > ; instant messaging services, and that you probably use an account that is > ; dedicated to your Asterisk server so it "knows" what's going on. You may > ; need to ensure that any other user id's that you expect to receive messages > ; are filtered in such a way that the messages from your Asterisk-specific > ; account are permitted through. > ; > ; username= username of the user on this particular messaging system. > ; secret= password for the username > ; type= type of connection this is. Each messaging system uses > it's own protocols, > ; so we need to specify which one of the protocols we're > using for this particular > ; "channel". Current choices are: > ; aim - the AOL OSCAR protocol > ; yahoo - the Yahoo protocol > ; statusmessage= Sets the status message for the user on the chat > server. Visible to other users. > ; activewhen= perform a login only when this channel type is valid or > logged in. This is > ; reduce unnecessary heartbeat traffic for phones that > aren't logged in. > ; An example of this setting would be "IAX2/12345" or > "SIP/jimmy" where those > ; channel peers would be sending REGISTER messages to the server. > ; Use of keyword "always" means logged in all the time. Optional. > ; subscribe= users whose presence should be monitored by this peer > ; port= port for protocol (defaults taken from type=) > ; host= host for protocol (defaults taken from type=) > ; > ; > [aim-1] > username=pinkys-asterisk > secret=foofoofoo > type=aim > statusmessage="Pinky Caruthers Phone Presense Robot - no inbound, please." > subscribe=buckaroo,janedoe,turtlehead,misspiggy2001 > ; > ; end im.conf sample > > > -= Info about application 'IMStatus' =- > > [Synopsis]: > Get the status of a remote user's instant messaging presence > > [Description]: > IMStatus(template/remoteuser,[options]) > Returns several strings as result codes if successful. If an error > occurs during > transmission, the system will jump to priority n+101. > ${IM-STATUS}: "online", "offline", "unknown", "idle" > ${IM-IDLETIME}: number of seconds of idle time > ${IM-STATUS}: if applicable, the text string of the remote user's > status bar > ${IM-LASTSEEN}: how many minutes ago was this user online, at > least as far as > this running instance of Asterisk has knowledge. 0=online or never > Note that the remoteuser must be in the "subscribe" list of the IM > peer in order for > the system to return correct values. If the IM peer username is listed as the > remoteuser, the status of the IM peer will be returned in > ${IM-STATUS} as either > "online" or "offline" depending on the current registered state. > > The option string may contain zero or more of the following: > 'g' -- goes on in context if an error occurs > 'W(x)' -- Wait x milliseconds before returning regardless of > result (avoids hangs) > > > > -= Info about application 'IMSend' =- > > [Synopsis]: > Transmit an Instant Message > > [Description]: > IMSend(template/remoteuser/string) > Sends a string to a remote user, using the username in the peer > definition as the sender. > Receiver can be any user on the IM network chosen. Errors are > currently handled silently. > String can be up to XXX characters long. > > > > command-line options: > im show peers = shows a list of IM peers, and statuses of > subscription to those peers > > im show subscribed [peername][|subscriber] = shows a list of users > whose status the system is monitoring, or optionally just one out of > the list for that IM peer. Also shows last time (minutes ago) the > user was seen online (0 if online or never) > > im debug = debugs instant messaging items > > im debug intense = more debug > > > > foo*CLI> im show peers > Name Type Host Port User Status > aim1 AIM 64.12.24.32 5190 pinkys-asteri Registered > > foo*CLI> im show subscribed aim1 > Name Status Idle Lastseen > buckaroo online 140 0 > janedoe online 3 0 > turtlehead offline 0 0 > misspiggy20 offline 0 500 > > > > typical trivial usage: > > ; Send calls to Buckaroo appropriately based on his > ; AIM presence, and send a message before the call > ; if he's on-line > ; > exten => 1233,1,AGI(get-customer-data-from-callerid.agi) > exten => 1233,2,SetVar(CALLMESSAGE="${CUSTOMER-NAME} is calling from > ${CUSTOMER-COMPANY}. They do ${BILLABLE-VOLUME} in sales with us - > pick up the phone!") > exten => 1233,3,IMStatus(aim1/buckaroo) > exten => 1233,4,GotoIf($[${IM-STATUS} = offline]?5:10) > exten => 1233,5,Dial(Zap/1/${BUCKAROO-CELL}) > exten => 1234,6,Hangup > exten => 1234,10,GotoIf($[${IM-STATUS} = online]?11:20) > exten => 1234,11,IMSend(aim1/buckaroo/${CALLMESSAGE}) > exten => 1234,12,Dial(SIP/${BUCKAROO-MAIN},20) > exten => 1234,13,Voicemail(u${BUCKAROO-MAIN}) > exten => 1234,14,Hangup > exten => 1234,20,Voicemail(${BUCAROO-MAIN}) > exten => 1234,21,Hangup > _______________________________________________ > Asterisk-Users mailing list > [EMAIL PROTECTED] > http://lists.digium.com/mailman/listinfo/asterisk-users > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users -- Chris Tooley / Network and Development Services Networking Technologies Resource Center, LLC (NTRC) 8650 Spicewood Springs Road, Suite 105 Austin TX 78759 512-250-8985 / Fax 512-250-5909 www.ntrc.net / www.ntrcstore.com _______________________________________________ Asterisk-Users mailing list [EMAIL PROTECTED] http://lists.digium.com/mailman/listinfo/asterisk-users To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users