Summary:ASTERISK-08040: voicemail fails when language set to german (de), 1 message present and no german sound files
Reporter:Philippe Lindheimer (p_lindheimer)Labels:
Date Opened:2006-11-01 13:53:34.000-0600Date Closed:2007-02-16 07:49:35.000-0600
Versions:Frequency of
Description:NOTE: this is on 1.2.10 but I believe the problem exists on later releases, just not in a position to test it.

When there are no German sound files, asterisk defaults to the english sound files. When there is a single message waiting, asterisk tries to play the sound file:


which doesn't exist in the english sound files. Therefore, voicemail plays:

vm-youhave ... and then dies because the file does not exist.

EXPECTED BEHAVIOR: it should fall back to digits/1

NOTE: from a quick scan, this problem is not limitted to to just this scenario. The suggested fix would be to have voicemail check if there are specific language sound files available and if not, reset the language within app_voicemail.c to english so that all the specific paths in the code that are expecting unique sound files don't barf.

****** STEPS TO REPRODUCE ******

set language to german (de)
make sure there is a single message in your voicemail box
don't have german sound files available
try to check your voicemail


log file output:

Nov  1 11:26:19 WARNING[7289] file.c: File digits/1F does not exist in any format
Nov  1 11:26:19 WARNING[7289] file.c: Unable to open digits/1F (format ulaw): No such file or directory

Comments:By: Jason Parker (jparker) 2006-11-17 12:20:11.000-0600

Solution: Either install German sounds files, or set the language to English.

Asterisk can't reasonably be expected to fall back to a default language on only certain sound files.  What happens in the case where the way to say numbers (ie; 1,000) are completely different between the languages (as happens quite often)?

By: Philippe Lindheimer (p_lindheimer) 2006-11-17 13:58:04.000-0600

Agreed - it should not fall back on individual sound files.

However, the voicemail application could easily determine if the language soundfile are installed at the begining and if they are not installed, very easily switch its entire behavior to english which is infact what happens silently until a soundfile that is not available is encoutered.

Trying to do a partial job (which is what happens passively by default) and then a 'silent' failure (reported by file.c in log, not at all obvious to the common administrator what that's all about) isnt' exactly an appropriate outcome.

By: Jason Parker (jparker) 2006-11-17 14:22:33.000-0600

I cannot agree that this is reasonable.

As an example, in vm_intro_cz, there are THREE different ways to say "new" and "message(s)", depending on the new message count.  In this particular case, if you limit the mailbox to 4 messages, it would be completely valid to not have "vm-novych" or "vm-zprav", however, with this proposed change, we would force these users to create new sound files that needn't exist previously - all for files that would never even be played.

This would open up a whole new can of worms, and many, many potential new "bugs".  Therefore, I feel (and I think others would agree with me) that this change is not necessary.  The appropriate fix for this issue, as I stated before, would be to install German prompts or to set the language to English.

By: Philippe Lindheimer (p_lindheimer) 2006-11-17 18:02:32.000-0600


I think one of us isn't understanding each other so I will restate my scenario. It would seem very possible to do the following:

1. Voicemail Application is entered
2. If (language != english) check if the desired language directory is there.
3. If not, set the language to english for the duration of the voicemail program (not at the channel level, just in the program)
4. Write a warning to the log file of this situation

As you can see - you are treating the entire session as english, so you don't get into the issue you describe since all the english files are there by default. (it does introduce a problem if no english files are installed - which might lead to the alternative below)

IF you are not going to do that, since you KNOW that it can fail. It would be very approriate to at least do the following:

1. Voicemail Application is entered
2. If (language != english) check if desired language directory is there.
3. if not, write a WARNING: to the log that the language files are not there and could lead to voicemail crashing. (since that is what happens).

It would seem that one or the other is appropriate. You have all the information - the desired language and the ability to check if that language file subdirectory is present. Silently crashing is not a good thing.

(fyi - the issue that brought this bug about was the installation of an isdn card that set the language to german by default in its config files, and was overlooked. The desired language was english - but the failure mode was clearly very hard to detect looking through the log files - where such a warning message would definitely be appropriate.)

By: Olle Johansson (oej) 2007-02-16 07:47:43.000-0600

Why do you set language to german if you don't have the sound files? I don't see the point.

By: Olle Johansson (oej) 2007-02-16 07:49:34.000-0600

Since both qwell and I don't see any bug here, I'm closing this.

The fix is not to use german as a language code if you don't have the required prompts. I think there's a similar issue with saynumber and saydate too.

If you come up with a fix for these applications, feel free to open a new bug report. THanks.