QueueMetrics > Outbound and QueueMetrics

Need Caller ID

(1/1)

Zerabox:
I need to have a general caller ID that matches the PSTN database here in South Carolina or we get back a dial tone from the central Office. If the agent picks up and dials from the from-agent context then the call goes out and the caller ID is sent out and the call completes. If the agent uses the dial button through the Agent GUI no caller ID is sent and we get back the dial tone from the central office... So my question is where should I add the caller ID for using the dial button the caller ID I need sent out is <8643352720>

(After adding the ; extension 28: agent custom dial piece of the dial plan it now allows me to call from the dial button BUT HAS NO CALLER ID) I have no idea where to add this without breaking the dialplan ...help please.

;  extension 28: agent custom dial
exten => 28,1,Answer
exten => 28,2,NoOp( "QM: Agent Custom Dial. Dialing ${EXTTODIAL} on queue ${OUTQUEUE}  made by '${QM_LOGIN}'" )
exten => 28,3,Set(QDIALER_QUEUE=${OUTQUEUE})
exten => 28,4,Set(QDIALER_NUMBER=${EXTTODIAL})
exten => 28,5,Set(QDIALER_AGENT=Agent/${AGENTCODE})
exten => 28,6,Set(QDIALER_CHANNEL=Zap/g0/${QDIALER_NUMBER})
exten => 28,7,Set(QueueName=${QDIALER_QUEUE})
exten => 28,8,MixMonitor(Q-${QDIALER_QUEUE}-${UNIQUEID}.WAV|b|)
exten => 28,9,Goto(qm-queuedial,s,1)
exten => 28,10,Hangup


This is the from-agent piece of the dial plan... and works if the agent calls with the handset and not the GUI.

[from-agent]
exten => _1NXXNXXXXXX,1,goto(queuedial,999${EXTEN},1)
exten => _NXXNXXXXXX,1,goto(queuedial,999${EXTEN},1)
exten => _NXXXXXX,1,goto(queuedial,999${EXTEN},1)
exten => _911,1,goto(queuedial,999${EXTEN},1)
include => from-internal

[queuedial]
; this piece of dialplan is just a calling hook into the [qm-queuedial] context that actually does the
; outbound dialing - replace as needed - just fill in the same variables.
exten => _XXX.,1,Set(QDIALER_QUEUE=q-${EXTEN:0:3})
exten => _XXX.,n,Set(QDIALER_NUMBER=${EXTEN:3})
exten => _XXX.,n,Set(QDIALER_AGENT=Agent/${CALLERID(num)})
exten => _XXX.,n(setcid-outq999),Set(CALLERID(all)=<8643352720>)
exten => _XXX.,n,Set(QDIALER_CHANNEL=Zap/g0/${QDIALER_NUMBER})
exten => _XXX.,n,Set(QueueName=${QDIALER_QUEUE})
exten => _XXX.,n,MixMonitor(Q-${QDIALER_QUEUE}-${UNIQUEID}.WAV|b|)
exten => _XXX.,n,Goto(qm-queuedial,s,1)
include => from-internal

[queuedial-loggedon]
; This piece of dialplan will let only logged on agents dial out
exten => _XXX.,1,Set(QDIALER_QUEUE=q-${EXTEN:0:3})
exten => _XXX.,n,Set(QDIALER_NUMBER=${EXTEN:3})
exten => _XXX.,n,Set(QDIALER_AGENT=Agent/${AGENTBYCALLERID_${CALLERID(num)}})
exten => _XXX.,n,Set(QDIALER_CHANNEL=SIP/${QDIALER_NUMBER})
exten => _XXX.,n,Set(QueueName=${QDIALER_QUEUE})
exten => _XXX.,n,MixMonitor(Q-${QDIALER_QUEUE}-${UNIQUEID}.WAV|b|)
exten => _XXX.,n,GotoIf($[${LEN(${QDIALER_AGENT})} > 6]?qm-queuedial,s,1)
exten => _XXX.,n,NoOp,Extension ${CALLERID(num)} is not logged on as agent.
exten => _XXX.,n,Playback(agent-loggedoff)
exten => _XXX.,n,Congestion


