Unmute not working using dialplan

Hi
exten => 77777,n,System(/usr/sbin/asterisk -x ‘confbridge unmute 601 ${CHANNEL}’)

cli error
– Remote UNIX connection
– Remote UNIX connection disconnected

Sometimes it is unmuting and sometime not. please tell me how to unmute channel through dialplan.

I’m not a big fan of doing stuff with system(). I would probably use an AGI which may use AMI.

However, redirecting stdout and stderr and appending them to a log file in /tmp/ may yield clues.

Command is executing and showing the desired status but not functioning.

But when I do same command from cli , it is working fine.

when it is already showing channel unmute , why it is not function during command passed through dialplan.

There are no CLI errors in your posting!

You appear to be applying a confbridge operation to a channel that cannot be in the conference bridge at the time

Thanks for reply @david551

This dialplan running under confbridge menu

exten => 6661,1,ConfBridge(601,fancybridge6,fancyuser6,fancy_user_menu2)

6=dialplan_exec(addaudio,77777,1)

[addaudio]
exten => 77777,1,Playback(beep)
exten => 77777,n,Set(GROUP()=long1)
exten => 77777,n,Verbose(*** the number of simultaneous calls - ${GROUP_COUNT(long1)} ***)
exten => 77777,n,GotoIf($[${GROUP_COUNT(long1)} > 1]?busy1)
exten => 77777,n,System(/usr/sbin/asterisk -x ‘confbridge unmute 601 ${CHANNEL}’)

We are looking, only one participant should unmute at at time. pls see.

I presume the missing code for label busy1 removes the channel from long1?

No, it is not like that, call pursuing, status also changing to unmute but unmute not functioning, I tried also with .sh file for execution but result same, but when I execute same commad from cli, its works. pls see.

[addaudio]
exten => 77777,1,Playback(beep)
exten => 77777,n,Set(GROUP()=long1)
exten => 77777,n,Verbose(*** the number of simultaneous calls - ${GROUP_COUNT(long1)} ***)
exten => 77777,n,GotoIf($[${GROUP_COUNT(long1)} > 1]?busy1)
exten => 77777,n,System(/usr/sbin/asterisk -x ‘confbridge unmute 601 ${CHANNEL}’)
exten => 77777,n,MixMonitor(${CALLERID(num)}-${STRFTIME(|EST5EDT|%m%d%Y-%H%M%S)}.wav)
exten => 77777,n,System(echo -e “asterisk -x ‘confbridge unmute 601 ${CHANNEL}’” > /tmp/abcdef.sh)
exten => 77777,n,System(/usr/bin/sh /tmp/abcdef.sh)
exten => 77777,n,WaitExten(20)
exten => 77777,n,StopMixMonitor()
exten => 77777,n(busy1),Goto(addaudio1,77777,1)

10*CLI> confbridge list 601
Channel Flags User Profile Bridge Profile Menu CallerID
============================== ====== ================ ================ ================ ================
SIP/airtelprit2-00000693 A fancyuser6 fancybridge6 fancy_user_menu2 9582291326

My guess would be that it is because the channel is taken out of the bridge in order to run the dialplan, and the designers didn’t consider that anyone might want to issue a command that changed the state of the channel, in the bridge, whilst the channel was in the application, but out of the bridge.

I wouldn’t like to say whether that is a bug, but would note that, if the designers would have wanted a busy lockout feature, they would have implemented it within the code.

I have a suspicion that this is an attempted engineering solution to a social problem.

any solution suggestions ?

This is not something I would consider safe to do here, but I’d need to do some careful code reading to be sure exactly what the impact would be. I’m wondering if there is some misunderstanding here that you can be talking in the conference at the same time as executing dialplan, which seems very unlikely. I’d think you would have to return from the dialplan to re-establish the conference bridge.

It looks like any user who uses this feature will be locked out of the conference, as there seems to be no way back, except, possibly, through some subtlety of WaitExten.

We want that participant would remain unmute for a certain time, after a time it will become mute. Would you suggest to use here ami confbridge event if it works.

[addaudio1]
exten => 77777,1,StopMixMonitor()
exten => 77777,n,Set(GROUP()=${MATH(${GROUP_COUNT(long1)}-1,i)})
exten => 77777,n,agi(googletts.agi,“Busy or Mute”,hi)
exten => 77777,n,System(asterisk -x ‘confbridge mute 601 ${CHANNEL}’)

Can I try to use .call file in this scenario.

I think the only sensible ways of doing this are:

  1. to modify the confbridge source code to add a suitable new feature.

  2. to write an AMI application that monitors DTMF (or at a push, use exec_dialplan to generate a custom event), and does all the interlocking and time limit logic, and uses ConfbridgeMute and ConfbridgeUnmute actions to control the muting.

PS your original logic doesn’t seem to decrement the group count until the user finally leaves the conference, so one someone gets the right to speak everyone else is locked out until that person finally leaves.

Yes , we are planning only one user at a time should able to speak.

But still it seems not workable due to unmute issue. Mute is working through dialplan but issue with unmute as not well working.

I don’t think you understood what I wrote.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.