[Home]

Summary:ASTERISK-30414: features: attended 3 way transfer using the option atxferthreeway doesn't work as expected without atxferswap
Reporter:Harsh Sharma (harsharma91)Labels:
Date Opened:2023-02-01 13:12:49.000-0600Date Closed:2023-02-02 16:48:27.000-0600
Priority:MinorRegression?No
Status:Closed/CompleteComponents:Features
Versions:18.9.0 Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) successfull3way_full_logs
( 1) unsuccessful3way_full_logs
Description:Setting up a 3-Way conference successfully after initiating an attended transfer using DTMF requires the option atxferswap to be added along with atxferthreeway under general section in features.conf file.

3 way conference works when the following configuration is added to the features.conf file.
[general]
transferdigittimeout => 3
featuredigittimeout => 2000
atxferthreeway = *4
atxferswap = *5

[featuremap]
atxfer = *1


3 way conference  doesn't work when the following configuration is added to the features.conf file.
[general]
transferdigittimeout => 3
featuredigittimeout => 2000
atxferthreeway = *4

[featuremap]
atxfer = *1

Steps :
1. configure 3 sip peers (zoiper, zoiperPhone, blink in my case) in sip channel file sip.conf
2. Initiate a call from zoiperPhone (6001) to zoiper(6000). Pick up from zoiper. Initiate a transfer using by dialling *1 from zoiperPhone. Hear transfer tone. Dial the extension 6002 for blink. Hear music on hold on zoiper. Pick up from blink. Convert it to a 3 way conference by dialing *4.

Expected:
Music on hold stops on zoiper
All three softphones should be connected to the same bridge
Works when atxferswap is added to the features.conf file

Observation:
When only atxferthreeway is present in the features.conf file, after dialing *4, the zoiper phone keeps playing music on hold. The call doesn't convert to a 3 way conference.

CLI logs
Using SIP RTP CoS mark 5
      > 0x7f038c03b300 -- Strict RTP learning after remote address set to: 10.0.0.91:57373
   -- Executing [6000@from-internal:1] Dial("SIP/zoiperPhone-0000000c", "SIP/zoiper,20,tT") in new stack
 == Using SIP RTP CoS mark 5
   -- Called SIP/zoiper
   -- SIP/zoiper-0000000d is ringing
      > 0x7f0380009f70 -- Strict RTP learning after remote address set to: 10.0.0.24:52607
   -- SIP/zoiper-0000000d answered SIP/zoiperPhone-0000000c
   -- Channel SIP/zoiper-0000000d joined 'simple_bridge' basic-bridge <491ed983-807b-4def-a8b6-a74eaa261b8e>
   -- Channel SIP/zoiperPhone-0000000c joined 'simple_bridge' basic-bridge <491ed983-807b-4def-a8b6-a74eaa261b8e>
      > 0x7f038c03b300 -- Strict RTP switching to RTP target address 10.0.0.91:57373 as source
[Feb  1 19:07:57] NOTICE[21973]: chan_sip.c:25008 handle_response_peerpoke: Peer 'zoiperPhone' is now Reachable. (53ms / 2000ms)
      > 0x7f038c03b300 -- Strict RTP learning complete - Locking on source address 10.0.0.91:57373
      > 0x7f0380009f70 -- Strict RTP switching to RTP target address 10.0.0.24:52607 as source
   -- Channel SIP/zoiperPhone-0000000c: Started DTMF attended transfer.
   -- Started music on hold, class 'default', on channel 'SIP/zoiper-0000000d'
   -- <SIP/zoiperPhone-0000000c> Playing 'pbx-transfer.gsm' (language 'en')
      > 0x7f0380009f70 -- Strict RTP learning complete - Locking on source address 10.0.0.24:52607
   -- Channel Local/6002@from-internal-00000002;1 joined 'simple_bridge' basic-bridge <282fc56e-16b7-4cbe-9e34-39fe8c8995ca>
   -- Executing [6002@from-internal:1] Dial("Local/6002@from-internal-00000002;2", "SIP/blink,20,tT") in new stack
 == Using SIP RTP CoS mark 5
   -- Called SIP/blink
   -- Local/6002@from-internal-00000002;2 requested media update control 26, passing it to SIP/blink-0000000e
   -- Channel SIP/zoiperPhone-0000000c left 'simple_bridge' basic-bridge <491ed983-807b-4def-a8b6-a74eaa261b8e>
   -- Channel SIP/zoiperPhone-0000000c joined 'simple_bridge' basic-bridge <282fc56e-16b7-4cbe-9e34-39fe8c8995ca>
   -- SIP/blink-0000000e is ringing
      > 0x5622e67f9c50 -- Strict RTP learning after remote address set to: 10.0.0.24:50004
   -- SIP/blink-0000000e answered Local/6002@from-internal-00000002;2
   -- Channel SIP/blink-0000000e joined 'simple_bridge' basic-bridge <b37fc733-8dc1-4d37-a8b0-fc0e8428eb90>
   -- Channel Local/6002@from-internal-00000002;2 joined 'simple_bridge' basic-bridge <b37fc733-8dc1-4d37-a8b0-fc0e8428eb90>
      > 0x5622e67f9c50 -- Strict RTP switching to RTP target address 10.0.0.24:50004 as source
   -- Channel SIP/zoiperPhone-0000000c left 'simple_bridge' basic-bridge <282fc56e-16b7-4cbe-9e34-39fe8c8995ca>
   -- Channel SIP/zoiperPhone-0000000c joined 'simple_bridge' basic-bridge <491ed983-807b-4def-a8b6-a74eaa261b8e>
   -- Started music on hold, class 'default', on channel 'Local/6002@from-internal-00000002;1'
   -- Stopped music on hold on SIP/zoiper-0000000d
      > 0x5622e67f9c50 -- Strict RTP learning complete - Locking on source address 10.0.0.24:50004
   -- Channel SIP/zoiperPhone-0000000c left 'simple_bridge' basic-bridge <491ed983-807b-4def-a8b6-a74eaa261b8e>
   -- Channel SIP/zoiperPhone-0000000c joined 'simple_bridge' basic-bridge <282fc56e-16b7-4cbe-9e34-39fe8c8995ca>
   -- Started music on hold, class 'default', on channel 'SIP/zoiper-0000000d'
   -- Stopped music on hold on Local/6002@from-internal-00000002;1
   -- Channel SIP/zoiperPhone-0000000c left 'simple_bridge' basic-bridge <282fc56e-16b7-4cbe-9e34-39fe8c8995ca>
 == Spawn extension (from-internal, 6000, 1) exited non-zero on 'SIP/zoiperPhone-0000000c'
   -- Channel Local/6002@from-internal-00000002;1 left 'simple_bridge' basic-bridge <282fc56e-16b7-4cbe-9e34-39fe8c8995ca>
   -- Channel Local/6002@from-internal-00000002;1 joined 'simple_bridge' basic-bridge <491ed983-807b-4def-a8b6-a74eaa261b8e>
   -- <Local/6002@from-internal-00000002;1> Playing 'beep.gsm' (language 'en')
   -- Stopped music on hold on SIP/zoiper-0000000d
      > Move-swap optimizing Local/6002@from-internal-00000002;2 <-- SIP/zoiper-0000000d.
   -- Channel SIP/zoiper-0000000d left 'simple_bridge' basic-bridge <491ed983-807b-4def-a8b6-a74eaa261b8e>
   -- Channel Local/6002@from-internal-00000002;2 left 'simple_bridge' basic-bridge <b37fc733-8dc1-4d37-a8b0-fc0e8428eb90>
   -- Channel SIP/zoiper-0000000d swapped with Local/6002@from-internal-00000002;2 into 'simple_bridge' basic-bridge <b37fc733-8dc1-4d37-a8b0-fc0e8428eb90>
   -- Channel Local/6002@from-internal-00000002;1 left 'simple_bridge' basic-bridge <491ed983-807b-4def-a8b6-a74eaa261b8e>
 == Spawn extension (from-internal, 6002, 1) exited non-zero on 'Local/6002@from-internal-00000002;2'
   -- Channel SIP/blink-0000000e left 'simple_bridge' basic-bridge <b37fc733-8dc1-4d37-a8b0-fc0e8428eb90>
   -- Channel SIP/zoiper-0000000d left 'simple_bridge' basic-bridge <b37fc733-8dc1-4d37-a8b0-fc0e8428eb90>
Comments:By: Asterisk Team (asteriskteam) 2023-02-01 13:12:52.337-0600

Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution. Please note that log messages and other files should not be sent to the Sangoma Asterisk Team unless explicitly asked for. All files should be placed on this issue in a sanitized fashion as needed.

A good first step is for you to review the [Asterisk Issue Guidelines|https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines] if you haven't already. The guidelines detail what is expected from an Asterisk issue report.

Then, if you are submitting a patch, please review the [Patch Contribution Process|https://wiki.asterisk.org/wiki/display/AST/Patch+Contribution+Process].

Please note that once your issue enters an open state it has been accepted. As Asterisk is an open source project there is no guarantee or timeframe on when your issue will be looked into. If you need expedient resolution you will need to find and pay a suitable developer. Asking for an update on your issue will not yield any progress on it and will not result in a response. All updates are posted to the issue when they occur.

Please note that by submitting data, code, or documentation to Sangoma through JIRA, you accept the Terms of Use present at [https://www.asterisk.org/terms-of-use/|https://www.asterisk.org/terms-of-use/].

By: Harsh Sharma (harsharma91) 2023-02-01 13:27:02.229-0600

full Logs

By: Michael Bradeen (mbradeen) 2023-02-02 15:57:34.521-0600

Hi [~harsharma91],

The default for atxferswap is *4, so setting atxferthreeway to *4 is setting both to the same feature, which is why atxferswap needs to also be changed.

If you use a free feature code instead of *4, does it work without also defining atxferswap?

https://wiki.asterisk.org/wiki/display/AST/Asterisk+18+Configuration_features

By: Harsh Sharma (harsharma91) 2023-02-02 16:20:46.627-0600

Hi Michael,

Thank you for your response.

As per your suggestion, first I changed the feature code to *42. It didn't work.

Then I changed it to *9 and it worked as expected. I also tried with #42 that worked too.

Now, I'm wondering why it doesn't work for *42. Is it because it just considers *4 and ignores 2?

Also, Is there any range of free feature code that can be used?

-Harsh


By: Michael Bradeen (mbradeen) 2023-02-02 16:43:40.240-0600

A 'features show' should show you what you have configured.  In general having overlapping feature codes can lead to unpredictable results ie; don't let *62 and *6,2 both be valid input.

By: Harsh Sharma (harsharma91) 2023-02-02 16:46:09.119-0600

Sure. Thanks for the info and prompt response. I appreciate it.
Regards,
Harsh

By: Harsh Sharma (harsharma91) 2023-02-02 16:48:16.585-0600

I will mark it as Not a bug and close it.