(CALL FILES To Local Channel)billsec Zero In Cdr Via Cdr_adaptive_odbc

Home » Asterisk Users » (CALL FILES To Local Channel)billsec Zero In Cdr Via Cdr_adaptive_odbc
Asterisk Users No Comments

Hi, all

Sorry for null subject last mail.

I use Ubuntu 12.04.01 TLS and install asterisk 11.7.0 (tar.gz downloaded from asterisk.org). We named it “Asterisk11”. I want to generate a call file to /var/spool/asterisk/outgoing. This call will dial out to Local Channel and return to some Extens. Then Asterisk11 will generate a CDR records to MySQL’s cdr table(in database “mydatabase”) via cdr_adaptive_odbc. The “SIP/A221” is another asterisk machine named it “Elastix24”.

I have two BIG QUESTIONs about cdr_adaptive_odbc.

First, I have answered call from Elastix24 and I can listen the music file played from Asterisk11. In another word, this call should be answered and its billsec is greater than 0.

Second, if I don’t want to use forkcdr(), how to config it and I can get another cdr record that call from SIP/A221(Elastix24) to my Exten:777777?

I know that the outgoing file will make a call to Local Channel and try to Dial SIP/A221. If it answered, this old channel should be hangup and generate another new channel to connect to Extension:777777(my callback exten).

I can’t find two cdr records in mycdr table. mysql> select * from gvl_cdr;
+———————+——+—–+——-+———————+—————————————————+——————-+———+————————–+———-+———+————-+———-+————-+———–+————–+————–+———-+————-+———+———-+——–+
| calldate | clid | src | dst | dcontext | channel
| dstchannel | lastapp |
lastdata | duration | billsec | disposition | amaflags |
accountcode | userfield | uniqueid | linkedid | sequence |
peeraccount | phoneno | callerid | userid |
+———————+——+—–+——-+———————+—————————————————+——————-+———+————————–+———-+———+————-+———-+————-+———–+————–+————–+———-+————-+———+———-+——–+
| 2014-01-08 14:37:01 | | |777777 | from-internal-out-7 |
Local/777777@from-internal-out-7-00000000;2 | SIP/A221-00000000 |
Dial | SIP/A221/777777,30 | 17 | 0 | ANSWERED |
3 | | | 1389163021.1 | 1389163021.0 | 1 |
| 777777 | | 7 |

Even I try to add ForkCDR or ResetCDR. The billsec is 0 in other record(the
3th one). mysql> select * from gvl_cdr;
+———————+——————–+———+—————+———————+—————————————————-+——————-+———+——————————-+———-+———+————-+———-+————-+———–+————–+————–+———-+————-+———+———-+——–+
| calldate | clid | src | dst |
dcontext | channel |
dstchannel | lastapp | lastdata | duration |
billsec | disposition | amaflags | accountcode | userfield | uniqueid |
linkedid | sequence | peeraccount | phoneno | callerid | userid |
+———————+——————–+———+—————+———————+—————————————————-+——————-+———+——————————-+———-+———+————-+———-+————-+———–+————–+————–+———-+————-+———+———-+——–+
| 2014-01-08 14:34:04 | | | 777777 |
from-internal-out-7 | Local/777777@from-internal-out-7-00000000;2 |
SIP/A221-00000000 | Dial | SIP/A221/777777,30 | 15 |
0 | ANSWERED | 3 | | | 1389162844.1 |
1389162844.0 | 1 | | 777777 | | 7 |
| 2014-01-08 14:34:04 | “device” <1000> | 1000 | 777777 |
from-6 | Local/777777@from-internal-out-7-00000000;1 |
| ForkCDR | | 20 |
5 | ANSWERED | 3 | | | 1389162844.0 |
1389162844.0 | 0 | | 777777 | | 7 |
| 2014-01-08 14:34:24 | “device” <777777> | 777777 | 777777 |
from-6 | Local/777777@from-internal-out-7-00000000;1 |
| Read | CALLBACK,custom-gvl/2,1,s,1,3 | 0 |
0 | NO ANSWER | 3 | | | 1389162844.0 |
1389162844.0 | 3 | | | | 0 |

—————– /var/spool/asterisk/outgoing/777777.call Channel:Local/777777@from-internal-out-7
WaitTime:30
Context:from-6
Extension:777777
Priority:1
Set:CLID=
Set:EXT=777777
Set:USERID=7

————– /etc/asterisk/extensions.conf lists below:
[from-internal-out-7]
exten => _X.,1,Set(CALLERID(number)=${CLID})
exten => _X.,n,Set(CDR(phoneno)=${EXT})
exten => _X.,n,Set(CDR(userid)=${USERID})
exten => _X.,n,Set(CDR(callerid)=${CLID})
exten => _X.,n,Dial(SIP/A221/${EXTEN},30)
exten => failed,1,Hangup

[from-6]
exten => _X.,1,Answer()
exten => _X.,n,Set(CALLERID(number)=${EXTEN})
exten => _X.,n,Set(CDR(phoneno)=${EXTEN})
exten => _X.,n,Set(CDR(userid)=${USERID})
exten => _X.,n,Set(CDR(callerid)=${CLID})
exten => _X.,n,Set(RETRYCOUNT=$[ 1])
exten => _X.,n(countdown),Set(RETRYCOUNT=$[ ${RETRYCOUNT} – 1])
exten => _X.,n(replay),Read(CALLBACK,custom-gvl/2,1,s,1,3)
exten => _X.,n,GotoIf($[‘${CALLBACK}’=’0’]?replay:pressother)
exten => _X.,n,GotoIf($[${RETRYCOUNT} > 0]?countdown:pressother)
exten => _X.,n(pressother),NoOp(CALLBACK:${CALLBACK})
exten => _X.,n,Hangup()

