Skip to main content

MOH not playing with default installation

Posted by tschilbach on Mon, 08/30/2010

This is a very weird occurrence. I have a default installation from the ISO just posted a few days ago with my conference bridge MOH not playing.

So far the only customization I made is turning off asterisk (chkconfig asterisk off) and changing the webmin portal from port 1000 to port 80 for easier user access.

I am using MTE edition and I setup a tenant in the system known as CTS. This tenant has all the default settings to include the files from the thirdlane (demo tenant) as a template. I created an inbound route binding the external DID with my internal conference bridge and all works flawlessly with the exception of the MOH.

The asterisk -r output for the dialed cal is the following:

Connected to Asterisk 1.6.2.11 currently running on voip1 (pid = 2722)
Verbosity is at least 3
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
== Using SIP VRTP TOS bits 136
== Using SIP VRTP CoS mark 4
== Using UDPTL TOS bits 184
== Using UDPTL CoS mark 5
-- Executing [8884286968@from-outside:1] Wait("SIP/CTS_Gateway-00000016", "1") in new stack
-- Executing [8884286968@from-outside:2] Set("SIP/CTS_Gateway-00000016", "__INCOMINGCLI=12627053621") in new stack
-- Executing [8884286968@from-outside:3] Goto("SIP/CTS_Gateway-00000016", "from-outside-redir,8884286968,1") in new stack
-- Goto (from-outside-redir,8884286968,1)
-- Executing [8884286968@from-outside-redir:1] Set("SIP/CTS_Gateway-00000016", "DIALED_PUBLIC_NUMBER=8884286968") in new stack
-- Executing [8884286968@from-outside-redir:2] Set("SIP/CTS_Gateway-00000016", "DIALED_NUMBER=8884286968") in new stack
-- Executing [8884286968@from-outside-redir:3] Set("SIP/CTS_Gateway-00000016", "status=1") in new stack
-- Executing [8884286968@from-outside-redir:4] GotoIf("SIP/CTS_Gateway-00000016", "1?7") in new stack
-- Goto (from-outside-redir,8884286968,7)
-- Executing [8884286968@from-outside-redir:7] GotoIfTime("SIP/CTS_Gateway-00000016", "*,*,*,*?from-outside-8884286968-tl-allhours-CTS,8884286968,1") in new stack
-- Goto (from-outside-8884286968-tl-allhours-CTS,8884286968,1)
-- Executing [8884286968@from-outside-8884286968-tl-allhours-CTS:1] Set("SIP/CTS_Gateway-00000016", "__tenant=CTS") in new stack
-- Executing [8884286968@from-outside-8884286968-tl-allhours-CTS:2] SetAMAFlags("SIP/CTS_Gateway-00000016", "billing") in new stack
-- Executing [8884286968@from-outside-8884286968-tl-allhours-CTS:3] Set("SIP/CTS_Gateway-00000016", "CDR(accountcode)=8884286968-IN") in new stack
-- Executing [8884286968@from-outside-8884286968-tl-allhours-CTS:4] Set("SIP/CTS_Gateway-00000016", "CDR(userfield)=CTS") in new stack
-- Executing [8884286968@from-outside-8884286968-tl-allhours-CTS:5] Set("SIP/CTS_Gateway-00000016", "MOH=default-CTS") in new stack
-- Executing [8884286968@from-outside-8884286968-tl-allhours-CTS:6] GotoIf("SIP/CTS_Gateway-00000016", "0?nomoh") in new stack
-- Executing [8884286968@from-outside-8884286968-tl-allhours-CTS:7] Set("SIP/CTS_Gateway-00000016", "CHANNEL(musicclass)=default-CTS") in new stack
-- Executing [8884286968@from-outside-8884286968-tl-allhours-CTS:8] Macro("SIP/CTS_Gateway-00000016", "tl-dialconference,10002100,,10002100") in new stack
-- Executing [s@macro-tl-dialconference:1] Wait("SIP/CTS_Gateway-00000016", "1") in new stack
-- Executing [s@macro-tl-dialconference:2] Set("SIP/CTS_Gateway-00000016", "CALLERID(name)=10002100") in new stack
-- Executing [s@macro-tl-dialconference:3] MeetMe("SIP/CTS_Gateway-00000016", "10002100,") in new stack
== Parsing '/etc/asterisk/meetme.conf': == Found
-- Created MeetMe conference 1023 for conference '10002100'
-- Playing 'conf-getpin.gsm' (language 'en')
-- Playing 'conf-onlyperson.gsm' (language 'en')
-- Hungup 'DAHDI/pseudo-1269653272'
== Spawn extension (macro-tl-dialconference, s, 3) exited non-zero on 'SIP/CTS_Gateway-00000016' in macro 'tl-dialconference'
== Spawn extension (from-outside-8884286968-tl-allhours-CTS, 8884286968, 8) exited non-zero on 'SIP/CTS_Gateway-00000016'

Out of this I see 2 important lines:

-- Executing [8884286968@from-outside-8884286968-tl-allhours-CTS:6] GotoIf("SIP/CTS_Gateway-00000016", "0?nomoh") in new stack
-- Executing [8884286968@from-outside-8884286968-tl-allhours-CTS:7] Set("SIP/CTS_Gateway-00000016", "CHANNEL(musicclass)=default-CTS") in new stack

I don't see the music player spawn at all. I doubled checked the conference room and the default tenant settings and the check box for "Enable music on hold when single caller" is checked.

What am I missing here?


Submitted by tschilbach on Mon, 08/30/2010 Permalink

HI Everyone,

After going back and looking at the alternative inbound scripts I could use I found a big difference between the tl-dialconference and tl-dialconference-prompted.

The first script is bare bones and dials right into teh conference bridge direct from a DID and works flawlessly with the exception of a few things:

1. It doesn't record voice announcements
2. It doesn't play any MOH at all.

Now when I switch to the 2nd script I listed above and tell it to go to the conference bridge, when you dial the DID it tell you the extension is NOT valid and to dial another one. Ok fine, I dial my bridge number and boom I am in. It does the voice prompts for me to say my name and plays the MOH without fail.

When I look at the two scripts, they are very different. The 1st script uses different arguments to contact t5he local bridge than the 2nd script does. I am going to create a 3rd script that will take the bets from both worlds and combine them and hopefully it will yield the results I am looking for.

Any other suggestions are always welcome.

Submitted by eeman on Mon, 08/30/2010 Permalink

its a training issue... you didn't specify the conference correctly when using dialconference-prompted... see recent patch notes since 6.1.1.2 for more information.

other comments

I have a default installation from the ISO just posted a few days ago with my conference bridge MOH not playing.
  
So far the only customization I made is turning off asterisk (chkconfig asterisk off) and changing the webmin portal from port 1000 to port 80 for easier user access.

lame.. you have no clue everything you broke by fighting with apache for port 80 access. You were better off having an index.php script issue a 301 redirect than to tell webmin to run on port 80. The end user still types in the same url without a port but webmin still runs on port 10000. Now you cannot do https because port 80 is an RFC violation to run SSL over that port, you've lost http and https provisioning by doing this also.

index.php
<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: https://host.domain.tld:10000" );
?>

Submitted by tschilbach on Mon, 08/30/2010 Permalink

I fixed the issue with a script modification. Actually I did assign the conference room in accordance with your release notes (was the 1st thing I read before I downloaded the new release).

Thanks for you advice on the port 80 redirection, I will look into that now and should help solve a few other issues.

As for my script mod I simply created a new script (tl-dialconference-prompted-alt from tl-dialconference-prompted) and commented out lines 2 and 6 as shown below:

exten => s,n,Set(TIMEOUT(response)=10)
;; exten => s,n,Set(prefix=${DB(TL/TENANT/${tenant}/tenantprefix)})
exten => s,n,Set(confno=${prefix}${ARG3})
exten => s,n,GotoIf($["${confno}" != "${prefix}"]?gotconf)
exten => s,n(getconf),Read(confno,conf-getconfno)
;; exten => s,n,Set(confno=${prefix}${confno})
exten => s,n(gotconf),NoOp(confno = ${confno})

This fixed the conference bridging issue for me.

Submitted by tschilbach on Mon, 08/30/2010 Permalink

I am checking out the features.txt What would be missed since this was a default install and the only changes that were made were ports based changes?

Also I hate the redirection to port 10000, no only is it unprofessional to have a portal that cant use port 80 (since most of our corporate customers only have access to the internet through 80 and 443) or 443, but our end users who are corporate based cant get to the portal because of firewall rules.

Most of our clients are govt offices and they don't have access to the firewall rules.

Can I use a single IP for webmin and another IP for apache without breaking everything?

Submitted by tschilbach on Mon, 08/30/2010 Permalink

BTW here is my features.txt file. Anything missing?

[general]
parkext => 700 ; What extension to dial to park
parkpos => 701-704 ; What extensions to park calls on. These needs to be
; numeric, as Asterisk starts from the start position
; and increments with one for the next parked call.
context => parkedcalls ; Which context parked calls are in
parkingtime => 180 ; Number of seconds a call can be parked for
; (default is 45 seconds)
transferdigittimeout => 3 ; Number of seconds to wait between digits when transfering a call
courtesytone = beep ; Sound file to play to the parked caller
; when someone dials a parked call
xfersound = beep ; to indicate an attended transfer is complete
xferfailsound = beeperr ; to indicate a failed transfer
;adsipark = yes ; if you want ADSI parking announcements
;findslot => next ; Continue to the 'next' free parking space.
; Defaults to 'first' available
pickupexten = ** ; Configure the pickup extension. Default is *8
featuredigittimeout = 1000 ; Max time (ms) between digits for
; feature activation. Default is 500

[featuremap]
blindxfer => ## ; Blind transfer
atxfer => #* ; Attended transfer
disconnect => #0 ; Disconnect
automon => #9 ; One Touch Record

[applicationmap]
; Note that the DYNAMIC_FEATURES channel variable must be set to use the features
; defined here. The value of DYNAMIC_FEATURES should be the names of the features
; to allow the channel to use separated by '#'. For example:
; Set(DYNAMIC_FEATURES=myfeature1#myfeature2#myfeature3)
;
;testfeature => #9,callee,Playback,tt-monkeys ;Play tt-monkeys to
;callee if #9 was pressed

[parkinglot_thirdlane] ;;=Asterisk-1.6
context => parkedcalls-thirdlane ;;=Asterisk-1.6
parkingtime => 180 ;;=Asterisk-1.6
parkext => 700 ;;=Asterisk-1.6
parkpos => 701-704 ;;=Asterisk-1.6
findslot => next ;;=Asterisk-1.6
[parkinglot_CTS]
context => parkedcalls-CTS
parkingtime => 180
parkext => 700
parkpos => 701-704
findslot => next
[parkinglot_Sarum]
context => parkedcalls-Sarum
parkingtime => 180
parkext => 700
parkpos => 701-704
findslot => next
[parkinglot_LenTech]
context => parkedcalls-LenTech
parkingtime => 180
parkext => 700
parkpos => 701-704
findslot => next
[parkinglot_OPS]
context => parkedcalls-OPS
parkingtime => 180
parkext => 700
parkpos => 701-704
findslot => next

I still cannot get the standard script to work, continuing to use my modified script. Not sure what I am supposed to be looking for on this one since its a default install with no mods...