[qm-queuedial]
; We use a global variable to pass values back from the answer-detect macro.
; STATUS = U unanswered
;        = A answered    (plus CAUSECOMPLETE=C when callee hung up)
; The 'g' dial parameter must be used in order to track callee disconnecting.
; Note that we'll be using the 'h' hook in any case to do the logging when channels go down.
; We set the CDR(accountcode) for live monitoring by QM.
;
exten => s,1,NoOp,Outbound call -> A:${QDIALER_AGENT} N:${QDIALER_NUMBER} Q:${QDIALER_QUEUE} Ch:${QDIALER_CHANNEL}
exten => s,n,Set(CDR(accountcode)=QDIALAGI)
exten => s,n,Set(ST=${EPOCH})
exten => s,n,Set(GM=QDV-${QDIALER_AGENT})
exten => s,n,Set(GLOBAL(${GM})=U)
exten => s,n,Set(GLOBAL(${GM}ans)=0)
exten => s,n,Macro(queuelog,${ST},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},CALLOUTBOUND,-,${QDIALER_NUMBER})
exten => s,n,Dial(${QDIALER_CHANNEL},300,gM(queuedial-answer^${UNIQUEID}^${GM}^${QDIALER_QUEUE}^${QDIALER_AGENT}^${ST}))
exten => s,n,Set(CAUSECOMPLETE=${IF($["${DIALSTATUS}" = "ANSWER"]?C)})


Thanks in advance Richie

Zerabox:
Here is the CLI (at the bottom of this post) of an outgoing call, I think I have more then one issue, we had the from-agent added by Loway last year for tracking outgoing calls, what we need now after growing pains is the ability to track different outgoing queues for customers. So I added this piece of the dial plan and added the additional outgoing queues to queuemetrics but again no caller ID. If I am reading this right all of the calls for this piece of the dial plan are going to the " exten => 28,9,Goto(qm-queuedial,s,1) " which is carrying no caller ID?

; extension 28: agent custom dial
exten => 28,1,Answer
exten => 28,2,NoOp( "QM: Agent Custom Dial. Dialing ${EXTTODIAL} on queue ${OUTQUEUE}  made by '${QM_LOGIN}'" )
exten => 28,3,Set(QDIALER_QUEUE=${OUTQUEUE})
exten => 28,4,Set(QDIALER_NUMBER=${EXTTODIAL})
exten => 28,5,Set(QDIALER_AGENT=Agent/${AGENTCODE})
exten => 28,6,Set(QDIALER_CHANNEL=Zap/g0/${QDIALER_NUMBER})
exten => 28,7,Set(QueueName=${QDIALER_QUEUE})
exten => 28,8,MixMonitor(Q-${QDIALER_QUEUE}-${UNIQUEID}.WAV|b|)
exten => 28,9,Goto(qm-queuedial,s,1)
exten => 28,10,Hangup

I think this is where I need the caller ID for any of the different outgoing queues I have built? I just don't know where to place the caller ID or if I can do this here?

