Recording All Calls, Mapping to CDR Database

The first problem that I am having occurs when I am trying to match my call recordings to the cdr database. I will have call recordings in the monitor directory that have unique id’s in their file name that are loaded from the dialplan but there are no entries in the database to match the calls. So does anyone know why this would be? I am also trying to use the MixMonitor in queues.conf as well with the unique id in the file name to match the cdr database once the call has been completed. However some of the call recordings match and a lot of them do not. So I have a lot of calls in the cdr database with no record of a recording.

Can anyone suggest the best way to maintain a database of all recorded calls? Should I even be trying to match my call recordings to cdr records? It seems to me that I should be able to link cdr’s and call recordings however I think something is either wrong or I am missing something here.

  • queues.conf -
    monitor-type = MixMonitor
    monitor-format = vox

[hunt_1]
musiconhold=default
strategy = ringall
announce-holdtime = yes
monitor-format = vox

Here is my queue dial plan:

exten => _[d]091,1,Noop(Hunt 1 Dial 091)
exten => _[d]091,n,Macro(holdmusic)
exten => _[d]091,n,Answer()
exten => _[d]091,n,Set(MONITOR_FILENAME=n${UNIQUEID}-${CALLERID(num)}-${STRFTIME(|EST5EDT|%m%d%Y-%H%M%S)})
exten => _[d]091,n,Queue(hunt_1)

Here is my dial macro that I call from everywhere for connecting calls:

[macro-dial]
; used for external extension dialing
exten => s,1,Noop(Dial Macro ARG1 = Dial String ARG2 = Timeout)
exten => s,n,Noop(ARG1: ${ARG1} ARG2 ${ARG2})
exten => s,n,Noop(Callerid: ${CALLERID(num)})
exten => s,n,Set(CALLFILENAME=n${UNIQUEID}-${CALLERID(num)}-${STRFTIME(|EST5EDT|%m%d%Y-%H%M%S)}.vox)
;exten => s,n,Monitor(vox,${CALLFILENAME},m)
exten => s,n,MixMonitor(${CALLFILENAME},W(1),/usr/local/scripts/update_recording_file.pl ${CALLFILENAME})
; if arg3 is supplied use that as the timeout otherwise use nothing
exten => s,n,GotoIf($[${ISNULL(${ARG2})}]?dial-default:dial-to)
exten => s,n(dial-default),Dial(${ARG1},TrH)
exten => s,n,Goto(final)
exten => s,n(dial-to),Dial(${ARG1},${ARG2},TrH)
exten => s,n,Goto(final)
exten => s,n(final),Noop(Macro Dial Done)

MySQL 5.0
Centos 5.2
Asterisk 1.4.21.2

Use the userfield of the CDR. Set a variable there (the same call_id variable of the recorded filename), then you can match them up.

cdr_mysql.conf
[global]
hostname = localhost
dbname=asteriskcdrdb
password = asdfasdfasdf
user = asteriskuser
userfield=1

Then in your dialplan
Set(CDR(userfrield)=${CALLIDORWHATEVERVARIABLEYOUWANT})

Good Luck!

Here is my implementation after the changes.

However my database still does not have an entry for every one of these call recordings. At the end of the day I have a whole bunch of recordings that could not be matched to entries in the database based on the userfield.

Why would asterisk not be making an entry for all of these calls and loading the userfield with my unique id?

Here is my new dialplan:

; used for external extension dialing
exten => s,1,Noop(Dial Macro ARG1 = Dial String ARG2 = Timeout)
exten => s,n,Noop(ARG1: ${ARG1} ARG2 ${ARG2})
exten => s,n,Noop(Callerid: ${CALLERID(num)})
exten => s,n,Backticks(CDR_UNIQUE,/usr/local/scripts/uuidgen.pl)
exten => s,n,Noop(Unique ID: ${CDR_UNIQUE})
exten => s,n,Set(CDR(userfield)=${CDR_UNIQUE})
exten => s,n,Set(CALLFILENAME=n${UNIQUEID}-${CALLERID(num)}-${STRFTIME(|EST5EDT|%m%d%Y-%H%M%S)}~${CDR_UNIQUE}~.vox)
exten => s,n,MixMonitor(${CALLFILENAME},W(1),/usr/local/scripts/update_recording_file.pl ${CALLFILENAME})
; if arg3 is supplied use that as the timeout otherwise use nothing
exten => s,n,GotoIf($[${ISNULL(${ARG2})}]?dial-default:dial-to)
exten => s,n(dial-default),Dial(${ARG1},TrH)
exten => s,n,Goto(final)
exten => s,n(dial-to),Dial(${ARG1},${ARG2},TrH)
exten => s,n,Goto(final)
exten => s,n(final),Noop(Macro Dial Done)