exten => h,1,Hangup()
exten => i,1,Hangup()

————– /etc/asterisk/cdr.conf lists below:
[general]
enable=yes unanswered = yes congestion = yes

[csv]
usegmtime=no ; log date/time in GMT. Default is “no”
loguniqueid=yes ; log uniqueid. Default is “no”
loguserfield=yes ; log user field. Default is “no”
accountlogs=yes ; create separate log file for each account code. Default is “yes”

————– /etc/odbc.ini
[asterisk-connector]
Description = MySQL connection to ‘asterisk’ database Driver = MySQL
Database = mydatabase Server = localhost UserName = root Password = mypassword Port = 3306
Socket = /var/run/mysqld/mysqld.sock

————– /etc/asterisk/res_odbc.conf lists below:
[ENV]

[asterisk]
enabled => yes dsn => asterisk-connector password => mypassword pre-connect => yes sanitysql => select 1
idlecheck => 30
connect_timeout => 20

————– /etc/asterisk/cdr_adaptive_odbc.conf lists below:
[cdr]
connection=asterisk table=cdr alias start => calldate alias phoneno => phoneno alias userid => userid alias callerid => callerid

————– asterisk’s CLI:
ubuntu*CLI> module reload cdr_adaptive_odbc.so
— Reloading module ‘cdr_adaptive_odbc.so’ (Adaptive ODBC CDR backend)
== Parsing ‘/etc/asterisk/cdr_adaptive_odbc.conf’: Found
— Found adaptive CDR table cdr@asterisk.
— Found alias start for column calldate in cdr@asterisk
— Found alias phoneno for column phoneno in cdr@asterisk
— Found alias callerid for column callerid in cdr@asterisk
— Found alias userid for column userid in cdr@asterisk

— Attempting call on Local/777777@from-internal-out-7 for 777777@from-6:1
(Retry 1)
— Executing [777777@from-internal-out-7:1]
Set(“Local/777777@from-internal-out-7-00000000;2”, “_FLOWID=6”) in new stack
— Executing [777777@from-internal-out-7:2]
Set(“Local/777777@from-internal-out-7-00000000;2”, “CALLERID(number)=”) in new stack
— Executing [777777@from-internal-out-7:3]
Set(“Local/777777@from-internal-out-7-00000000;2”, “CDR(phoneno)=777777”)
in new stack
— Executing [777777@from-internal-out-7:4]
Set(“Local/777777@from-internal-out-7-00000000;2”, “CDR(userid)=7”) in new stack
— Executing [777777@from-internal-out-7:5]
Dial(“Local/777777@from-internal-out-7-00000000;2”, “SIP/A221/777777,30”)
in new stack
== Using SIP RTP CoS mark 5
— Called SIP/A221/777777
— SIP/A221-00000000 is ringing
> 0xb6c04f70 — Probation passed – setting RTP source address to
192.168.1.226:15396
[Jan 8 14:37:01] WARNING[9132][C-00000000]: dsp.c:1490 ast_dsp_process:
Inband DTMF is not supported on codec g729. Use RFC2833
— SIP/A221-00000000 is ringing
— SIP/A221-00000000 answered Local/777777@from-internal-out-7-00000000
;2
> Channel Local/777777@from-internal-out-7-00000000;1 was answered
— Executing [777777@from-6:1]
Answer(“Local/777777@from-internal-out-7-00000000;1”, “”) in new stack
— Executing [777777@from-6:2]
Set(“Local/777777@from-internal-out-7-00000000;1”,
“CALLERID(number)=777777”) in new stack
— Executing [777777@from-6:3]
Set(“Local/777777@from-internal-out-7-00000000;1”, “CDR(phoneno)=777777”)
in new stack
— Executing [777777@from-6:4]
Set(“Local/777777@from-internal-out-7-00000000;1”, “CDR(userid)=7”) in new stack
— Executing [777777@from-6:5]
Set(“Local/777777@from-internal-out-7-00000000;1”, “RETRYCOUNT=1”) in new stack
— Executing [777777@from-6:6]
Set(“Local/777777@from-internal-out-7-00000000;1”, “RETRYCOUNT=0”) in new stack
— Executing [777777@from-6:7]
Read(“Local/777777@from-internal-out-7-00000000;1”,
“CALLBACK,custom-gvl/2,1,s,1,3”) in new stack
— Accepting a maximum of 1 digits.
Playing
‘custom-gvl/2.slin’ (language ‘en’)
> 0xb6c04f70 — Probation passed – setting RTP source address to
192.168.1.226:15396
[Jan 8 14:37:23] NOTICE[9132][C-00000000]: res_odbc.c:1524
odbc_obj_connect: Re-connecting asterisk
[Jan 8 14:37:23] NOTICE[9132][C-00000000]: res_odbc.c:1559
odbc_obj_connect: res_odbc: Connected to asterisk [asterisk-connector]
== Spawn extension (from-internal-out-7, 777777, 13) exited non-zero on
‘Local/777777@from-internal-out-7-00000000;2’
— User disconnected
— Executing [h@from-6:1] Hangup(“SIP/A221-00000000”, “”) in new stack
== Spawn extension (from-6, h, 1) exited non-zero on ‘SIP/A221-00000000’
[Jan 8 14:37:40] NOTICE[9131]: pbx_spool.c:402 attempt_thread: Call completed to Local/777777@from-internal-out-7