[asterisk-dev] Detecting B-leg channels

George Joseph gjoseph at sangoma.com
Tue Aug 24 13:45:14 CDT 2021


On Tue, Aug 24, 2021 at 12:20 PM Nikša Baldun <it at voxdiversa.hr> wrote:

> I have checked it, and that led me to bridge.c. Perhaps I wasn't clear
> enough. These are the channels involved in attended transfer:
>
> (transferee) <> (transferer1) (transferer2) <> (transfer target)
>
> Transferee and transfer target are not readily available in
> res_pjsip_refer.c, but I can get them in bridge.c, as long as both calls
> are bridged. But transfer target may be in ringing state, and in that case
> there is no bridge whose members I can check. Also, there could be multiple
> ringing channels. So in that case, I need a way to get all ringing channels
> which belong to transferrer2 channel. I was wondering if there is an
> existing method for that, or do I have to devise my own.
>
The only idea which comes to mind is to iterate over all channels in the
> system and compare their LinkedId to transferer2 UniqueId.
>
Please don't do that. :)

So, Alice (transferee) is on an existing call (channel transferer1), she
transfers to Bob (transfer target), Asterisk sets up channel transferer2 to
call Bob and Bob is ringing but hasn't answered yet.  Right?   Optionally,
Alice transfers to a "ring group" which causes Asterisk to create multiple
outbound channels, correct?    The only place I can think of that knows
about this is app_dial.



> On 24. 08. 2021. 19:38, George Joseph wrote:
>
>
>
> On Tue, Aug 24, 2021 at 11:22 AM Nikša Baldun <it at voxdiversa.hr> wrote:
>
>> Hello,
>>
>> I am using chan_pjsip.
>>
> Check res_pjsip_refer.c  you may be able to intercept both channels there.
>
>
>
>> On 24. 08. 2021. 18:55, George Joseph wrote:
>>
>>
>>
>> On Mon, Aug 23, 2021 at 4:29 AM Nikša Baldun <it at voxdiversa.hr> wrote:
>>
>>> Hello,
>>>
>>> I am trying to modify bridge.c (function ast_bridge_transfer_attended)
>>> in order to send channels involved in SIP attended transfer to the
>>> dialplan. If both transferee and transfer target are bridged, that is
>>> relatively easy. However, if transfer target is ringing, I don't know
>>> how to find B-leg channels (there could be multiple, I suppose). So the
>>> question is, having a reference to A-leg channel, how to obtain a list
>>> of B-leg channels?
>>>
>>> Best regards,
>>>
>>>
>> Which channel driver are you using?
>>
>>
>>
>>>
>>> --
>>> _____________________________________________________________________
>>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>>
>>> asterisk-dev mailing list
>>> To UNSUBSCRIBE or update options visit:
>>>    http://lists.digium.com/mailman/listinfo/asterisk-dev
>>
>>
>> --
>> _____________________________________________________________________
>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>>
>> asterisk-dev mailing list
>> To UNSUBSCRIBE or update options visit:
>>    http://lists.digium.com/mailman/listinfo/asterisk-dev
>
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20210824/157b9662/attachment.html>


More information about the asterisk-dev mailing list