Voicemail bug

Hello,

We have recently been pushed off of Metaswitch’s hosted voicemail system (they are discontinuing), and installed Trixbox, 1.6.26-1. We migrated all customers to the new system and now have a strange random bug. Occasionally, when a customer checks new VM, Asterisk will play the envelope but then exits prematurely instead of playing the message. Here is how it looks: (i have replaced the actual phone number with ‘xxphone_numxx’)

-- Executing [*98@from-internal:108] VoiceMailMain("SIP/inbound-meta-00000912", "xxphone_numxx@default") in new stack
-- <SIP/inbound-meta-00000912> Playing 'vm-password.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-youhave.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'digits/20.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'digits/8.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-INBOX.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-and.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'digits/2.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-Old.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-messages.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-onefor.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-INBOX.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-messages.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-opts.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-first.ulaw' (language 'en')
-- <SIP/inbound-meta-00000912> Playing 'vm-message.ulaw' (language 'en')

== Parsing ‘/var/spool/asterisk/voicemail/default/xxphone_numxx/INBOX/msg0000.txt’: == Found
– <SIP/inbound-meta-00000912> Playing ‘vm-received.ulaw’ (language ‘en’)
– <SIP/inbound-meta-00000912> Playing ‘digits/day-1.ulaw’ (language ‘en’)
– <SIP/inbound-meta-00000912> Playing ‘digits/at.ulaw’ (language ‘en’)
– <SIP/inbound-meta-00000912> Playing ‘digits/4.ulaw’ (language ‘en’)
– <SIP/inbound-meta-00000912> Playing ‘digits/18.ulaw’ (language ‘en’)
– <SIP/inbound-meta-00000912> Playing ‘digits/p-m.ulaw’ (language ‘en’)
– <SIP/inbound-meta-00000912> Playing ‘digits/3.ulaw’ (language ‘en’)
== Spawn extension (from-internal, *98, 108) exited non-zero on ‘SIP/inbound-meta-00000912’
– Executing [h@from-internal:1] Macro(“SIP/inbound-meta-00000912”, “hangupcall”) in new stack
– Executing [s@macro-hangupcall:1] GotoIf(“SIP/inbound-meta-00000912”, “1?skiprg”) in new stack
– Goto (macro-hangupcall,s,4)
– Executing [s@macro-hangupcall:4] GotoIf(“SIP/inbound-meta-00000912”, “1?skipblkvm”) in new stack
– Goto (macro-hangupcall,s,7)
– Executing [s@macro-hangupcall:7] GotoIf(“SIP/inbound-meta-00000912”, “1?theend”) in new stack
– Goto (macro-hangupcall,s,9)
– Executing [s@macro-hangupcall:9] Hangup(“SIP/inbound-meta-00000912”, “”) in new stack
== Spawn extension (macro-hangupcall, s, 9) exited non-zero on ‘SIP/inbound-meta-00000912’ in macro ‘hangupcall’
== Spawn extension (from-internal, h, 1) exited non-zero on ‘SIP/inbound-meta-00000912’

The interesting part, is after is plays the day and time, 4 18 pm, it played an extra digit: – <SIP/inbound-meta-00000912> Playing ‘digits/3.ulaw’ (language ‘en’), then terminated the call.

My NOC can fix this by deleting out messages, but until the customer can contact us they are completely stuck.

If you have any ideas or need more information, please let me know.

-Matt

I found the solution to this today! In the msg000x.txt file, there is a duration field:
duration=192 (or however many seconds) the message is.

I noticed that is capped at 192. Trying to play the message, it would say the time envelope, then “3” (minutes) and hang up. I edited this file and changed the duration to 120 and then it played envelope, then “2” (minutes) and hung up. So I set duration=12 and then all was well.

I then edited /etc/asterisk/voicemail.conf and set the following values:

maxsecs=600 (10 minutes up from 300-5minutes)
minsecs=3 (this was commented out - I also had issues with VM that was empty)
sayduration=no (this was commented out with a default of YES. After doing this, it no longer played the extra digit, and VM works fine)