[asterisk-users] .call file and logging
Vieri
rentorbuy at yahoo.com
Fri Aug 10 01:28:45 CDT 2007
EDIT:
It seems that if the call fails then I can see the
number in the cdr->lastdata (and lastapp) fields (eg.
Dial Zap/g1/7032).
However, if the call is answered, there's no trace of
the number if Zap was used (there's a trace only if
SIP is used).
So, how can I hack this so that I can set the number
up myself so that if a Zap call succeeds then
cdr->lastadata and/or lastapp will somehow contain the
extension that was dialed through this channel?
Right now, cdr->lastapp is "Hangup", as expected, and
cdr->lastdata is empty. How could I add the number
that was dialed to the empty cdr->lastdata?
--- Vieri <rentorbuy at yahoo.com> wrote:
> I am writing a cron script to check if certain
> extensions are online and if they aren't then
> Asterisk
> creates a couple of .call files to notify another
> set
> of extensions or external numbers.
>
> It works fine except for logging information.
>
> What I'm doing in the script is setting a "fake"
> caller ID (as it's generated by Asterisk, not by a
> user) and calling out real users.
>
> So the user's extension is specified in the
> "Channel:
> " field. When the user picks the phone up, asterisk
> drops into the custom_NOTIFY context which plays a
> menu.
>
> My problem is that when I check the logs in /var/log
> or in the MySQL CDR database, I can't always
> demonstrate that Asterisk actually called a specific
> number (in the code below, the number I need to log
> is
> $alerts).
>
> If I use a SIP extension in the Channel field then
> the
> logging works for me because I can see that the
> SIP/EXTEN was used (see below).
>
> However, if I use a Zap extension then only the Zap
> channel number is logged but the extension's number
> isn't (in the example below, 7022 does not appear in
> the logs).
>
> Any suggestions as to how I can solve this?
> Maybe by changing the "Extension:" line or setting
> variables. A quick simple example would be
> appreciated.
>
> Thanks,
>
> Vieri
>
> Code snippet:
>
> $ftime = time();
> $fname = "/tmp/asterisk_".$ftime.".call";
> $fname_call =
>
"/var/spool/asterisk/outgoing/asterisk_".$ftime.".call";
> $fd = fopen($fname, 'w');
> fwrite($fd, "Channel: ".$alerts."\n");
> fwrite($fd, "Callerid: IT <7021>\n");
> fwrite($fd, "Set: FHMNUM=".$FAILURES."\n");
> fwrite($fd, "MaxRetries: 2\n");
> fwrite($fd, "RetryTime: 20\n");
> fwrite($fd, "WaitTime: 40\n");
> fwrite($fd, "Context: custom-NOTIFY\n");
> fwrite($fd, "Extension: s\n");
> fwrite($fd, "Priority: 1\n");
> fclose($fd);
> chown($fname,"asterisk");
> chgrp($fname,"asterisk");
> rename($fname,$fname_call);
>
> # cat cdr_custom.conf
> ;
> ; Mappings for custom config file
> ;
> [mappings]
> Master.csv =>
>
"${CDR(clid)}","${CDR(src)}","${CDR(dst)}","${CDR(dcontext)}","${CDR(channel)}","${CDR(dstchannel)}","${CDR(lastapp)}","${CDR(lastdata)}","${CDR(start)}","${CDR(answer)}","${CDR(end)}","${CDR(duration)}","${CDR(billsec)}","${CDR(disposition)}","${CDR(amaflags)}","${CDR(accountcode)}","${CDR(uniqueid)}","${CDR(userfield)}"
>
> If $alerts is "Zap/g1/7022" Then:
> # tail /var/log/asterisk/cdr-csv/Master.csv
> "","7021","s","custom-NOTIFY","""IT""
> <7021>","Zap/2-1","","Hangup","","2007-08-07
> 13:30:19","2007-08-07 13:30:19","2007-08-07
> 13:30:26",7,7,"ANSWERED","DOCUMENTATION"
>
> If $alerts is "SIP/4053" Then:
> # tail /var/log/asterisk/cdr-csv/Master.csv
> "","7021","s","custom-NOTIFY","""IT""
>
<7021>","SIP/4053-0829b6a0","","Hangup","","2007-08-07
> 12:58:02","2007-08-07 12:58:02","2007-08-07
> 12:58:15",13,13,"ANSWERED","DOCUMENTATION"
>
> (This is an Asterisk/FreePBX system)
____________________________________________________________________________________
Looking for a deal? Find great prices on flights and hotels with Yahoo! FareChase.
http://farechase.yahoo.com/
More information about the asterisk-users
mailing list