您当前的位置是:  首页 > 资讯 > 国内 >
 首页 > 资讯 > 国内 >

教你一个建立企业通信黑名单的方法

2019-12-30 13:47:51   作者:徐振海   来源:FreeSWITCH中文社区   评论:0  点击:


  企业通信黑名单
  如果你经常接到骚扰电话,我们会不慌不忙的把它标记并拉入黑名单。
  但对于企业的座机来说却没有黑名单功能,如果你恰好使用了FreeSWITCH作为你们的语音平台,那么一切就变得简单了,我们使用lua就可以实现一个这样的功能,所有来话都去查询下是不是在黑名单中,最后决定是否去接听。
  其实FreeSWITCH自带了一个黑名单的功能,但在这里我还是选择自己写一个。
  首先大家需要知道hash这个api,例如,增加一个值,hash inster/realm/k/v这样就插入到内存中,k就是hello,v就是hello 删除一个值,hash delete/realm/hello
  freeswitch@2d57b40823a7> hash insert/realm/hello/world
  +OK
  freeswitch@2d57b40823a7> hash select/realm/hello
  world
  freeswitch@2d57b40823a7> hash delete/realm/hello
  +OK
  freeswitch@2d57b40823a7> hash select/realm/hello
  -ERR no reply
  有了以上的基础知识就可以开始了。
  cidnum = session:getVariable("caller_id_number")
  dstnum = session:getVariable("destination_number")
  session:execute("digit_action_set_realm", "myrealm")
  api = freeswitch.API()
  ret = api:execute("hash", "select/realm/blacklist")
  if cidnum == ret  then
  session:hangup()
  else
  session:execute("set","bridge_pre_execute_bleg_app=bind_digit_action")
  session:execute("set","bridge_pre_execute_bleg_data=myrealm,9,api:hash,"  "insert/realm/blacklist/"  cidnum)
  session:execute("bridge", "user/"  dstnum)
  end
  首先获取到来电号码,存到cidnum,接着获取被叫号码,如果获取到ret与主叫号码相同,就直接挂机,因为那是黑名单中到号码。
  当你接到骚扰电话默默的按下9,下次他就不能再来和你“开心”的聊天了。
  但是因人而异,不是每一个电话都被认为是骚扰电话,所以要做每个人定义的黑名单。当然也很简单,上面的脚本改一下两个位置就可以了。
  ret = api:execute("hash", "select/realm/"  dstnum)
  session:execute("set","bridge_pre_execute_bleg_data=myrealm,9,api:hash,"  "insert/realm/"  dstnum  "/"  cidnum)
  针对每一个dstnum,人手一个黑名单。A的黑名单并不会影响到B。
  当然这样也是有风险的,比如你不小心把内部号码加入了黑名单,你还得删掉他,要不领导接不通你的号码。
  当然也可以连接数据库,把黑名单号码写入数据库,这样就可以在FreeSWITCH重启后依旧可以使用。
  具体操作可以参考《FreeSWITCH权威指南》417页连接数据库。
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题

CTI论坛会员企业