[asterisk-dev] [Code Review] 2764: Add edit-MASTER-channel option to CHANNEL() function. To work around channel optimization removing my channel settings.

Matt Jordan reviewboard at asterisk.org
Wed Aug 21 08:47:02 CDT 2013


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/2764/#review9454
-----------------------------------------------------------


Why not use pre-dial to put the musicclass directly on the channel that will survive, as opposed to the Local channel?

- Matt Jordan


On Aug. 16, 2013, 3:26 p.m., wdoekes wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/2764/
> -----------------------------------------------------------
> 
> (Updated Aug. 16, 2013, 3:26 p.m.)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Repository: Asterisk
> 
> 
> Description
> -------
> 
> I'm trying to set a musicclass from a Local channel.
> 
> After the channels get bridged, the Local channels get optimized away
> and now I get the wrong musicclass.
> 
> This patch fixes so I can alter the master CHANNEL settings instead.
> 
> Instead of:
> 
>   Set(CHANNEL(musicclass)=special)
> 
> We do:
> 
>   Set(CHANNEL(musicclass,M)=special)
> 
> If there is some other way I should've done this, I'd like to hear how :)
> 
> 
> Diffs
> -----
> 
>   /trunk/funcs/func_channel.c 396839 
> 
> Diff: https://reviewboard.asterisk.org/r/2764/diff/
> 
> 
> Testing
> -------
> 
> === extensions.conf ===
> 
> [general]
> 
> [default]
> exten => 1,1,Goto(direct,1)
> exten => 2,1,Goto(local,1)
> exten => 3,1,Goto(localm,1)
> 
> exten => direct,1,NoOp(Direct)
> 	same => n,Set(CHANNEL(musicclass)=special)
> 	same => n,NoOp(musicclass: ${CHANNEL(musicclass)})
> 	same => n,Goto(dial,1)
> 
> exten => local,1,Dial(Local/local2 at default)
> exten => local2,1,NoOp(Local, no Master)
> 	same => n,Set(CHANNEL(musicclass)=special)
> 	same => n,NoOp(musicclass: ${CHANNEL(musicclass)})
> 	same => n,Goto(dial,1)
> 
> exten => localm,1,Dial(Local/localm2 at default)
> exten => localm2,1,NoOp(Local, with Master)
> 	same => n,Set(CHANNEL(musicclass,M)=special)
> 	same => n,NoOp(musicclass: ${CHANNEL(musicclass,M)})
> 	same => n,Goto(dial,1)
> 
> exten => dial,1,Dial(SIP/victim)
> 
> === musiconhold.conf ===
> 
> [general]
> 
> [default]
> mode=files
> directory=moh
> 
> [special]
> mode=files
> directory=moh
> 
> === output ===
> 
> `caller` calls `victim`, and `victim` presses hold.
> 
> Like expected, the only direct and localm channels get the right musicclass set.
> 
> 1:
>     -- Executing [direct at default:1] NoOp("SIP/caller-00000000", "Direct") in new stack
>     -- Executing [direct at default:2] Set("SIP/caller-00000000", "CHANNEL(musicclass)=special") in new stack
>     -- Executing [direct at default:3] NoOp("SIP/caller-00000000", "musicclass: special") in new stack
> ...
>     -- Started music on hold, class 'special', on SIP/caller-00000000
> 
> 2:
>     -- Executing [local at default:1] Dial("SIP/caller-00000004", "Local/local2 at default") in new stack
>     -- Called Local/local2 at default
>     -- Executing [local2 at default:1] NoOp("Local/local2 at default-00000001;2", "Local, no Master") in new stack
>     -- Executing [local2 at default:2] Set("Local/local2 at default-00000001;2", "CHANNEL(musicclass)=special") in new stack
>     -- Executing [local2 at default:3] NoOp("Local/local2 at default-00000001;2", "musicclass: special") in new stack
> ...
>     -- Move-swap optimizing Local/local2 at default-00000001;1 <-- SIP/victim-00000005.
> ...
>     -- Started music on hold, class 'default', on SIP/caller-00000004
> 
> 3:
>     -- Executing [localm at default:1] Dial("SIP/caller-0000000c", "Local/localm2 at default") in new stack
>     -- Executing [localm2 at default:1] NoOp("Local/localm2 at default-00000005;2", "Local, with Master") in new stack
>     -- Called Local/localm2 at default
>     -- Executing [localm2 at default:2] Set("Local/localm2 at default-00000005;2", "CHANNEL(musicclass,M)=special") in new stack
>     -- Executing [localm2 at default:3] NoOp("Local/localm2 at default-00000005;2", "musicclass: special") in new stack
> ...
>     -- Move-swap optimizing Local/localm2 at default-00000002;1 <-- SIP/victim-00000007.
> ...
>     -- Started music on hold, class 'special', on SIP/caller-00000006
> 
> 
> Thanks,
> 
> wdoekes
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20130821/d5826959/attachment-0001.htm>


More information about the asterisk-dev mailing list