I wish this would have worked I have been beating my head against this problem for months now.

can you see the column userfield in your database (some bundled CDR web-based apps omit this field).

what does cdr_mysql.conf say?

There’s no need to use your backticks perl program.
Between call_id and timestamp, you’ll have separate IDs - saving processing time and dialplan/integration complexity.

Here is a case that I am trying to track down right now.

The phone number has been replaced with XXXXXXXXXX.

Here is the output of a call the was recorded and there is an entry in the cdr for this call. I can find it by the uniqueid that was generated by asterisk, 1233789180.2991. However it did not update the userfield with the unique id the I generated, 663493db-9e68-4a2b-b191-9caaa3ad3844.

±--------------------±-----±------------±---------±----------±------------±----------------+
| calldate | src | dst | dcontext | userfield | disposition | uniqueid |
±--------------------±-----±------------±---------±----------±------------±----------------+
| 2009-02-04 15:13:00 | 155 | XXXXXXXXXX | outbound | | ANSWERED | 1233789180.2991 |
±--------------------±-----±------------±---------±----------±------------±----------------+

The userid field is being populated in certain cases so I know the field is working to a certain degree.

CLI Output:

[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Executing [s@macro-dial:2] NoOp(“Local/155@extensions-auto-7ede,1”, "ARG1: Zap/g2/XXXXXXXXXX ARG2 ") in new stack
[Feb 4 15:13:01] DEBUG[32400] app_macro.c: Executed application: Noop
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Executing [s@macro-dial:3] NoOp(“Local/155@extensions-auto-7ede,1”, "Callerid: ") in new stack
[Feb 4 15:13:01] DEBUG[32400] app_macro.c: Executed application: Noop
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Executing [s@macro-dial:4] BackTicks(“Local/155@extensions-auto-7ede,1”, “CDR_UNIQUE|/usr/local/scripts/uuidgen.pl”) in new stack
[Feb 4 15:13:01] DEBUG[32400] app_macro.c: Executed application: Backticks
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Executing [s@macro-dial:5] NoOp(“Local/155@extensions-auto-7ede,1”, “Unique ID: 663493db-9e68-4a2b-b191-9caaa3ad3844”) in new stack
[Feb 4 15:13:01] DEBUG[32400] app_macro.c: Executed application: Noop
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Executing [s@macro-dial:6] Set(“Local/155@extensions-auto-7ede,1”, “CDR(userfield)=663493db-9e68-4a2b-b191-9caaa3ad3844”) in new stack
[Feb 4 15:13:01] DEBUG[32400] app_macro.c: Executed application: Set
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Executing [s@macro-dial:7] Set(“Local/155@extensions-auto-7ede,1”, “CALLFILENAME=n1233789180.2991–02042009-181301~663493db-9e68-4a2b-b191-9caaa3ad3844~.vox”) in new stack
[Feb 4 15:13:01] DEBUG[32400] app_macro.c: Executed application: Set
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Executing [s@macro-dial:8] MixMonitor(“Local/155@extensions-auto-7ede,1”, “n1233789180.2991–02042009-181301~663493db-9e68-4a2b-b191-9caaa3ad3844~.vox|W(1)|/usr/local/scripts/update_recording_file.pl n1233789180.2991–02042009-181301~663493db-9e68-4a2b-b191-9caaa3ad3844~.vox”) in new stack
[Feb 4 15:13:01] DEBUG[32400] app_macro.c: Executed application: MixMonitor
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Executing [s@macro-dial:9] GotoIf(“Local/155@extensions-auto-7ede,1”, “1?dial-default:dial-to”) in new stack
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Goto (macro-dial,s,10)
[Feb 4 15:13:01] DEBUG[32400] app_macro.c: Executed application: GotoIf
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Executing [s@macro-dial:10] Dial(“Local/155@extensions-auto-7ede,1”, “Zap/g2/XXXXXXXXXX||TrH”) in new stack
[Feb 4 15:13:01] DEBUG[32400] chan_zap.c: Dialing ‘XXXXXXXXXX’
[Feb 4 15:13:01] DEBUG[32400] chan_zap.c: Deferring dialing…
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Called g2/XXXXXXXXXX
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Local/155@extensions-auto-7ede,1 requested special control 20, passing it to Zap/40-1
[Feb 4 15:13:01] VERBOSE[32403] logger.c: == Begin MixMonitor Recording Local/155@extensions-auto-7ede,1
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Local/155@extensions-auto-7ede,1 requested special control 20, passing it to Zap/40-1
[Feb 4 15:13:01] VERBOSE[32400] logger.c: – Local/155@extensions-auto-7ede,1 requested special control 20, passing it to Zap/40-1
[Feb 4 15:13:01] VERBOSE[15430] logger.c: Extension Changed 155[extensions] new state InUse for Notify User 100
[Feb 4 15:13:01] VERBOSE[32396] logger.c: == Spawn extension (macro-dial, s, 12) exited non-zero on ‘Local/155@extensions-auto-7ede,2’ in macro ‘dial’
[Feb 4 15:13:01] VERBOSE[32396] logger.c: == Spawn extension (macro-dial, s, 12) exited non-zero on ‘Local/155@extensions-auto-7ede,2’ in macro ‘stduser’
[Feb 4 15:13:01] VERBOSE[32396] logger.c: == Spawn extension (macro-dial, s, 12) exited non-zero on ‘Local/155@extensions-auto-7ede,2’
[Feb 4 15:13:01] VERBOSE[32399] logger.c: == End MixMonitor Recording Local/155@extensions-auto-7ede,2

cdr_mysql.conf
[global]
hostname=192.168.0.98
dbname=ast_manager
table=call_record
user=asterisk
password=XXXXX
;port=3306
sock=/var/lib/mysql/mysql.sock
userfield=1
unanswered=yes

It’s not populated in this example.

5th field is blank.

Can you restart asterisk, or reload the cdr mysql module, CLI>module reload cdr_addon_mysql.so

What does the Master.csv file say in /var/log/asterisk/cdr-csv for the userfield? (It’s not labeled, so just line up the fields with what you know is already happening).

To simplify debugging, just create a fictitious extension that hangs up writing to userfield,
e.g.

exten = 5551234,1,Answer
exten = 5551234,n,Set(CDR(userfield)=blah)
exten = 5551234,n,Hangup

Its not populated because it didn’t work in this case.

Here is one that is populated where the update did work.

±--------------------±-----------±-----±---------±-------------------------------------±------------±----------------+
| calldate | src | dst | dcontext | userfield | disposition | uniqueid |
±--------------------±-----------±-----±---------±-------------------------------------±------------±----------------+
| 2009-02-04 17:06:55 | XXXXXXXXXX | 169 | inbound | 054fb755-bdb7-4826-b940-a54a3e81e001 | ANSWERED | 1233796015.5484 |
±--------------------±-----------±-----±---------±-------------------------------------±------------±----------------+

Ok I think I have found part of the problem. We use this originate statement to auto dial numbers from another application.

originate Local/301@extensions-auto extension XXXXXXXXXX@outbound

However when I use the originate to dial the number the CDR record is updated but the userfield id is never actually loaded.

I really have no idea why this would be.

Here is the output from the CLI not using originate where the update works:

-- Executing [1XXXXXXXXXX@outbound:1] NoOp("IAX2/301-5766", "Outbound Context") in new stack
-- Executing [1XXXXXXXXXX@outbound:2] Macro("IAX2/301-5766", "dial|Zap/g2/1XXXXXXXXXX") in new stack
-- Executing [s@macro-dial:1] NoOp("IAX2/301-5766", "Dial Macro ARG1 = Dial String ARG2 = Timeout") in new stack

[Feb 4 18:16:03] DEBUG[14661]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:2] NoOp(“IAX2/301-5766”, "ARG1: Zap/g2/1XXXXXXXXXX ARG2 ") in new stack
[Feb 4 18:16:03] DEBUG[14661]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:3] NoOp(“IAX2/301-5766”, “Callerid: 301”) in new stack
[Feb 4 18:16:03] DEBUG[14661]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:4] BackTicks(“IAX2/301-5766”, “CDR_UNIQUE|/usr/local/scripts/uuidgen.pl”) in new stack
[Feb 4 18:16:03] DEBUG[14661]: app_macro.c:337 _macro_exec: Executed application: Backticks
– Executing [s@macro-dial:5] NoOp(“IAX2/301-5766”, “Unique ID: 1b2899af-7484-4ab9-bc94-ea511217f060”) in new stack
[Feb 4 18:16:03] DEBUG[14661]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:6] Set(“IAX2/301-5766”, “CDR(userfield)=1b2899af-7484-4ab9-bc94-ea511217f060”) in new stack
[Feb 4 18:16:03] DEBUG[14661]: app_macro.c:337 _macro_exec: Executed application: Set
– Executing [s@macro-dial:7] Set(“IAX2/301-5766”, “CALLFILENAME=n1233800163.58-301-02042009-211603~1b2899af-7484-4ab9-bc94-ea511217f060~.vox”) in new stack
[Feb 4 18:16:03] DEBUG[14661]: app_macro.c:337 _macro_exec: Executed application: Set
– Executing [s@macro-dial:8] MixMonitor(“IAX2/301-5766”, “n1233800163.58-301-02042009-211603~1b2899af-7484-4ab9-bc94-ea511217f060~.vox|W(1)|/usr/local/scripts/update_recording_file.pl n1233800163.58-301-02042009-211603~1b2899af-7484-4ab9-bc94-ea511217f060~.vox”) in new stack
[Feb 4 18:16:03] DEBUG[14661]: app_macro.c:337 _macro_exec: Executed application: MixMonitor
– Executing [s@macro-dial:9] GotoIf(“IAX2/301-5766”, “1?dial-default:dial-to”) in new stack
– Goto (macro-dial,s,10)
[Feb 4 18:16:03] DEBUG[14661]: app_macro.c:337 _macro_exec: == Begin MixMonitor Recording IAX2/301-5766
Executed application: GotoIf
– Executing [s@macro-dial:10] Dial(“IAX2/301-5766”, “Zap/g2/1XXXXXXXXXX||TrH”) in new stack
[Feb 4 18:16:03] DEBUG[14661]: chan_zap.c:1948 zt_call: Dialing ‘1XXXXXXXXXX’
[Feb 4 18:16:03] DEBUG[14661]: chan_zap.c:2024 zt_call: Deferring dialing…
– Called g2/1XXXXXXXXXX
[Feb 4 18:16:03] DEBUG[14661]: chan_zap.c:4377 zt_handle_event: Ignoring wink on channel 37
[Feb 4 18:16:03] DEBUG[14661]: chan_zap.c:4440 zt_handle_event: Sent deferred digit string: T1XXXXXXXXXXw
– Zap/37-1 answered IAX2/301-5766
– Hungup ‘Zap/37-1’
== Spawn extension (macro-dial, s, 10) exited non-zero on ‘IAX2/301-5766’ in macro ‘dial’
== Spawn extension (macro-dial, s, 10) exited non-zero on ‘IAX2/301-5766’
== End MixMonitor Recording IAX2/301-5766
== Executing [/usr/local/scripts/update_recording_file.pl n1233800163.58-301-02042009-211603~1b2899af-7484-4ab9-bc94-ea511217f060~.vox]
– Hungup ‘IAX2/301-5766’

