[asterisk-users] Asterisk 11 - Change CDR in hangup exten [Was: CDR values changed in hangup handler not saved]

Olivier oza_4h07 at yahoo.fr
Fri Mar 29 09:06:58 CDT 2013


Thanks but I willingly choose a standard CDR field (I checked with both
accountcode and userfield) which appears in
/var/log/asterisk/cdr-csv/Master.csv (to keep cdr-cusdom/Master.csv away to
simplify things)
the fact found in Master.csv is  foo, the value set before entering the
hangup extension (see previous dialplan)).

To me, this is either a feature ("you can't set CDR values in hangup
exten") or a bug.

How would you qualify this ?


2013/3/29 Julian Lyndon-Smith <asterisk at dotr.com>

> Ah, right. Have a look at this documentation:
>
> You may need to add some mapping
>
> Julian
> cdr_custom
>
> This CDR backend allows for custom formatting of CDR records in a log
> file. This module is most commonly used for customized CSV output. The
> configuration file used for this module is /etc/asterisk/cdr_custom.conf.
> A single section called [mappings] should exist in this file. The
> [mappings] section contains mappings between a filename and the custom
> template for a CDR. The template is specified using Asterisk dialplan
> functions.
>
> The following example shows a sample configuration for cdr_custom that
> enables a single CDR log file, Master.csv. This file will be created as
> /var/log/asterisk/cdr-custom/Master.csv. The template that has been
> defined uses both the CDR() and CSV_QUOTE() dialplan functions. The CDR() function
> retrieves values from the CDR being logged. The CSV_QUOTE() function
> ensures that the values are properly escaped for the CSV file format:
>
> [mappings]
>
> Master.csv => ${CSV_QUOTE(${CDR(clid)})},${CSV_QUOTE(${CDR(src)})},
>    ${CSV_QUOTE(${CDR(dst)})},${CSV_QUOTE(${CDR(dcontext)})},
>    ${CSV_QUOTE(${CDR(channel)})},${CSV_QUOTE(${CDR(dstchannel)})},
>    ${CSV_QUOTE(${CDR(lastapp)})},${CSV_QUOTE(${CDR(lastdata)})},
>    ${CSV_QUOTE(${CDR(start)})},${CSV_QUOTE(${CDR(answer)})},
>    ${CSV_QUOTE(${CDR(end)})},${CSV_QUOTE(${CDR(duration)})},
>    ${CSV_QUOTE(${CDR(billsec)})},${CSV_QUOTE(${CDR(disposition)})},
>    ${CSV_QUOTE(${CDR(amaflags)})},${CSV_QUOTE(${CDR(accountcode)})},
>    ${CSV_QUOTE(${CDR(uniqueid)})},${CSV_QUOTE(${CDR(userfield)})}
>
> In the actual configuration file, the value in the Master.csv mapping
> should be on a single line.
> cdr_manager
>
>
> On 29 March 2013 10:02, Olivier <oza_4h07 at yahoo.fr> wrote:
>
>>
>>
>>
>> 2013/3/29 Julian Lyndon-Smith <asterisk at dotr.com>
>>
>>> check out the endbeforehexten option in cdr.conf
>>>
>>> this needs to set to "yes"
>>>
>>> Julian
>>>
>>
>>
>> Unfortunately, this doesn't help.
>>
>> Let's drop the hangup handler at the moment, and focus on the "saving to
>> file" part.
>> Then my issue is I can't update CDR value is hangup exten.
>>
>>  Here is a dialplan that illustrate this:
>>
>> [from-foobar]
>> exten => _X.,1,Verbose(0,Entering context ${CONTEXT} from channel
>> ${CHANNEL(channeltype)} ${CHANNEL} with EXTEN and CID set to ${EXTEN} and
>> ${CALLERID(num)})
>>   same => n, Set(CDR(userfield)=foo)
>>   same => n, Dial(SIP/foobar/${EXTEN})
>>   same => n, Set(CDR(userfield)=bar)
>>   same => n, Hangup()
>>
>> exten => h,1,Verbose(0,Entering context ${CONTEXT} from
>> ${CHANNEL(channeltype)} channel ${CHANNEL} with EXTEN and CID set to
>> ${EXTEN} and ${CALLERID(num)})
>>   same => n,
>> ExecIf($["x${CHANNEL(channeltype)}"="xLocal"]?Set(CDR(userfield)=baz1:baz2)
>>
>> My goal is to get either baz1 or baz2 value in
>> /var/log/asterisk/cdr-csv/Master.csv.
>>
>> Typing channel originate Local/7005 at from-foobar application Playback
>> tt-monkeys, I can see that the line with ExecIf is run but CDR still
>> contains foo value (the one set before Dial).
>> The strange thing is :
>> 1. a CDR is written at the moment extension 7005 answers,
>> 2. no other CDR is added when 7005 hangs up (so can't tell how long
>> extension 7005 listened to monkeys fellows).
>> (Setting endbeforehexten to either yes or no has no effect on this
>> behaviour.
>>
>>
>> My question are:
>> 1. Is it simply possible to update CDR in hangup exten ?
>> 2. How can I have a CDR for the application Playback part (see above) ?
>> 3. Any tip or suggestion ?
>>
>> Cheers
>>
>> --
>> _____________________________________________________________________
>> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>> New to Asterisk? Join us for a live introductory webinar every Thurs:
>>                http://www.asterisk.org/hello
>>
>> asterisk-users mailing list
>> To UNSUBSCRIBE or update options visit:
>>    http://lists.digium.com/mailman/listinfo/asterisk-users
>>
>
>
>
> --
> Julian Lyndon-Smith
> IT Director, Dot R Limited
>
> "I don’t care if it works on your machine!  We are not shipping your
> machine!”
>
> The kangaroo dances: http://www.youtube.com/watch?v=MAWl5iYOaUg
>
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
> New to Asterisk? Join us for a live introductory webinar every Thurs:
>                http://www.asterisk.org/hello
>
> asterisk-users mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-users/attachments/20130329/45e68274/attachment-0001.htm>


More information about the asterisk-users mailing list