Skip to main content

Conference with no MOH and no dtmf after the user is in the conference

Posted by kyriakos on Wed, 11/05/2008

Hi all,
I am facing the following problems with conferences and i was wondering if anyone knows anything:

1) I have no MOH in conferences even though normal MOH works ok. I am using a digium card for clocking.

2)DTMFs seem to work ok for pin input in conference but after the user gets into the conference , asterisk does not seem to receive the dtmf * when i press it so i can get the menu.

Any ideas will be deeply appreciated!


Submitted by kyriakos on Wed, 11/05/2008 Permalink

OK, as usual a while after posting I found the problem :P

It looks like the conference room options available in the Conference room tab , are not being included even though i choose them!

The issue now is why are they not included? Does anyone else face this?

This is the line for the inbound route for the conference

/etc/asterisk/inbound_actions.include:exten => 22693430,n(nomoh),Macro(tl-dialconference,350,,NOCconf)

As you can see there are no options included there. Normally, when choosing conference room from the dropdown list for tl-dialconference script , the options should be read and added during the creation of the above line.

Submitted by justdave on Wed, 11/05/2008 Permalink

Would probably be more useful to have the script actually read the options out of the database when it's run like it does when you go in through the manual prompted version. Although I can see where someone might want the shortcut script like that to override something going in, so it'd probably be better to make a new script that uses the database without prompting.

I cloned tl-dialconference-prompted and changed it to allow for a conference room number to optionally be passed in (and prompt for it if it's not)... here's that version:

[my-dialconference]

use=inbound,feature

friendlyname=Go to Conference (use DB options)

description

Provides access to a conference room prompting for a room number.

Allows to use per-conference configuration settings. Extra conference options can be added to the options specified in the conference configuration settings. Optional argument allows to prepend a text string to the caller id name.

This version skips prompting for a room number if one is passed in as an argument.

args=1,Extra conference options,text:2,Text to prepend to caller id name,text:3,Conference Number (optional - will prompt if not given),conference

body

exten => s,1,Answer

exten => s,n,Wait(1)

exten => s,n,Set(CALLERID(name)=${ARG2}${CALLERID(name)})

exten => s,n,Set(attempts=0)

exten => s,n,Set(TIMEOUT(digit)=4)

exten => s,n,Set(TIMEOUT(response)=10)

exten => s,n,Set(confno=${ARG3})

exten => s,n,GotoIf($["${confno}" != ""]?gotconf)

exten => s,n(getconf),Read(confno,conf-getconfno)

exten => s,n(gotconf),NoOp(confno = ${confno})

exten => s,n,NoOp(confno = ${confno})

;; check if conference exists and is enabled

exten => s,n,Set(status=${DB(TL/CONF/${confno}/status)})

exten => s,n,GotoIf($["${status}" != "1"]?confinvalid)

exten => s,n,Set(moh=${DB(TL/CONF/${confno}/moh)})

exten => s,n,Set(maxusers=${DB(TL/CONF/${confno}/maxusers)})

exten => s,n,Set(userpin=${DB(TL/CONF/${confno}/userpin)})

exten => s,n,Set(adminpin=${DB(TL/CONF/${confno}/adminpin)})

exten => s,n,Set(options=${DB(TL/CONF/${confno}/options)})

;; check if maxusers has been reached

exten => s,n,GotoIf($["${maxusers}" = ""]?pregetpin)

exten => s,n,MeetmeCount(${confno},count)

exten => s,n,GotoIf($[${count} >= ${maxusers}]?full:pregetpin)

exten => s,n(confinvalid),Playback(conf-invalid)

exten => s,n,Set(attempts=$[${attempts} + 1])

exten => s,n,GotoIf($[${attempts} = 3]?endconf) ; bail out after 3 attempts

exten => s,n,Goto(getconf)

exten => s,n(pregetpin),Set(attempts=0) ; reset the counter for pin prompt

; always ask for pin so admin could enter his or empty pin could be entered if not required

exten => s,n(getpin),Read(pin,conf-getpin)

exten => s,n,NoOp(pin = ${pin})

exten => s,n,GotoIf($["${pin}" = "${userpin}"]?getoptions) ; user pin matched

exten => s,n,GotoIf($["${pin}" = ""]?pininvalid) ; no empty admin pins

exten => s,n,GotoIf($["${pin}" = "${adminpin}"]?setadmin) ; admin pin matched

exten => s,n(pininvalid),Playback(conf-invalidpin)

exten => s,n,Set(attempts=$[${attempts} + 1])

exten => s,n,GotoIf($[${attempts} = 3]?endconf) ; bail out after 3 attempts

exten => s,n,Goto(getpin)

exten => s,n(setadmin),Set(adminoptions=Aa) ; additional options to pass to MeetMe for an admin

exten => s,n(getoptions),GotoIf($["${options}" != "" | "${ARG1}" != "" ]?startconf)

exten => s,n,Set(options=${DEFAULT_CONF_OPTS}) ; only if the conf didn't specify any

exten => s,n(startconf),SetMusicOnHold(${moh})

;; may need absolute path???

exten => s,n,Set(MEETME_RECORDINGFILE=conf-${confno}-${STRFTIME(,,%F-%T)}-${confno}${TL_DASH}${tenant})

exten => s,n,MeetMe(${confno},${options}${ARG1}${adminoptions},${pin})

exten => s,n(endconf),Playback(vm-goodbye)

exten => s,n,Wait(2)

exten => s,n,Hangup

exten => s,n(full),NoOp(Conference full)

;; record message for conference full

exten => s,n,Playback(vm-goodbye)

exten => s,n,Goto(getconf)

To use this, append the above onto the end of /etc/asterisk/user_scripts_source.include , then add this:

[macro-my-dialconference]

onto the end of user_scripts.include followed by everything in the first snippet after the line that says 'body'. Then go to the GUI and tell it to reload the config. (or type "reload" from the CLI).

Kinda wish there was an easier way to import saved scripts, but I sure can't find one.

Submitted by kyriakos on Thu, 11/06/2008 Permalink

justdave thank you for the reply.

It would be nice though if this was done in generic scripts directly so in further upgrades of the pbx manager the scripts remain consinstent since scripts may be changed due to asterisk software changes, etc but the custom scripts remain unchanged.

Of course using custom scripts is good, I use them a lot but i consider the script tl-dialconference a basic script which should be working ok.

Submitted by justdave on Thu, 11/06/2008 Permalink

Hopefully its use would be temporary if Alex likes it, because then he can incorporate this into the next version and you can go back to using his. :) The one I posted above can be used interchangeably with tl-dialconference-prompted without changing any of its existing interface, so those changes could be added to tl-dialconference-prompted to get the extra functionality and avoid the duplication without disturbing anything it already does.

Submitted by kyriakos on Thu, 11/06/2008 Permalink

Another problem with conference is that the conference manager is not working! even though i have one person logged in to the conference , conference manager shows nothing.

Any ideas?

From CLI:

CLI> meetme list 350

User #: 01 314 conf_Kyriakos Mavrom Channel: SIP/314-00875ef0 (not talking) 00:01:39

1 users in that conference.