Here is the output from the CLI when the database is not updated with the userfield id:

originate Local/301@extensions-auto extension XXXXXXXXXX@outbound
– Executing [301@extensions-auto:1] NoOp(“Local/301@extensions-auto-423a,2”, “extentions |IAX2/301”) in new stack
– Executing [301@extensions-auto:2] Macro(“Local/301@extensions-auto-423a,2”, “stduser|IAX2/301|301”) in new stack
– Executing [s@macro-stduser:1] NoOp(“Local/301@extensions-auto-423a,2”, “Std User Macro ARG1 = Dial String ARG2 = VM Box ARG3 = Timeout”) in new stack
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-stduser:2] NoOp(“Local/301@extensions-auto-423a,2”, "ARG1: IAX2/301 ARG2 301 ARG3 ") in new stack
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:;40m337 _macro_exec: Executed application: Noop
– Executing [s@macro-stduser:3] NoOp(“Local/301@extensions-auto-423a,2”, "Callerid: ") in new stack
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-stduser:4] GotoIf(“Local/301@extensions-auto-423a,2”, “1?dial-default:dial-to”) in new stack
– Goto (macro-stduser,s,5)
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: GotoIf
– Executing [s@macro-stduser:5] Macro(“Local/301@extensions-auto-423a,2”, “dial|IAX2/301|15”) in new stack
– Executing [s@macro-dial:1] NoOp7;40m(“Local/301@extensions-auto-423a,2”, “Dial Macro ARG1 = Dial String ARG2 = Timeout”) in new stack
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:2] NoOp(“Local/301@extensions-auto-423a,2”, “ARG1: IAX2/301 ARG2 15”) in new stack
[Feb 4 18:11:31] 40mDEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:3] NoOp(“Local/301@extensions-auto-423a,2”, "Callerid: ") in new stack
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:4] 1;36;40mBackTicks(“Local/301@extensions-auto-423a,2”, “CDR_UNIQUE|/usr/local/scripts/uuidgen.pl”) in new stack
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: Backticks
– Executing [s@macro-dial:5] NoOp(“Local/301@extensions-auto-423a,2”, “Unique ID: 4092be89-32ab-4a34-b6c4-b462aebeb663[color=red][0;37;40m[/color]”) in new stack
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:6] Set(“Local/301@extensions-auto-423a,2”, “CDR(userfield)=4092be89-32ab-4a34-b6c4-b462aebeb663”) in new stack
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 40m_macro_exec: Executed application: Set
– Executing [s@macro-dial:7] Set(“Local/301@extensions-auto-423a,2”, “CALLFILENAME=n1233799891.55–02042009-211131~4092be89-32ab-4a34-b6c4-b462aebeb663~.vox”) in new stack
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: Set
– Executing [s@macro-dial:8] MixMonitor(“Local/301@extensions-auto-423a,2”, “n1233799891.55–02042009-211131~4092be89-32ab-4a34-b6c4-b462aebeb663~.vox|W(1)|/usr/local/scripts/update_recording_file.pl n1233799891.55–02042009-211131~4092be89-32ab-4a34-b6c4-b462aebeb663~.vox”) in new stack
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: MixMonitor
– Executing [s@macro-dial:9] [1;36;40mGotoIf(“Local/301@extensions-auto-423a,2”, “0?dial-default:dial-to”) in new stack
– Goto (macro-dial,s,12)
[Feb 4 18:11:31] DEBUG[14641]: app_macro.c:337 _macro_exec: Executed application: GotoIf
– Executing [s@macro-dial:12] Dial(“Local/301@extensions-auto-423a,2”, “IAX2/301|15|TrH”) in new stack
[Feb 4 18:11:31] DEBUG[14641]: chan_iax2.c:3062 create_addr: prepending 4 to prefs
– Called 301
== Begin MixMonitor Recording Local/301@extensions-auto-423a,2
– Call accepted by 192.168.39.205 (format ulaw)
– Format for call is ulaw
– IAX2/301-5970 is ringing
– IAX2/301-5970 answered Local/301@extensions-auto-423a,2

-- Executing [XXXXXXXXXX@outbound:1] NoOp("Local/301@extensions-auto-423a,1", "Outbound Context No 1") in new stack
-- Executing [XXXXXXXXXX@outbound:2] Goto("Local/301@extensions-auto-423a,1", "1XXXXXXXXXX|1") in new stack
-- Goto (outbound,1XXXXXXXXXX,1)
-- Executing [1XXXXXXXXXX@outbound:1] NoOp("Local/301@extensions-auto-423a,1", "Outbound Context") in new stack
-- Executing [1XXXXXXXXXX@outbound:2] Macro("Local/301@extensions-auto-423a,1", "dial|Zap/g2/1XXXXXXXXXX") in new stack
-- Executing [s@macro-dial:1] NoOp("Local/301@extensions-auto-423a,1", "Dial Macro ARG1 = Dial String ARG2 = Timeout") in new stack

[Feb 4 18:11:36] DEBUG[14645]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:2] NoOp(“Local/301@extensions-auto-423a,1”, "ARG1: Zap/g2/1XXXXXXXXXX ARG2 ") in new stack
[Feb 4 18:11:36] DEBUG[14645]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:3] NoOp(“Local/301@extensions-auto-423a,1”, "Callerid: ") in new stack
[Feb 4 18:11:36] DEBUG[14645]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:4] BackTicks(“Local/301@extensions-auto-423a,1”, “CDR_UNIQUE|/usr/local/scripts/uuidgen.pl”) in new stack
[Feb 4 18:11:36] DEBUG[14645]: app_macro.c:337 _macro_exec: Executed application: Backticks
– Executing [s@macro-dial:5] NoOp(“Local/301@extensions-auto-423a,1”, “Unique ID: 0a3f0361-5350-4c15-8500-75e62ef79527”) in new stack
[Feb 4 18:11:36] DEBUG[14645]: app_macro.c:337 _macro_exec: Executed application: Noop
– Executing [s@macro-dial:6] Set(“Local/301@extensions-auto-423a,1”, “CDR(userfield)=0a3f0361-5350-4c15-8500-75e62ef79527”) in new stack
[Feb 4 18:11:36] DEBUG[14645]: app_macro.c:337 _macro_exec: Executed application: Set
– Executing [s@macro-dial:7] Set(“Local/301@extensions-auto-423a,1”, “CALLFILENAME=n1233799891.54–02042009-211136~0a3f0361-5350-4c15-8500-75e62ef79527~.vox”) in new stack
[Feb 4 18:11:36] DEBUG[14645]: app_macro.c:337 _macro_exec: Executed application: Set
– Executing [s@macro-dial:8] MixMonitor(“Local/301@extensions-auto-423a,1”, “n1233799891.54–02042009-211136~0a3f0361-5350-4c15-8500-75e62ef79527~.vox|W(1)|/usr/local/scripts/update_recording_file.pl n1233799891.54–02042009-211136~0a3f0361-5350-4c15-8500-75e62ef79527~.vox”) in new stack
[Feb 4 18:11:36] DEBUG[14645]: app_macro.c:337 _macro_exec: Executed application: MixMonitor
– Executing [s@macro-dial:9] GotoIf(“Local/301@extensions-auto-423a,1”, “1?dial-default:dial-to”) in new stack
– Goto (macro-dial,s,10)
== Begin MixMonitor Recording Local/301@extensions-auto-423a,1
[Feb 4 18:11:36] DEBUG[14645]: app_macro.c:337 _macro_exec: Executed application: GotoIf
– Executing [s@macro-dial:10] Dial(“Local/301@extensions-auto-423a,1”, “Zap/g2/1XXXXXXXXXX||TrH”) in new stack
[Feb 4 18:11:36] DEBUG[14645]: chan_zap.c:1948 zt_call: Dialing ‘1XXXXXXXXXX’
[Feb 4 18:11:36] DEBUG[14645]: chan_zap.c:2024 zt_call: Deferring dialing…
– Called g2/1XXXXXXXXXX
– Local/301@extensions-auto-423a,1 requested special control 20, passing it to Zap/37-1
– Local/301@extensions-auto-423a,1 requested special control 20, passing it to Zap/37-1
– Local/301@extensions-auto-423a,1 requested special control 20, passing it to Zap/37-1
== Spawn extension (macro-dial, s, 12) exited non-zero on ‘Local/301@extensions-auto-423a,2’ in macro ‘dial’
== Spawn extension (macro-dial, s, 12) exited non-zero on ‘Local/301@extensions-auto-423a,2’ in macro ‘stduser’
== Spawn extension (macro-dial, s, 12) exited non-zero on ‘Local/301@extensions-auto-423a,2’
== End MixMonitor Recording Local/301@extensions-auto-423a,2
== Executing [/usr/local/scripts/update_recording_file.pl n1233799891.55–02042009-211131~4092be89-32ab-4a34-b6c4-b462aebeb663~.vox]
[Feb 4 18:11:37] DEBUG[14645]: chan_zap.c:4377 zt_handle_event: Ignoring wink on channel 37
[Feb 4 18:11:37] DEBUG[14645]: chan_zap.c:4440 zt_handle_event: Sent deferred digit string: T1XXXXXXXXXXw
– Zap/37-1 answered IAX2/301-5970
– Hungup ‘Zap/37-1’
== Spawn extension (macro-dial, s, 10) exited non-zero on ‘IAX2/301-5970’ in macro ‘dial’
== Spawn extension (macro-dial, s, 10) exited non-zero on ‘IAX2/301-5970’
== End MixMonitor Recording Local/301@extensions-auto-423a,1
– Hungup ‘IAX2/301-5970’