您的位置:首页 > 其它

Asterisk 中dialplan实现去电黑名单

2011-05-27 17:47 621 查看
回想之前客户有这样的一个需求,要求添加一个去电黑名单,以防止业务人员频繁拨该号码,以带来不必要的麻烦。
现在突然想起来了怎么来去做了,先分析:
我们在数据库中建立一个表,以存储去电话黑名单的电话,然后在程序中去进行查询,根据去电拨打的按键号码进行查询,如果查询有该结果,则提示一段语音给业务人员,或直接挂机,如果没有查到结果,则执行正常电话呼出流程。

下面我以一个sip 分机为例,以模拟外线的号码

首先看下数据库中表的结构:(保存去电黑名单的表)

t_id t_back

2 8111
... .....

Dialplan 代码实现:

复制代码

[globals]

;................................................mysql

DBCurrentHost=localhost

DBuser=root

DBpass=888888

DBname=asterisk_test

[macro-conmysql]

exten => s,1,Answer()

exten => s,n,NoOp(${MACRO_EXTEN})

exten => s,n,MySql(connect connid ${DBCurrentHost} ${DBuser} ${DBpass} ${DBname})

exten => s,n,MySql(query resultidr ${connid} select t_back from toback where t_back=${MACRO_EXTEN})

exten => s,n,MySql(Fetch foundrow ${resultidr} t_back)

exten => s,n,MySql(clear ${resultidr})

exten => s,n,MySql(disconnect ${connid})

[jh]

exten => _x.,1,Macro(conmysql)

exten => _x.,n,Gotoif($["${t_back}"="${EXTEN}"]?hn:dial)

exten => _x.,n(dial),Dial(SIP/${EXTEN})

exten => _x.,n(hn),Hangup()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: