Call Transfer Problem with CID

Hello,
i have a problem with Call Transfers on FreePBX14 SNG7
I also have a Production FreePBX13 10.13.66, here everything works as expected, so it is a problem with FreePBX14 only.

If the customer calls me i can transfer him wherever i want and the person who gets the transfered call can see to correct CID of the person who called us.

BUT

if i call the customer and i transfer him to another extension, then the CID is the Phone from which i initiated the call.

I tested this internally between phones without a trunk. and also tested with external calls via Trunks. The problem is with Both sezanrios. Trunk calls and internal calls.

Also when i call From ext10 to ext 15…
…and transfer (BLIND) the called ext15 to ext11 from ext10.
ext 11 sees that ext10 calls.

Can someone confirm this?
I think it is not a Configuration problem as everything works on 10.13.66.

The way you want it to work actually violates the “Rule of Least Astonishment” for me. If you’re the caller that initiated the call, the caller ID should be your phone. I’m not sure how the recipients number would even get included in the call.

It is typicall that a agent calls a customer back. The customer wants to talk to mr xyz. So she transfers zhe customer to xyz. The cid from the agent is shown to xyz.
And also after a internal Transfer!
With pai normaly the cid changes after a successfull call transfer. This is all working when the customer is calling us. And this is also all working when we call the customer, but only with distro 10.13.66 fpbx 13.

You need rpid. Enable it for your extensions, and choose an rpid type that is compatible with your endpoints.

Rpid type pai is enabled and works with all transfered inbound calls. The issue id only in the szenario where the called extension gets transfered. Please try it with your sng7. I want verify the issue before opening a ticket.

Your trunk needs the same rpid settings setup.

All that logic is in the sip stack of asterisk not really FreePBX.

Are you using same asterisk versions where it works versus where it fails.

The problem occurs also on internal calls only with freepbx 14. The trunk is not the problem and works like a charm if the customer calls us.

Please test it with sng7. Call a internal extension and then transfer it blind to another internal extension from you phone which called the first extension. You will see the number of phone 1. On fpbx13 it works as it should.

I suggest you provide the info I asked for and also asterisk logs. Nobody is going to test things for you.

I have only seen your first post…mobile phone
:joy: i will send the logs later from workstation.

Both use same asterisk version 13.17. The blind transfert part with the set cid outnumber is different between fpbx 13 and 14.

And are they pjsip or Chan sip. U ask us to test things with no logs or full information. Also what brand phones.

I tested now:
Aastra 6869i
Snom 720
Sangoma S500
Yealink T48S
Panasonic KX-TGP600

Everywhere the same Problem.
Every phone Uses Chan SIP / TLS / SRTP / sendrpid=pai

[2017-08-10 17:45:50] VERBOSE[18641][C-0000006c] pbx.c: Executing [s@macro-dial-one:33] NoOp("SIP/56-000000cd", "Blind Transfer: , Attended Transfer: , User: 56, Alert Info: ") in new stack
..
...

The Called Number by Blind Transfer:
2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-dialout-trunk:4] Set("SIP/56-000000ca", "DIAL_NUMBER=+431234567899") in new stack

More logs…

[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-dialout-trunk:5] Set("SIP/56-000000ca", "DIAL_TRUNK_OPTIONS=Ttr") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-dialout-trunk:6] Set("SIP/56-000000ca", "OUTBOUND_GROUP=OUT_1") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-dialout-trunk:7] GotoIf("SIP/56-000000ca", "1?nomax") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx_builtins.c: Goto (macro-dialout-trunk,s,9)
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-dialout-trunk:9] GotoIf("SIP/56-000000ca", "0?skipoutcid") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-dialout-trunk:10] Set("SIP/56-000000ca", "DIAL_TRUNK_OPTIONS=T") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-dialout-trunk:11] Macro("SIP/56-000000ca", "outbound-callerid,1") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-outbound-callerid:1] ExecIf("SIP/56-000000ca", "0?Set(CALLERPRES(name-pres)=)") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-outbound-callerid:2] ExecIf("SIP/56-000000ca", "0?Set(CALLERPRES(num-pres)=)") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-outbound-callerid:3] ExecIf("SIP/56-000000ca", "0?Set(REALCALLERIDNUM=56)") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-outbound-callerid:4] GotoIf("SIP/56-000000ca", "0?normcid") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-outbound-callerid:5] Set("SIP/56-000000ca", "USEROUTCID=56") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-outbound-callerid:6] GotoIf("SIP/56-000000ca", "0?bypass") in new stack

USEROUTCID (Wrong Number: This is the number of the Phone which transfers the call.) In FreePBX13 the Number is correct as it should be
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-outbound-callerid:7] Set("SIP/56-000000ca", "USEROUTCID=+437252799161") in new stack

[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-outbound-callerid:8] Set("SIP/56-000000ca", "EMERGENCYCID=") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-outbound-callerid:9] Set("SIP/56-000000ca", "TRUNKOUTCID=") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx.c: Executing [s@macro-outbound-callerid:10] GotoIf("SIP/56-000000ca", "1?trunkcid") in new stack
[2017-08-10 17:44:57] VERBOSE[18312][C-0000006b] pbx_builtins.c: Goto (macro-outbound-callerid,s,15)

Okay i tried it now with our Production PBX (Asterisk 13.16 and Asterisk 13.17) on

FreePBX Distro 10.13.66
and
Sangoma SNG7

The Problem is not the Asterisk Version.
Same Settings on both Distros, Same Phones.

10.13.66: All Transfers made correctly.
SNG7: Transfer sends CID of the Phone who initiated the call.

The sendrpid settings where correctly.

I will start an issue Ticket now for this.
https://issues.freepbx.org/browse/FREEPBX-15550

@tonyclewis

I am happy to announce that i found the issue and fixed it.

The transfers work now.

The file /etc/asterisk/extensions_addiditonal.conf needs to be changed.

Line 4560
FROM

exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(__REALCALLERIDNUM=${CALLERID(number)}))

TO

exten => s,n,ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)}))

and everything works as expected on SNG7 FreePBX14

The change works and was already set on 10.13.66 . ON SNG7 there was a “__” before REALCALLERIDNUM

1 Like

I did not do a pull request because i dont know where php generates the files. Andrew locked this ticket to employees only because of the logfiles attsched there

1 Like

https://git.freepbx.org/projects/FREEPBX/repos/core/pull-requests/66/overview

Hello @lgaetz and Community

I need some help.

Can you maybe take a look over this?

My Pull Request is in conflict with another ticket.

My ticket
https://issues.freepbx.org/browse/FREEPBX-15550
https://git.freepbx.org/projects/FREEPBX/repos/core/pull-requests/66/diff

is in conflict with
http://issues.freepbx.org/browse/FREEPBX-13173
https://git.freepbx.org/projects/FREEPBX/repos/core/commits/454f61be00fc196c0ba7053a57b0286f1641263b

I need a solution for both issues to get this basic thing “Blind Call Transfer” working.
This is really important for us and i dont know which one i can ask for this anymore…

Regards