Dear all,
i noticed strange behavior with Asterisk 13. With previous versions when setting the caller id prior to initiating a call, the src column would stay unaffected. With the 13, src field gets overwritten with the caller ID. So when i a user places a call and i try to set an external suitable caller ID, i can no longer know who initiated the call and just see the external caller ID set.
I see it as a good feature, not a problem. Which CDR backend are you using? On most backends you can add new fields and assign a value to them in the dialplan, like Set(CDR(realsrc)=yourextensionsrc)
i am using a mysql back end. I see some repetition here which is not needed as clid is already present to store caller ids. I can set the real src value from within the dialplan but given that i have a rather large dial plan with multiple possible entries, i might end up overwriting it. Also, currently using a mix of older and newer versions of asterisk, and for reporting consistency i would need to implement this change across the board. I was wondering if there was some way of forcing asterisk not to update it.
No, there is no way to prevent Asterisk from updating the CDR src field.
CDRs in Asterisk 12+ match (to the best of their ability) what is actually happening with the data set on the channels. When properties of the channels are changed, it will generally be reflected on the CDR. If you want to preserve some original property of the channel, then you’ll need to do what @ldardini recommended and store that value in a custom attribute.
The clid field contains the full Caller ID of Party A in the CDR. That may be the same as the src field, but it may also contain the party name as well as any other information reflected in the Caller ID. Hence, it may be “duplicate” in some cases, but in other calls it can be quite different.