ChanSpy / ConfBridge limitation

Mark Murawski <[email protected]> Sun, 14 Jan 2024 20:09:49 -0500
Newsgroups gmane.comp.telephony.pbx.asterisk.devel
Message-ID <[email protected]>
This is a multi-part message in MIME format.
--===============1990365179955960301==
Content-Type: multipart/alternative;
 boundary="------------UNyNkNKVKh6FCnFcxkDIVO1I"
Content-Language: en-US

This is a multi-part message in MIME format.
--------------UNyNkNKVKh6FCnFcxkDIVO1I
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

Howdy -dev,

Looking for a starting point to investigate this issue:

Using the following AEL (and Running straight-dialplan results in the 
same issue)

context services {
   2802 => {
     Answer();
     Set(GLOBAL(foo)=${CHANNEL});
     ConfBridge(Agent-PJSIP/2802);
   }

   9000 => {
     Answer();
     ChanSpy(${foo},qoSE);
   }
}

PJSIP/2802-00003b18 -> ConfBridge("Agent-PJSIP/2802")
<CBAnn/Agent-PJSIP/2802-00000075;2> joined 'softmix' base-bridge <56974564-b175-4b6a-93fc-fe4753082213>
<PJSIP/2802-00003b18> joined 'softmix' base-bridge <56974564-b175-4b6a-93fc-fe4753082213>

PJSIP/trunk-bob-00003b19 -> ChanSpy("PJSIP/2802-00003b18,qoSE")
Spying on channel PJSIP/2802-00003b18
Attaching spy channel PJSIP/trunk-bob-00003b19 to PJSIP/2802-00003b18


Issue:
   No audio is flowing from Spied-on PJSIP/2802-00003b18 to the spy-er PJSIP/trunk-bob-00003b19


If for example, you change 2802 to the following:

   2802 => {
     Answer();
     Set(GLOBAL(foo)=${CHANNEL});
     Dial(PJSIP/2803);
   }


Wait for the call to connect/answer
   PJSIP/2802-00003b20 -> PJSIP/2803-00003b5d (callee answered)

And then run the same ChanSpy with options qoSE, resulting in:
   PJSIP/trunk-bob-00003b97 -> ChanSpy("PJSIP/2802-00003b20,qoSE")
   Attaching spy channel PJSIP/trunk-bob-00003b97 to PJSIP/2802-00003b20


Result:
   Audio IS flowing from spied-on PJSIP/2802-00003b20 to the spy-er on PJSIP/trunk-bob-00003b97



One might say: Well, ChanSpy/ConfBridge don't mix... but then if you do the following... this DOES work:
   
context services {
   2802 => {
     Answer();
     Set(GLOBAL(foo)=${CHANNEL});
     ConfBridge(Agent-PJSIP/2802);
   }

   9000 => {
     Answer();
     ChanSpy(${foo},qwSE);
   }
}

Changing the option from 'o' to 'w', allows you to whisper to PJSIP/2802

----


Goal:
   Extract out an individual speaker's audio that's going into a ConfBridge
   (Cannot join the bridge as a member, because then you're getting all participants audio)


Summary:
   1) You can whisper to a channel that joined a ConfBridge
   2) You cannot listen to the audio from a channel that joined a ConfBridge


Also:
   I tried ChanSpy()'ing into both CBAnn/...;1  and CBAnn/...;2 and I could not get audio from here either


Is this a bug or a limitation/missing-feature?


What would be a good place to look into for resolving #2 ?


Thanks!



--------------UNyNkNKVKh6FCnFcxkDIVO1I
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit

<!DOCTYPE html>
<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Howdy -dev,<br>
    <br>
    Looking for a starting point to investigate this issue:<br>
    <br>
    Using the following AEL (and Running straight-dialplan results in
    the same issue)<br>
    <br>
    <pre
style="color: rgb(0, 0, 0); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; overflow-wrap: break-word; white-space: pre-wrap;">context services {
  2802 =&gt; {
    Answer();
    Set(GLOBAL(foo)=${CHANNEL});
    ConfBridge(Agent-PJSIP/2802);
  }

  9000 =&gt; {
    Answer();
    ChanSpy(${foo},qoSE);
  }
}

PJSIP/2802-00003b18 -&gt; ConfBridge("Agent-PJSIP/2802")
&lt;CBAnn/Agent-PJSIP/2802-00000075;2&gt; joined 'softmix' base-bridge &lt;56974564-b175-4b6a-93fc-fe4753082213&gt;
&lt;PJSIP/2802-00003b18&gt; joined 'softmix' base-bridge &lt;56974564-b175-4b6a-93fc-fe4753082213&gt;

PJSIP/trunk-bob-00003b19 -&gt; ChanSpy("PJSIP/2802-00003b18,qoSE")
Spying on channel PJSIP/2802-00003b18
Attaching spy channel PJSIP/trunk-bob-00003b19 to PJSIP/2802-00003b18


Issue:
  No audio is flowing from Spied-on PJSIP/2802-00003b18 to the spy-er PJSIP/trunk-bob-00003b19


If for example, you change 2802 to the following:

  2802 =&gt; {
    Answer();
    Set(GLOBAL(foo)=${CHANNEL});
    Dial(PJSIP/2803);
  }


Wait for the call to connect/answer
  PJSIP/2802-00003b20 -&gt; PJSIP/2803-00003b5d (callee answered)

And then run the same ChanSpy with options qoSE, resulting in:
  PJSIP/trunk-bob-00003b97 -&gt; ChanSpy("PJSIP/2802-00003b20,qoSE")
  Attaching spy channel PJSIP/trunk-bob-00003b97 to PJSIP/2802-00003b20


Result:
  Audio IS flowing from spied-on PJSIP/2802-00003b20 to the spy-er on PJSIP/trunk-bob-00003b97



One might say: Well, ChanSpy/ConfBridge don't mix... but then if you do the following... this DOES work:
  
context services {
  2802 =&gt; {
    Answer();
    Set(GLOBAL(foo)=${CHANNEL});
    ConfBridge(Agent-PJSIP/2802);
  }

  9000 =&gt; {
    Answer();
    ChanSpy(${foo},qwSE);
  }
}

Changing the option from 'o' to 'w', allows you to whisper to PJSIP/2802

----


Goal:
  Extract out an individual speaker's audio that's going into a ConfBridge
  (Cannot join the bridge as a member, because then you're getting all participants audio)


Summary:
  1) You can whisper to a channel that joined a ConfBridge
  2) You cannot listen to the audio from a channel that joined a ConfBridge


Also:
  I tried ChanSpy()'ing into both CBAnn/...;1  and CBAnn/...;2 and I could not get audio from here either


Is this a bug or a limitation/missing-feature?


What would be a good place to look into for resolving #2 ?


Thanks!



</pre>
  </body>
</html>

--------------UNyNkNKVKh6FCnFcxkDIVO1I--


--===============1990365179955960301==
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: inline

LS0gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwotLSBCYW5kd2lkdGggYW5kIENvbG9jYXRpb24gUHJvdmlkZWQgYnkg
aHR0cDovL3d3dy5hcGktZGlnaXRhbC5jb20gLS0KCmFzdGVyaXNrLWRldiBtYWlsaW5nIGxpc3QK
VG8gVU5TVUJTQ1JJQkUgb3IgdXBkYXRlIG9wdGlvbnMgdmlzaXQ6CiAgIGh0dHA6Ly9saXN0cy5k
aWdpdW0uY29tL21haWxtYW4vbGlzdGluZm8vYXN0ZXJpc2stZGV2

--===============1990365179955960301==--