[qm-queuedial]
; We use a global variable to pass values back from the answer-detect macro.
; STATUS = U unanswered
;        = A answered    (plus CAUSECOMPLETE=C when callee hung up)
; The 'g' dial parameter must be used in order to track callee disconnecting.
; Note that we'll be using the 'h' hook in any case to do the logging when channels go down.
; We set the CDR(accountcode) for live monitoring by QM.
;
exten => s,1,NoOp,Outbound call -> A:${QDIALER_AGENT} N:${QDIALER_NUMBER} Q:${QDIALER_QUEUE} Ch:${QDIALER_CHANNEL}
exten => s,n,Set(CDR(accountcode)=QDIALAGI)
exten => s,n,Set(ST=${EPOCH})
exten => s,n,Set(GM=QDV-${QDIALER_AGENT})
exten => s,n,Set(GLOBAL(${GM})=U)
exten => s,n,Set(GLOBAL(${GM}ans)=0)
exten => s,n,Macro(queuelog,${ST},${UNIQUEID},${QDIALER_QUEUE},${QDIALER_AGENT},CALLOUTBOUND,-,${QDIALER_NUMBER})
exten => s,n,Dial(${QDIALER_CHANNEL},300,gM(queuedial-answer^${UNIQUEID}^${GM}^${QDIALER_QUEUE}^${QDIALER_AGENT}^${ST}))
exten => s,n,Set(CAUSECOMPLETE=${IF($["${DIALSTATUS}" = "ANSWER"]?C)})

"CLI from an Agent Dial button"

