Chris A. Icide
2005-May-25 12:44 UTC
[Asterisk-Users] Remote Voicemail Notifier / enter Dialplan on SIP Register
There is a patch on Mantis (http://bugs.digium.com/view.php?id=4371) Which includes several features. 1. Support for central voicemail server(s) with remote server notification via IAX In other words, this patch allows you to configure an Asterisk server as a central voicemail server and to send out voicemail notification to remote Asterisk servers who can then pass the notification on to local clients. 2. Diaplan command to update voicemail pointers The patch includes a dialplan command (ChangeMailbox) which allows you to change both the central voicemail server as well as the remote clients mailbox pointers. In other words, you can add/move 'mailbox=' fields via the dialplan. 3. Entry into dial plan upon device registration or loss of registration This function allows you to configure a dialplan context in which SIP or IAX devises will activate a dialplan thread allowing you to execute any non-audio stream dependant dialplan command(s). An example might be identifying the location of the registration and using the changemailbox command to direct the correct voicemail indication to the registering device. We need community support if we want to get this added to asterisk. Please take a gander. I also have a patch against CVS head 05-02-2005 if you want to test against CVS HEAD prior to all the function changes. Below are notes on the configuration: First, the remote voicemail notification configuration: In voicemail.conf under the general section we need to identify that this voicemail server is a centralized voicemail server supplying remote notification. This is done by adding an entry that points at an iax entry for this server. Note that you must add an entry for this server in your IAX configuration. [general] voicemail_server=<unique_IAX_peername_of_this_server> On the same server we will configure the voicemail boxes. There is one new entry required over the normal user configuration and that is the remote asterisk server hosting the client device to which we will be sending voicemail indication. This is included as an IAX entry (must also exist in your IAX config) as shown here [default] <vmbox>:<iax_peer> => <pin>,<name>,etc.. or if we have voicemail box 1000 being served for a client device attached to IAX peer 'sip-reg-srv-001' as defined in your iax.conf file, the line would look like this: [default] 1000:sip-reg-srv-001 => 1000,John Doe,jdoe@john.doe.... All servers (both central voicemail and remote client) must have iax entries for each other (and the central server must include an entry for itself in it's own iax.conf file). Servers can be dyanmic (host=dynamic) as well as static. In the sip.conf or iax.conf for each device there is a change to the mailbox= argument. Note that the mailbox=<user> still works for locally served mailboxes. For remote mailboxes the format is this: mailbox=<user>:<vm_context>@<iax_peername_of_VMserver> so in the example above, it would look like this sip.conf [1000] type=friend host=dynamic mailbox=1000:default@vm-srv-001 where 'vm-srv-001' is the entry in the iax.conf for the central voicemail server. This configuration does not include automatic routing of voicemail commands (voicemail and voicemailmain). You must still route calls to voicemail to the central voicemail server through your dialplan. If you try and call a voicemailbox directly on a remote client you will get a no such voicemailbox error. So when you want to leave voicemail or retrieve it, the call needs to be sent to the central voicemail server where you would then execute the VoiceMail or VoiceMailMain functions. Second, the ChangeMailbox function There is an application that you can change the mailbox= definition in either iax.conf/sip.conf or voicemail.conf (changes are NOT reflected in the configuration files, they are not updated by this command) ChangeMailbox(tech,name=newsetting) On the central voicemail server, you can change both the voicemail entry as well as the sip or iax entry. On the remote client servers you can only change the sip/iax entries. To change the remote server in which a client's voicemail status is sent, you would use the Voicemail keyword for technology in the following structure: 1) Voicemail ChangeMailbox(Voicemail,<mailbox>@<iax_peername>) On the system which hosts the UA device, you would use the following structure, with SIP or IAX as the technology: 2) IAX/SIP/etc ChangeMailbox(IAX,<user-123>=<mailbox>:<vm-context>@<iax_peername-central_vmserver>) To completely change the location a voicemail indication is being sent, you may need to exectute this command on both the central vm server as well as the remote client server. The entry on the voicemail server tells the vm server what remote asterisk server to send the notification to. The entry on the remote client server tells the local asterisk system which device to notify. So in the case that the device only changes (you want to send or add vmail indication to another device on the same server) only the SIP or IAX entry need be changed. However if the device moves to a different remote client server, you will also need to tell the central VM server to change where it's sending notification as well. Now the 3rd feature ... in iax.conf or sip.conf for each user define the keyword 'onregister-context' syntax: [user] type=friend onregister-context=regcontext etc then upon registry, (context,exten) = (<onregister-context>,<user>,1) will be invoked and on unregister the (unreg-<onregister-context>,<user>,1) is invoked So on unregister 'unreg-' is prefixed to the onregister_context The variable ${DEVICETECH} contains the technology of the device registering. To rebuild the unique channel id from this, you would use ${DEVICETECH}/${EXTEN} which for example would return SIP/1000 in the case of that device registering -Chris
Anton Krall
2005-May-25 16:51 UTC
[Asterisk-Users] Remote Voicemail Notifier / enter Dialplan on SIPRegister
Damn! This is very nice Chris! |-----Original Message----- |From: asterisk-users-bounces@lists.digium.com |[mailto:asterisk-users-bounces@lists.digium.com] On Behalf Of |Chris A. Icide |Sent: Mi?rcoles, 25 de Mayo de 2005 02:45 p.m. |To: asterisk-users@lists.digium.com |Subject: [Asterisk-Users] Remote Voicemail Notifier / enter |Dialplan on SIPRegister | |There is a patch on Mantis (http://bugs.digium.com/view.php?id=4371) | |Which includes several features. | |1. Support for central voicemail server(s) with remote server |notification via IAX | |In other words, this patch allows you to configure an Asterisk |server as a central voicemail server and to send out voicemail |notification to remote Asterisk servers who can then pass the |notification on to local clients. | |2. Diaplan command to update voicemail pointers | |The patch includes a dialplan command (ChangeMailbox) which |allows you to change both the central voicemail server as well |as the remote clients mailbox pointers. In other words, you |can add/move 'mailbox=' |fields via the dialplan. | |3. Entry into dial plan upon device registration or loss of |registration | |This function allows you to configure a dialplan context in |which SIP or IAX devises will activate a dialplan thread |allowing you to execute any non-audio stream dependant |dialplan command(s). An example might be identifying the |location of the registration and using the changemailbox |command to direct the correct voicemail indication to the |registering device. | |We need community support if we want to get this added to asterisk. |Please take a gander. I also have a patch against CVS head |05-02-2005 if you want to test against CVS HEAD prior to all |the function changes. | |Below are notes on the configuration: | |First, the remote voicemail notification configuration: | |In voicemail.conf under the general section we need to |identify that this voicemail server is a centralized voicemail |server supplying remote notification. This is done by adding an | |entry that points at an iax entry for this server. Note that |you must add an entry for this | |server in your IAX configuration. | |[general] |voicemail_server=<unique_IAX_peername_of_this_server> | |On the same server we will configure the voicemail boxes. |There is one new entry required over the normal user |configuration and that is the remote asterisk server hosting |the client device to which we will be sending voicemail |indication. This is included as an IAX entry (must also exist |in your IAX config) as shown here | |[default] |<vmbox>:<iax_peer> => <pin>,<name>,etc.. | |or if we have voicemail box 1000 being served for a client |device attached to IAX peer 'sip-reg-srv-001' as defined in |your iax.conf file, the line would look like this: | |[default] |1000:sip-reg-srv-001 => 1000,John Doe,jdoe@john.doe.... | |All servers (both central voicemail and remote client) must |have iax entries for each other (and the central server must |include an entry for itself in it's own iax.conf file). |Servers can be dyanmic |(host=dynamic) as well as static. | |In the sip.conf or iax.conf for each device there is a change |to the mailbox= argument. Note that the mailbox=<user> still |works for locally served mailboxes. For remote mailboxes the |format is this: | |mailbox=<user>:<vm_context>@<iax_peername_of_VMserver> | |so in the example above, it would look like this | |sip.conf |[1000] |type=friend |host=dynamic |mailbox=1000:default@vm-srv-001 | |where 'vm-srv-001' is the entry in the iax.conf for the |central voicemail server. | |This configuration does not include automatic routing of |voicemail commands (voicemail and voicemailmain). You must |still route calls to voicemail to the central voicemail server |through your dialplan. If you try and call a voicemailbox |directly on a remote client you will get a no such |voicemailbox error. So when you want to leave voicemail or |retrieve it, the call needs to be sent to the central |voicemail server where you would then execute the VoiceMail or |VoiceMailMain functions. | | |Second, the ChangeMailbox function | | |There is an application that you can change the mailbox= |definition in either iax.conf/sip.conf or voicemail.conf |(changes are NOT reflected in the configuration files, they |are not updated by this command) | |ChangeMailbox(tech,name=newsetting) | |On the central voicemail server, you can change both the |voicemail entry as well as the sip or iax entry. On the |remote client servers you can only change the sip/iax entries. | |To change the remote server in which a client's voicemail |status is sent, you would use the Voicemail keyword for |technology in the following structure: | |1) Voicemail |ChangeMailbox(Voicemail,<mailbox>@<iax_peername>) | |On the system which hosts the UA device, you would use the |following structure, with SIP or IAX as the technology: | |2) IAX/SIP/etc |ChangeMailbox(IAX,<user-123>=<mailbox>:<vm-context>@<iax_peerna me-central_vmserver>) | |To completely change the location a voicemail indication is |being sent, you may need to exectute this command on both the |central vm server as well as the remote client server. The |entry on the voicemail server tells the vm server what remote |asterisk server to send the notification to. The entry on the |remote client server tells the local asterisk system which |device to notify. So in the case that the device only changes |(you want to send or add vmail indication to another device on |the same server) only the SIP or IAX entry need be changed. |However if the device moves to a different remote client |server, you will also need to tell the central VM server to |change where it's sending notification as well. | | |Now the 3rd feature ... |in iax.conf or sip.conf for each user define the keyword |'onregister-context' | |syntax: | |[user] |type=friend |onregister-context=regcontext |etc | |then upon registry, (context,exten) = |(<onregister-context>,<user>,1) will be invoked and on unregister the |(unreg-<onregister-context>,<user>,1) is invoked | |So on unregister 'unreg-' is prefixed to the onregister_context | |The variable ${DEVICETECH} contains the technology of the |device registering. | |To rebuild the unique channel id from this, you would use |${DEVICETECH}/${EXTEN} which for example would return SIP/1000 |in the case of that device registering | | |-Chris | |_______________________________________________ |Asterisk-Users mailing list |Asterisk-Users@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 |