[Asterisk-Dev] [RFE] User interface - login, voicamil etc.

Chris Lee cslee-list at cybericom.co.uk
Sun Apr 18 06:55:37 MST 2004


Hope this is the correct list.

For a while now I have been trying to get asterisk to provide a single
user interface for all user related tasks.
I tried to learn C and after big time brain strain am officially giving
up, asterisk components are far to big a thing to start with when
learning to code in C.
I know I could probably use and AGI to get at least some of this done in 
a language I know better, but I feel that it would be smoother if native 
apps were used.
Since I have called it a day, but dont want to give up on the idea I
thought I would explain what I tried to do in case any of you think it
is worth a go, and in the hope that these features may be implemented
one day so that I get to use them.

This is what I had in mind:

Either make VoicemailMain scriptable and modular to extend features or
use an extension based menu with simple apps like the following to do
the work:

Authenticate
	-Get a user to type in their extension number and password
	-If user-database confirms then set $Auth to true and $user to
	extension number.
	-If user-database does not confirm set $Auth to false, $user to
	null, and or increase the priority by something appropriate.
	Next priority decides to hangup or not.
	Can use Voicemail password to allow for backwards compatibility,
	Though we do need it stored centrally on a DB where all PBXs can
	access the information.

LogOntoPhone($user,$PBX)
	-Store the device (e.g. SIP/phone1 )and $PBX in the users
	user-database record
	-$PBX is a URL for the proffered connection method of current
	PBX to allow for roaming users, something like:
	IAX2/servername:password at id
	-A related app called RouteCall(${EXTEN}) will collect
	these bits of information from the database and set a variable
	called $URL to the correct string for dial to use to send the
	call where it needs to go.
	-On a remote PBX the URL produced by RouteCall would look
	something like this: IAX2/servername:password at id/${EXTEN}
	-On the server the user logged onto the URL would look something
	like this: SIP/phone1
	-RouteCall(${EXTEN}) will either respond with a valid $URL or
	jump to priority n+2 thus if dial was next app in line it goes
	to where dial goes on unavailable.

LogOffPhone($user)
	-Remove the device data from users database record

DivertCall($user)
	-Place a link in users database record so that
	RouteCall(${EXTEN}) can put these links together and produce the
	correct URL for the dial app.

For voicemail interaction we can go one of two ways:
Either
VoicemailMain($user)
	-Modified version with support for accessing voicmail on users
	home PBX if they are using this app on another PBX.
	-Activate and deactivate voicemail feature, when user has
	deactivated voicemail any callers will not be sent to voicemail.
	-Listen to voicemail etc.
	-Standard voicemail features
Or
VMHome($user)
	creates a call through to users home PBX VoicemailMain
	-So long as when the user exits voicemailMain we are able to
	drop the call and remain in the menu this is possibly better as
	it keeps the standard apps unaltered.

There are other things that need to be in here but this was all I was
after when I started.

Outside of the user interface menu system a few apps need to be created
to allow the standard apps to continue to work normally.

RoutCall(${EXTEN})
	Described earlier

RouteVM(${EXTEN}u|b)
	-This will be used to store a dial string in $URL to forward the
	call to $EXTEN in the [voicemail] context on the users home PBX.
	-May need to use an extra digit to allow for unavailable or busy
	recognition.
	e.g. caller dialed exten 3000 RouteVM sends call to
	13000 for unavailable  or 23000 for busy in the [voicemail]
	context on the users home PBX.
	So the output for a busy could look like this:
	IAX2/servername:password at id/2${EXTEN}@voicemail
	and an unavailable like this:
	IAX2/servername:password at id/1${EXTEN}@voicemail


Thanks for reading this.

Chris.



More information about the asterisk-dev mailing list