Passing Caller ID to Extensions upon attended-transfer


I have the same problem as in this Thread form 2007:

Now my question is, if there already is a solution for this problem?



This is because they are doing an attended transfer. During an Attended transfer, the first leg is actually from the transferring party - hence the transferring party’s Caller ID.

If you really want to maintain visibility of the Caller ID, the simplest way we have found is to put the call on hold, grab a line and call the party the call is for, and if they want it, hang up and blind-transfer the call.

Clunky, but it works.

The solution is RPID (remote party ID). Provided your endpoints support it, edit each extension to enable Trust RPID then select a Send RPID option that is compatible with your endpoints. When it’s working properly, during an attended transfer you will first see the transferring party CID, then the caller’s CID when the transfer is complete.


If you enable sending RPID to your endpoints, make sure you are not sending it out to the PSTN if you use SIP trunks from a Broadsoft switch - we found out the hard way - it causes LOTS of problems.

Is in not just a matter of ensuring that the trunk settings have a line like:


Yes - that is correct.

Does it work on version 16.6.2? According to the post, function broken since version 13.22. Is there a bug report on I see no RPID or PAI in SIP headers when attended transfer

I have Asterisk 16.6.2 and it is working. You had to have a specific core module version for it to work; however. So make sure the core module is updated. I just tested it and it is working fine on my end.

If you’re having issues with the CID updating over the trunk, then that is different. If we get an inbound call, the caller ID does update for us.


All modules is up to date. I get inbound call from trunk to extension A (i see caller id), make attended transfer to extension B and A hangup. On B is number of ext A, not the first caller id. On blind transfer this problem does not exist. Phones are Yealink T48G.

ps. Something I did not think to check with internal ext only. I will check it and write the result.

Check your phone settings.

Also make sure that the individual phone setting is sending the caller ID as well:

I know I had to have those two settings for it to work:

  1. Core module updated (currently, running
  2. Set the Send RPID to P-Asserted-Identity header

And this is all with PJSIP driver, as I had no issues with the chansip.


Thanks Chris, But it doesn’t work for me.
Yealink Phones have these settings:

transfer.dsskey_deal_type = 1
sip.disp_incall_to_info = 0
phone_setting.called_party_info_display.enable = 0
phone_setting.call_info_display_method = 0
features.fwd_diversion_enable = 1
features.caller_name_type_on_dialing = 2
account.1.dialoginfo_callpickup = 0
account.1.subscribe_mwi = 0
account.1.cp_source = 0
account.1.cid_source = 4
account.1.update_ack_while_dialing = 1
account.1.refresh_remote_id.enable = 1

Freepbx advanced Settings:

Display CallerID on Calling Phone = No
Display Dialed Number on Calling Phone = Yes

Extensions (SIP) have sendrpid=PAI and trustrpid=yes
Trunk (PJSIP) : sendrpid=PAI and trustrpid=yes

When i do blind transfer or semi-attended transfer, then i see CID of inbound call, but not on attended transfer (No matter whether the inbound call comes from a trunk or from an internal extension). Can anyone show SIP log on attended transfer?

and reinvite setting for all extensions set to No.

Try this:

account.1.cid_source = 6

That tells it to use this. This is the default order, so if you don’t need to change it, you don’t need to add it to the config.

sip.cid_source.preference = P-Preferred-Identity, P-Asserted-Identity, Remote-Party-ID, From

yes, thanks. It helped!!!

This doesn’t work on a “attended transfer” for yealink. I have the same settings as above. Shows local extension

On Cisco spa525g2 This feature started working again after I went back to chan_sip. On pjSIP it did not pass the original call’s CID

Check the actual SIP packets. If the data is there, and it should be, then that means it is an endpoint setting.

If with freepbx PJSIP, and send pai / trust rpid on endpoints turned on, doing an semi attended transfer , when callerid is updated ?

For example,
A talks with B
B dials *2 C # and hangups
For me, C is displaying callerid of B until answers !
After C answers , callerid is updated displaying number of A

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.