Define custom vm-login sound file per VM context?

Home » Asterisk Users » Define custom vm-login sound file per VM context?
Asterisk Users 9 Comments

Is it possible to define a customize the which sound file is played when I
send a caller to VoiceMailMain()?

By default the sound file is vm-login..

Is there a way to specify which sound file is played per context or some
other way to play a different sound file in place of vm-login?

I have already replaced the default file and named it the same vm-login.x
but still I am only able to play one file, not a different file depending
on the VM context I send the caller to.

I am sure someone has figured this out so, any shortcut to keep me from
frying my brain on this would be appreciated.

Thanks!

9 thoughts on - Define custom vm-login sound file per VM context?

  • I believe this is what you want. Instead of this

    Exten => _X.,123,Voicemail(100)

    Do

    Exten => _X.,123,playback(your-message)

    Exten => _X.,123,voicemail(100,s)

    Per the instructions, (100) plays the standard message, (100,b) plays busy
    (100,u) plays unavailable and (100,s) plays nothing (skip instructions).

    [mailto:asterisk-users-bounces@lists.digium.com] On Behalf Of Todd Routhier
    Sent: Tuesday, February 21, 2012 10:53 AM

    Is it possible to define a customize the which sound file is played when I
    send a caller to VoiceMailMain()?

    By default the sound file is vm-login..

    Is there a way to specify which sound file is played per context or some
    other way to play a different sound file in place of vm-login?

    I have already replaced the default file and named it the same vm-login.x
    but still I am only able to play one file, not a different file depending on
    the VM context I send the caller to.

    I am sure someone has figured this out so, any shortcut to keep me from
    frying my brain on this would be appreciated.

    Thanks!

  • Danny,

    This seems to be a solution for sending people to leave a voicemail, I
    need a solution for VoiceMailMain() when people call in to get their
    messages, change greeting etc.

    If I use the s option with VoiceMailMain it just skips checking the
    passcode according to the docs.

    Thanks for your help though, any similar ideas for VoiceMailMain?

    I am playing the sound file I need before sending them to VoiceMailMain but
    then Comedian Mail! plays right after of course.

  • There was a “kludgy” solution posted a while back that might work for you.
    Since Asterisk is “multi-lingual” you could do this

    Exten => _X.,123,Set(CHANNEL(language)=fr)

    Exten => _X.,124,Voicemailmain()

    This assumes you aren’t using fr(French). Just copy
    /var/lib/asterisk/sounds/en to /var/lib/asterisk/sounds/fr and record your
    alternate instructions in /var/lib/asterisk/sounds/fr/vm-login.gsm (or
    whatever codec you are using). Using this work-around you could have as
    many greetings as you can specify “languages” for.

    [mailto:asterisk-users-bounces@lists.digium.com] On Behalf Of Todd Routhier
    Sent: Tuesday, February 21, 2012 11:31 AM
    context?

    Danny,

    This seems to be a solution for sending people to leave a voicemail, I need
    a solution for VoiceMailMain() when people call in to get their messages,
    change greeting etc.

    If I use the s option with VoiceMailMain it just skips checking the passcode
    according to the docs.

    Thanks for your help though, any similar ideas for VoiceMailMain?

    I am playing the sound file I need before sending them to VoiceMailMain but
    then Comedian Mail! plays right after of course.

  • The sound files referenced by voicemail.conf are global for all
    mailboxes defined in the configuration file, regardless of whether or
    not those mailboxes are defined in separate contexts. Hence, whatever
    is defined for the ‘vm-login’ sound will be played for all users.

    For this one sound file (and this one sound file only), there is a
    mechanism you can use to bypass playing this sound file back. You
    can tell VoiceMailMain to skip authentication of the user using the
    ‘s’ flag, and use VMAuthenticate to authenticate the user yourself.
    Note that internally, VoiceMailMain uses VMAuthenticate, so you’re
    using the exact same mechanism, just from the dialplan. If you pass the
    ‘s’ flag to VMAuthenticate, it will not play the vm-login sound,
    allowing you, if you want, to play a different soundfile.

    In general, it would look something like this (please don’t expect this
    to work verbatim, but it gives you an idea):

    exten => 1,1,NoOp()
    same => n,Background(“Your-sound-file”)
    same => n,VMAuthenticate(1@default,s)
    same => n,GotoIf($[${AUTH_MAILBOX}=1] & $[${AUTH_CONTEXT}=default]?auth:failed)
    same => n(auth),VoiceMailMain(s)
    same => n,Hangup()
    same => n(fail),Hangup()

    Matthew Jordan
    Digium, Inc. | Software Developer
    445 Jan Davis Drive NW – Huntsville, AL 35806 – USA
    Check us out at: http://digium.com & http://asterisk.org

  • Wow, that makes me wonder if I could do something like:

    Set(CHANNEL(language)=Cust327)

    Then create a “Language” folder named Cust327 and have it just work.
    Weee… 🙂

    Of course that leads me to think that I could have whole sets of custom
    sounds for all of Asterisk based on setting this Language bit on the way in.

    Guess this would all work as long as there is not some requirement in
    Asterisk that a language setting must be a real country/language code and
    not something made up.

  • If I recall correctly, it does have to be a “real” country and a two-letter
    code, but that still gives you hundreds of variants for this kludge.

    [mailto:asterisk-users-bounces@lists.digium.com] On Behalf Of Todd Routhier
    Sent: Tuesday, February 21, 2012 12:18 PM
    context?

    Wow, that makes me wonder if I could do something like:

    Set(CHANNEL(language)=Cust327)

    Then create a “Language” folder named Cust327 and have it just work. Weee…
    🙂

    Of course that leads me to think that I could have whole sets of custom
    sounds for all of Asterisk based on setting this Language bit on the way in.

    Guess this would all work as long as there is not some requirement in
    Asterisk that a language setting must be a real country/language code and
    not something made up.

  • OK, this will work and is probably a better solution than the language
    idea. Although, the language idea just sounds easier and a little more fun
    🙂

    Hmm, I think I will try the language solution and see if it works with a
    fake country/language code like Cust327 or whatever.

    Just wonder if that will break anything else now or with future upgrades.

    Thanks for all the help!

  • 2012-02-21 19:20, Todd Routhier skrev:

    You can also use en_baselevel_customer234 as a language,
    asterisk will first try to find a soundfile in the
    en_baselevel_customer234-directory, and if not found in the
    en_baselevel-directory. After that it will look in the en-dir.

    Can’t find the docs for this right now but this way you don’t need to
    copy all the recordings, and you can stack as many layers as you like.. 🙂

    /Johan