How to make multiple extensions use a common voicemail box

How to make multiple extensions use a common voicemail box

This is NOT officially supported in FreePBX, but you can link two or more voicemail boxes together so that all extensions share the same voicemail box.

First create the extensions and enable voicemail for all of them. Do not change the mailbox string from the default when created. Decide which will be the primary extension hosting the "real" voicemail box. For this example let's say you create three extensions numbered 201, 202, and 203. 201 will contain the "real" voicemail box and the other two will be symlinked to that box.

Now go to the /var/spool/asterisk/voicemail directory. You will see two subdirectories - default and device. Go into default, you will see directories for each extension. If you do not see one for 201, go leave a voicemail for 201 and it should be created (assuming you have set voicemail up correctly in the extension). If you see directories for the other two extensions (202 or 203), delete them (if these are pre-existing extensions, you may want to check first to make sure there are no pending voicemails in those directories).

While still in /var/spool/asterisk/voicemail/default create a symlink for each of the two extensions:

ln -s 201 202

ln -s 201 203

Make sure that permissions and ownership for the symlinks are the same as for the original directory (in particular, make sure that owner and group are asterisk).

Now back up one directory level and go into the device directory (you want to be in /var/spool/asterisk/voicemail/device). Chances are that the symlinks for 202 and 203 will already have been created automatically, and if they haven't they probably will be when necessary. But if you want to insure they are there, just do this:

ln -s /var/spool/asterisk/voicemail/default/202/ 202

ln -s /var/spool/asterisk/voicemail/default/203/ 203

While this is a symlink to a symlink, it means that things won't break if you ever decide to separate the directories (restore them to the original condition) in the original default directory. "default" seems to be the more important of the two directories - once you create the symlinks there, everything seems to work as expected, so I wouldn't mess with the device directory at all unless you are having problems.

What if I want individual greetings but a common voicemail box?

(Thanks to philippel for suggesting this in the #freepbx IRC channel.)

Let's say you have three tech support people, and when people call one of them you want that person's voice to give a personalized voicemail greeting, but you still want the actual voicemails to go to a common voicemail box shared by all three (so in case one of them is away, another can look at the issue).

In that case, the symlink trick still works but you have to do it one level lower in the directory structure, and you will need to symlink the INBOX, Old, and (possibly) tmp directories individually.

So instead of creating the symlinks in /var/spool/asterisk/voicemail/default, you'd go one level lower, into (for example) /var/spool/asterisk/voicemail/default/201 and from there create the needed symlinks for each of the two other two extensions:

ln -s INBOX ../202/INBOX

ln -s INBOX ../203/INBOX

ln -s Old ../202/Old

ln -s Old ../203/Old

ln -s tmp ../202/tmp

ln -s tmp ../203/tmp

Again, I would assume that any symlinks from the /var/spool/asterisk/voicemail/device branch will be created as needed so I'm not going to bother with those here. You can create them manually if you really want to, but I don't think it's necessary.

One thing you need to be aware of, when only the individual subdirectories are symlinked, if a user takes an action that creates a new subdirectory (a.k.a. a "folder" in voicemail jargon), such as using advanced options to save a message in a specific folder, that folder and its contents will be accessible only by the user that created the folder, and not everyone in the group. This may or may not be desirable behavior. For example, if a user happens to receive a personal message and moves it to the "Family" folder (which was not previously created or symlinked), it will thereafter only be accessible to the user that moved the message, regardless of whether or not that was the user that the message was intended for. If you want the additional folders (e.g. Work, Family, Friends) to be accessible to everyone in the group, then you must make sure those folders are created for the primary extension (this can be accomplished simply by going into "advanced options" from the primary extension's voicemail menu and then changing folders to each available folder in turn - the act of simply accessing the folder seems to create it if it doesn't already exist), then symlinking each of the folder subdirectories to the other extensions, in the same manner as is shown above for the INBOX, Old, and tmp subdirectories.

When you do it this way, the user of each extension should go into voicemail and record their individual unavailable message, busy message, and name. But you may want to instruct them to say something like, "Hi this is Jan, I can't take your call at the moment, but if you will leave a voicemail message, either I or someone else on our technical support staff will get back to you as quickly as possible." This lets callers know that they they are leaving a message that may be heard by someone other than the person they called (so that, for example, someone in the user's family doesn't leave a very personal message in the common voicemail box).

Remember, nothing on this page is officially supported by the developers of FreePBX. These are simply hacks that work. But if you have, for example, three or four extensions that come into the same phone (or group of phones), you can save yourself the hassle of checking multiple voicemail boxes this way.

Taxonomy upgrade extras: 

Comments

ravenber's picture

A much easier way is to change the mailbox account in the individual extension setup in freepbx. Ie, if the mailbox you want account 3295 to point to is 2008, simply change the mailbox to 2008@default instead of its own. Then, use followme to make the failover for the extension goto the general box. In this manner, the MWI works for all the phones (ie, they all flash on when there's a message in the shared mailbox), and you can dial *97 to goto the same mailbox.

Rosewood's picture

Two small notes for the second scenario "What if I want individual greetings but a common voicemail box?"

1) It isn't clear but you need to rm -rf the Inbox, Old, and tmp directories of each extension that you are wanting to setup for the common mailbox. e.g.
rm -rf /var/spool/asterisk/voicemail/default/202/INBOX
* Note that this deletes all voicemails

2) I had to use full paths to get the symbolic links to work properly. So following the example, I had to do ...
ln -s /var/spool/asterisk/voicemail/default/201/tmp/ /var/spool/asterisk/voicemail/default/202/tmp

jefft's picture

... that I've used, is to set up a custom extension - I used 789. This can then have voicemail enabled and be the shared mailbox. Similar to ravenber's suggestion, you can then point all the extensions at the one mailbox; and for incoming ring groups, IVR and such, set the "destination if unanswered" to go directly to voicemail/789.