[OPEN-ILS-DEV] Telephone notification

Bill Ott bott at grpl.org
Wed Feb 6 13:10:29 EST 2008

I've come across a very basic and flexible form of a possible telephone 
notification system.
As briefly discussed back in Dec., this is only a piece of what would be 
much more useful as a fully interactive telephony information and 
renewal system, but for my current situation, it would answer the 
question of what to do with our 300-400 calls that are currently being 
placed each day by a similar system.

Asterisk has a very simple method to "auto-dial out and deliver message".

This could deliver pre-recorded messages, or could be used in 
conjunction with something like CMU's text-to-speech project, Festival, 
to add dynamic data to the call.  A script to format the .call file, 
possibly time stamping it for the future and/or using a cron job to move 
the files accordingly, and a second script to record the call result and 
return that data to action.hold_notification, where the results would 
appear in the staff client just like email notification. 
See some Asterisk notes below.

Now, the part I'm trying to wrap my head around.  How could the Asterisk 
server receive and return call info?

The MacGyver side of me has crazy ideas about using an email from the 
current notification system to trigger a procmail script to initiate the 
call.  The only thing that makes that a bit less crazy is the fact that 
many cell phone providers allow email to SMS messaging, so email could 
be the "base" notification, triggering text messages or phone calls.

Returning to reality, I think about the possibility of using the 
Asterisk-jabber module to receive messages.

Then there's that possibility of OpenSRF over HTTP.

Thoughts on my ramblings?

My basic testing on the Asterisk end has used the following for an 
extensions.conf.  I'm using both text-to-speech and a pre-recorded message.
  exten = s,1,Answer
  exten = s,n,AGI(festival-script.pl|This is the Grand Rapids Public 
Library\, you have items available for pick-up.)
  exten = s,n,Background(vm-goodbye)
  exten = s,n,AGI(record-result.pl|${CHANNEL}-${id})
  exten = s,n,Hangup
  exten = failed,1,AGI(record-result.pl|${CHANNEL}-${id})

My festival-script.pl is a minor modification of the example given here:

My record-result.pl is simply logging the results to a text file.

The .call file I'm testing with consists of the following.  Copied into 
/var/spool/asterisk/outgoing, these are processed much like queued email 
or lpd jobs.

  Channel: Zap/g1/5480    ; outgoing channel and phone number to dial
  Set: id=555             ; local variable to identify hold
  WaitTime: 30            ; total time allowed to complete call
  MaxRetries: 1           ; retry attempts    that is, initial call plus 
1 retry = 2 calls
  RetryTime: 600          ; time between retries
  Context: default        ; see extensions.conf
  Extension: s            ; see extensions.conf
  Priority: 1

More information about the Open-ils-dev mailing list