使用星号的传出呼叫的自定义cdr字段

时间:2014-05-29 23:56:27

标签: mysql asterisk

我正在尝试使用自定义字段来使用cdr日志记录(到mysql)。我面临的问题是,只有在拨打出站呼叫时,在入站呼叫期间我才能记录自定义字段。

我遇到问题的原因是因为我需要的自定义cdr字段是系统上每个用户的唯一值。

sip.conf

 ...
 ...

 [sales_department](!)
 type=friend
 host=dynamic
 context=SalesAgents
 disallow=all
 allow=ulaw
 allow=alaw
 qualify=yes
 qualifyfreq=30


 ;; company sales agents:
 [11](sales_agent)
 secret=xxxxxx
 callerid="<...>"

 [12](sales_agent)
 secret=xxxxxx
 callerid="<...>"

 [13](sales_agent)
 secret=xxxxxx
 callerid="<...>"

 [14](sales_agent)
 secret=xxxxxx
 callerid="<...>"

的extensions.conf

 [SalesAgents]
 include => Services

 ; Outbound calls
 exten=>_1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@myprovider)


 ; Inbound calls
 exten=>100,1,NoOp()
    same => n,Set(CDR(agent_id)=11)
    same => n,CELGenUserEvent(Custom Event)
    same => n,Dial(${11_1},25)
    same => n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)
    same => n(unavail),VoiceMail(11@asterisk)
    same => n,Hangup()
    same => n(busy),VoiceMail(11@asterisk)
    same => n,Hangup()

 exten=>101,1,NoOp()
    same => n,Set(CDR(agent_id)=12)
    same => n,CELGenUserEvent(Custom Event)
    same => n,Dial(${12_1},25)
    same => n,GotoIf($["${DIALSTATUS}" = "BUSY"]?busy:unavail)
    same => n(unavail),VoiceMail(12@asterisk)
    same => n,Hangup()
    same => n(busy),VoiceMail(12@asterisk)
    same => n,Hangup()

    ...
    ...

对于上例中拨号方案的入站部分,我可以插入自定义cdr字段(agent_id)。但是在上面你可以看到拨号方案的Oubound部分,我一直难以理解如何告诉拨号方案agent_id正在拨打电话。

我的问题:如何采取agent_id = [11]&amp; agent_id = [12]和agent_id = [13]以及agent_id = [14]等,并将其用作出站呼叫的cdr自定义字段?

1 个答案:

答案 0 :(得分:0)

您应该可以使用CALLERID function来完成此操作。尝试在拨号方案中对此进行编码作为测试:

exten=6599,1,Answer()
exten=6599,n,Verbose(Caller id name=${CALLERID(name)})
exten=6599,n,Verbose(Caller id num=${CALLERID(num)})
exten=6599,n,Verbose(Caller id all=${CALLERID(all)})
exten=6599,n,SayNumber(${CALLERID(num)})
exten=6599,n,Hangup()

当您拨打6599时,您应该会在控制台上看到您正在呼叫的号码,并听到您播放的号码。在这种情况下,你应该可以为你的日志记录做这样的事情:

same => n,Set(CDR(agent_id)=${CALLERID(num)})

<小时/> 的修改

要使用此方法,请不要使用sip.conf callerid=来设置或隐藏callerid。相反,在您阅读了callerid以供自己使用之后,在拨号方案中的代码。例如:

same => n, Set(CALLERID(all)=""<>)