Asterisk 中dialplan实现去电黑名单

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

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

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

          t_id              t_back
           
            2                 8111
           ...                  .....

Dialplan 代码实现:
复制代码
  1. [globals]      
  2. ;................................................mysql  
  3. DBCurrentHost=localhost  
  4. DBuser=root  
  5. DBpass=888888  
  6. DBname=asterisk_test  
  7.   
  8. [macro-conmysql]  
  9. exten => s,1,Answer()  
  10. exten => s,n,NoOp(${MACRO_EXTEN})  
  11. exten => s,n,MySql(connect connid ${DBCurrentHost} ${DBuser} ${DBpass} ${DBname})  
  12. exten => s,n,MySql(query resultidr ${connid} select t_back from toback where t_back=${MACRO_EXTEN})  
  13. exten => s,n,MySql(Fetch foundrow ${resultidr} t_back)  
  14. exten => s,n,MySql(clear ${resultidr})  
  15. exten => s,n,MySql(disconnect ${connid})  
  16.   
  17. [jh]  
  18. exten => _x.,1,Macro(conmysql)  
  19. exten => _x.,n,Gotoif($["${t_back}"="${EXTEN}"]?hn:dial)  
  20. exten => _x.,n(dial),Dial(SIP/${EXTEN})  
  21. exten => _x.,n(hn),Hangup()

你可能感兴趣的:(voip,asterisk,黑名单,拨号规则)