[Asterisk-Users] Presence
Chris Tooley
ctooley at ntrc.net
Thu Jun 10 11:31:07 MST 2004
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:12156667777 at 128.151.224.17" to
> "busy/sip:12156667777 at 128.151.224.17" 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
> Asterisk-Users at lists.digium.com
> 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
More information about the asterisk-users
mailing list