-- Executing [201@from-internal:1] GotoIf("Local/201@from-internal-3f8f,2", "1?ext-local|201|1") in new stack
    -- Goto (ext-local,201,1)
    -- Executing [201@ext-local:1] Macro("Local/201@from-internal-3f8f,2", "exten-vm|201|201") in new stack
    -- Executing [s@macro-exten-vm:1] Macro("Local/201@from-internal-3f8f,2", "user-callerid") in new stack
    -- Executing [s@macro-user-callerid:1] Set("Local/201@from-internal-3f8f,2", "AMPUSER=") in new stack
    -- Executing [s@macro-user-callerid:2] GotoIf("Local/201@from-internal-3f8f,2", "1?report") in new stack
    -- Goto (macro-user-callerid,s,11)
    -- Executing [s@macro-user-callerid:11] GotoIf("Local/201@from-internal-3f8f,2", "0?continue") in new stack
    -- Executing [s@macro-user-callerid:12] Set("Local/201@from-internal-3f8f,2", "__TTL=64") in new stack
    -- Executing [s@macro-user-callerid:13] GotoIf("Local/201@from-internal-3f8f,2", "1?continue") in new stack
    -- Goto (macro-user-callerid,s,20)
    -- Executing [s@macro-user-callerid:20] NoOp("Local/201@from-internal-3f8f,2", "Using CallerID "" <>") in new stack
    -- Executing [s@macro-exten-vm:2] Set("Local/201@from-internal-3f8f,2", "RingGroupMethod=none") in new stack
    -- Executing [s@macro-exten-vm:3] Set("Local/201@from-internal-3f8f,2", "VMBOX=201") in new stack
    -- Executing [s@macro-exten-vm:4] Set("Local/201@from-internal-3f8f,2", "EXTTOCALL=201") in new stack
    -- Executing [s@macro-exten-vm:5] Set("Local/201@from-internal-3f8f,2", "CFUEXT=") in new stack
    -- Executing [s@macro-exten-vm:6] Set("Local/201@from-internal-3f8f,2", "CFBEXT=") in new stack
    -- Executing [s@macro-exten-vm:7] Set("Local/201@from-internal-3f8f,2", "RT=15") in new stack
    -- Executing [s@macro-exten-vm:8] Macro("Local/201@from-internal-3f8f,2", "record-enable|201|IN") in new stack
    -- Executing [s@macro-record-enable:1] GotoIf("Local/201@from-internal-3f8f,2", "1?check") in new stack
    -- Goto (macro-record-enable,s,4)
    -- Executing [s@macro-record-enable:4] AGI("Local/201@from-internal-3f8f,2", "recordingcheck|20100709-105005|1278687005.372126") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/recordingcheck
  recordingcheck|20100709-105005|1278687005.372126: Inbound recording enabled.
  recordingcheck|20100709-105005|1278687005.372126: CALLFILENAME=20100709-105005-1278687005.372126
    -- AGI Script recordingcheck completed, returning 0
    -- Executing [s@macro-record-enable:999] MixMonitor("Local/201@from-internal-3f8f,2", "20100709-105005-1278687005.372126.wav||") in new stack
    -- Executing [s@macro-exten-vm:9] Macro("Local/201@from-internal-3f8f,2", "dial|15|tr|201") in new stack
    -- Executing [s@macro-dial:1] GotoIf("Local/201@from-internal-3f8f,2", "1?dial") in new stack
    -- Goto (macro-dial,s,3)
    -- Executing [s@macro-dial:3] AGI("Local/201@from-internal-3f8f,2", "dialparties.agi") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/dialparties.agi
  == Begin MixMonitor Recording Local/201@from-internal-3f8f,2
  dialparties.agi: Starting New Dialparties.agi
  == Parsing '/etc/asterisk/manager.conf': Found
  == Parsing '/etc/asterisk/manager_additional.conf': Found
  == Parsing '/etc/asterisk/manager_custom.conf': Found
  == Manager 'admin' logged on from 127.0.0.1
  dialparties.agi: Caller ID name is 'unknown' number is 'unknown'
  dialparties.agi: Methodology of ring is  'none'
    --  dialparties.agi: Added extension 201 to extension map
    --  dialparties.agi: Extension 201 cf is disabled
    --  dialparties.agi: Extension 201 do not disturb is disabled
    --  dialparties.agi: DbDel CALLTRACE/201 - Caller ID is not defined
    --  dialparties.agi: Filtered ARG3: 201
  == Manager 'admin' logged off from 127.0.0.1
    -- AGI Script dialparties.agi completed, returning 0
    -- Executing [s@macro-dial:7] Dial("Local/201@from-internal-3f8f,2", "SIP/201|15|tr") in new stack
    -- Called 201
    -- SIP/201-0a1a0c08 is ringing
    -- SIP/201-0a1a0c08 answered Local/201@from-internal-3f8f,2
    -- Executing [28@queuemetrics:1] Answer("Local/201@from-internal-3f8f,1", "") in new stack
    -- Executing [28@queuemetrics:2] NoOp("Local/201@from-internal-3f8f,1", " "QM: Agent Custom Dial. Dialing 4493548 on queue q-999  made by agent/201" ") in new stack
    -- Executing [28@queuemetrics:3] Set("Local/201@from-internal-3f8f,1", "QDIALER_QUEUE=q-999") in new stack
    -- Executing [28@queuemetrics:4] Set("Local/201@from-internal-3f8f,1", "QDIALER_NUMBER=4493548") in new stack
    -- Executing [28@queuemetrics:5] Set("Local/201@from-internal-3f8f,1", "QDIALER_AGENT=Agent/201") in new stack
    -- Executing [28@queuemetrics:6] Set("Local/201@from-internal-3f8f,1", "QDIALER_CHANNEL=Zap/g0/4493548") in new stack
    -- Executing [28@queuemetrics:7] Set("Local/201@from-internal-3f8f,1", "QueueName=q-999") in new stack
    -- Executing [28@queuemetrics:8] MixMonitor("Local/201@from-internal-3f8f,1", "Q-q-999-1278687005.372125.WAV|b|") in new stack
    -- Executing [28@queuemetrics:9] Goto("Local/201@from-internal-3f8f,1", "qm-queuedial|s|1") in new stack
    -- Goto (qm-queuedial,s,1)
    -- Executing [s@qm-queuedial:1] NoOp("Local/201@from-internal-3f8f,1", "Outbound call -> A:Agent/201 N:4493548 Q:q-999 Ch:Zap/g0/4493548") in new stack
    -- Executing [s@qm-queuedial:2] Set("Local/201@from-internal-3f8f,1", "CDR(accountcode)=QDIALAGI") in new stack
    -- Executing [s@qm-queuedial:3] Set("Local/201@from-internal-3f8f,1", "ST=1278687006") in new stack
    -- Executing [s@qm-queuedial:4] Set("Local/201@from-internal-3f8f,1", "GM=QDV-Agent/201") in new stack
    -- Executing [s@qm-queuedial:5] Set("Local/201@from-internal-3f8f,1", "GLOBAL(QDV-Agent/201)=U") in new stack
  == Setting global variable 'QDV-Agent/201' to 'U'
    -- Executing [s@qm-queuedial:6] Set("Local/201@from-internal-3f8f,1", "GLOBAL(QDV-Agent/201ans)=0") in new stack
  == Begin MixMonitor Recording Local/201@from-internal-3f8f,1
  == Setting global variable 'QDV-Agent/201ans' to '0'
    -- Executing [s@qm-queuedial:7] Macro("Local/201@from-internal-3f8f,1", "queuelog|1278687006|1278687005.372125|q-999|Agent/201|CALLOUTBOUND|-|4493548") in new stack
    -- Executing [s@macro-queuelog:1] QueueLog("Local/201@from-internal-3f8f,1", "q-999|1278687005.372125|Agent/201|CALLOUTBOUND|-|4493548|") in new stack
    -- Executing [s@qm-queuedial:8] Dial("Local/201@from-internal-3f8f,1", "Zap/g0/4493548|300|gM(queuedial-answer^1278687005.372125^QDV-Agent/201^q-999^Agent/201^1278687006)") in new stack
    -- Requested transfer capability: 0x00 - SPEECH
    -- Called g0/4493548
    -- Local/201@from-internal-3f8f,1 requested special control 20, passing it to Zap/1-1
    -- Zap/1-1 is proceeding passing it to Local/201@from-internal-3f8f,1
    -- Local/201@from-internal-3f8f,1 requested special control 20, passing it to Zap/1-1
    -- Local/201@from-internal-3f8f,1 requested special control 20, passing it to Zap/1-1
    -- Zap/1-1 answered Local/201@from-internal-3f8f,1
    -- Executing [s@macro-queuedial-answer:1] NoOp("Zap/1-1", ""Macro: queuedial-answer UID:1278687005.372125 GR:QDV-Agent/201 Q:q-999 A:Agent/201 E:1278687006"") in new stack
    -- Executing [s@macro-queuedial-answer:2] Set("Zap/1-1", "NOW=1278687007") in new stack
    -- Executing [s@macro-queuedial-answer:3] Set("Zap/1-1", "WD=1") in new stack
    -- Executing [s@macro-queuedial-answer:4] Macro("Zap/1-1", "queuelog|1278687007|1278687005.372125|q-999|Agent/201|CONNECT|1") in new stack
    -- Executing [s@macro-queuelog:1] QueueLog("Zap/1-1", "q-999|1278687005.372125|Agent/201|CONNECT|1||") in new stack
    -- Executing [s@macro-queuedial-answer:5] Set("Zap/1-1", "GLOBAL(QDV-Agent/201)=A") in new stack
  == Setting global variable 'QDV-Agent/201' to 'A'
    -- Executing [s@macro-queuedial-answer:6] Set("Zap/1-1", "GLOBAL(QDV-Agent/201ans)=1278687007") in new stack
  == Setting global variable 'QDV-Agent/201ans' to '1278687007'
    -- Executing [s@macro-queuedial-answer:7] NoOp("Zap/1-1", ""Macro queuedial-answer terminating" ") in new stack
  == Parsing '/etc/asterisk/manager.conf': Found
  == Parsing '/etc/asterisk/manager_additional.conf': Found
  == Parsing '/etc/asterisk/manager_custom.conf': Found
  == Manager 'admin' logged on from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
  == Manager 'admin' logged off from 127.0.0.1
  == Spawn extension (macro-dial, s, 7) exited non-zero on 'Local/201@from-internal-3f8f,2' in macro 'dial'
  == Spawn extension (macro-dial, s, 7) exited non-zero on 'Local/201@from-internal-3f8f,2' in macro 'exten-vm'
  == Spawn extension (macro-dial, s, 7) exited non-zero on 'Local/201@from-internal-3f8f,2'
    -- Executing [h@macro-dial:1] Macro("Local/201@from-internal-3f8f,2", "hangupcall") in new stack
    -- Executing [s@macro-hangupcall:1] ResetCDR("Local/201@from-internal-3f8f,2", "w") in new stack
    -- Executing [s@macro-hangupcall:2] NoCDR("Local/201@from-internal-3f8f,2", "") in new stack
    -- Executing [s@macro-hangupcall:3] GotoIf("Local/201@from-internal-3f8f,2", "1?skiprg") in new stack
    -- Goto (macro-hangupcall,s,6)
    -- Executing [s@macro-hangupcall:6] GotoIf("Local/201@from-internal-3f8f,2", "1?skipblkvm") in new stack
    -- Goto (macro-hangupcall,s,9)
    -- Executing [s@macro-hangupcall:9] GotoIf("Local/201@from-internal-3f8f,2", "1?theend") in new stack
    -- Goto (macro-hangupcall,s,11)
    -- Executing [s@macro-hangupcall:11] Hangup("Local/201@from-internal-3f8f,2", "") in new stack
  == Spawn extension (macro-hangupcall, s, 11) exited non-zero on 'Local/201@from-internal-3f8f,2' in macro 'hangupcall'
  == Spawn extension (macro-hangupcall, s, 11) exited non-zero on 'Local/201@from-internal-3f8f,2'
  == End MixMonitor Recording Local/201@from-internal-3f8f,2
    -- Hungup 'Zap/1-1'
  == Spawn extension (qm-queuedial, s, 8) exited non-zero on 'Local/201@from-internal-3f8f,1'
    -- Executing [h@qm-queuedial:1] NoOp("Local/201@from-internal-3f8f,1", " "Call exiting: status A answered at: 1278687007 DS: ANSWER"  ") in new stack
    -- Executing [h@qm-queuedial:2] Goto("Local/201@from-internal-3f8f,1", "case-A") in new stack
    -- Goto (qm-queuedial,h,7)
    -- Executing [h@qm-queuedial:7] Set("Local/201@from-internal-3f8f,1", "COMPLETE=COMPLETEAGENT") in new stack
    -- Executing [h@qm-queuedial:8] Set("Local/201@from-internal-3f8f,1", "WT=1") in new stack
    -- Executing [h@qm-queuedial:9] Set("Local/201@from-internal-3f8f,1", "CT=2") in new stack
    -- Executing [h@qm-queuedial:10] Macro("Local/201@from-internal-3f8f,1", "queuelog|1278687009|1278687005.372125|q-999|Agent/201|COMPLETEAGENT|1|2") in new stack
    -- Executing [s@macro-queuelog:1] QueueLog("Local/201@from-internal-3f8f,1", "q-999|1278687005.372125|Agent/201|COMPLETEAGENT|1|2|") in new stack
    -- Executing [h@qm-queuedial:11] Hangup("Local/201@from-internal-3f8f,1", "") in new stack
  == Spawn extension (qm-queuedial, h, 11) exited non-zero on 'Local/201@from-internal-3f8f,1'
  == End MixMonitor Recording Local/201@from-internal-3f8f,1



Thanks again Richie

QueueMetrics:
I would try adding the set CALLERID just before the dial at:


--- Quote ---Executing [s@qm-queuedial:8] Dial("Local/201@from-internal-3f8f,1", "Zap/g0/4493548|300|gM(queuedial-answer^1278687005.372125^QDV-Agent/201^q-999^Agent/201^1278687006)") in new stack

--- End quote ---

This way you are sure it is set correctly....

Zerabox:
Thanks again worked as you said the calls are now going out with caller ID.

QueueMetrics:
 8)

Navigation

[0] Message Index

Go to full version