cdr: Allow bridging and dial state changes to be ignored.

Allows bridging, parking, and dial messages to be globally
ignored for all CDRs such that only a single CDR record
is generated per channel.

This is useful when CDRs should endure for the lifetime of
an entire channel and bridging and dial updates in the
dialplan should not result in multiple CDR records being
created for the call. With the ignore bridging option,
bridging changes have no impact on the channel's CDRs.
With the ignore dial state option, multiple Dials and their
outcomes have no impact on the channel's CDRs. The
last disposition on the channel is preserved in the CDR,
so the actual disposition of the call remains available.

These two options can reduce the amount of "CDR hacks" that
have hitherto been necessary to ensure that CDR was not
"spoiled" by these messages if that was undesired, such as
putting a dummy optimization-disabled local channel between
the caller and the actual call and putting the CDR on the channel
in the middle to ensure that CDR would persist for the entire
call and properly record start, answer, and end times.
Enabling these options is desirable when calls correspond
to the entire lifetime of channels and the CDR should
reflect that.

Current default behavior remains unchanged.

ASTERISK-30091 #close

Change-Id: I393981af42732ec5ac3ff9266444abb453b7c832
This commit is contained in:
Naveen Albert
2022-06-01 16:06:14 +00:00
committed by Friendly Automation
parent 1c97a1d141
commit a587258733
4 changed files with 96 additions and 9 deletions

View File

@@ -32,6 +32,17 @@
; is "no".
;congestion = no
; Define whether or not to ignore bridging changes in CDRs. This prevents
; bridging changes from resulting in multiple CDRs for different parts of
; a call. Default is "no". This setting cannot be changed on a reload.
;ignorestatechanges = no
; Define whether or not to ignore dial updates in CDRs. This prevents
; dial updates from resulting in multiple CDRs for different parts of
; a call. The last disposition on the channel will be used for the CDR.
; Use with caution. Default is "no".
;ignoredialchanges = no
; Normally, CDR's are not closed out until after all extensions are finished
; executing. By enabling this option, the CDR will be ended before executing
; the "h" extension and hangup handlers so that CDR values such as "end" and