1. 空号及回铃检测模块:
  2. 宁卫通信
  3. 新闻动态
  4. 行业新闻
  5. 空号及回铃检测模块

空号及回铃检测模块

最早使用链接:


https://mp.weixin.qq.com/s/WPDfYX2kzKlcI-VH4IcHsA

下载:

/uploads/2025/02/051011153486.zip


版本说明: FreeSWITCH1.4.26 CentOS7.9 x86_64


使用说明:


api外呼

`originate {execute_on_media=start_da,origination_caller_id_name=nway,origination_caller_id_number=nway,effective_caller_id_name=nway,effective_caller_id_number=nway}sofia/gateway/nway/18621575908 &echo `





事件检测及通知以及python示例:
检测到彩铃 回铃 忙音 空号 关机等 会产生ESL事件  fs_cli /event CUSTOM da

例子
```
Event-Subclass: da

Event-Name: CUSTOM

da_ar: sample

da_similarity: 1.000000

da_type: 关机
```






分析结束后会设置以下通道变量。
```

da_ar   分析结果

da_type   匹配到的样本

da_similarity 相似度

例子

variable_da_ar: sample

variable_da_similarity: 1.000000

variable_da_type: 关机
```




如何获取分析结果

通过 ESL Event-Name: CHANNEL_DESTROY 事件 获取分析结果。

如果要实时获取分析结果,可以订阅 Event-Subclass: da Event-Name: CUSTOM。


da_ar 可能的值

```
wait

error

overflow

ringback  回铃音

busy         短忙音

congestion      长忙音

music                彩铃

sample             匹配到样本,样本类型在da_type 变量中

restart

silence              静音

timeout            分析超时

stop
```



da.conf.xml 说明

license-filepath 授权文件,默认每天可用2小时,需要更长的测试时间请联系我获取。

silence_time     最大静音时间,如果检测到静音时间超过这个值,就会停止检测。

analysis_time    最大分析时间,如果声音持续时间超过这个值,就停止检测。

similarity_threshold 匹配样本的相似度阀值,如果匹配的样本相似度超过这个值,就停止检测。

hangup_type   hangup_type检查到什么状态挂断。可以设置以下值。可以设置多个值。

         all检查到任何结果都挂断

         silence静音超时挂断

         busy忙音挂断

         sample匹配到任意样本都挂断

         关机,空号,通话中... 匹配到指定类型的样本挂断





record_type   什么时候保存录音文件。用于获取声音样本和诊断分析结果。



do.conf.xml文件修改后 执行 reload -f mod_da 才会生效。



检测实例代码:


_author__ = 'lihao,18621575908'



版权所有:上海宁卫信息技术有限公司

功能说明:本程序只适用于落地与落地间消化话费,而不适用于其它骚扰类型的应用

授权模式:GPL

bug report:lihao@nway.com.cn

```

import time

import thread

import os,sys

import psycopg2

from ESL import *

import string

import datetime

import random

mylock = thread.allocate_lock()

#global var



fs_ip = '127.0.0.1'

fs_esl_port = '8021'

fs_esl_auth = 'ClueCon'

rings = []

global ring_count

ring_count = 0



max_call = 30

base_path ='/usr/local/src/nway_ac/nway_ac/'

gateway_url = 'sofia/gateway/tojp/'



#//global var



if __name__ == '__main__':



   #str='python- String function'

   #print '%s startwith t=%s' % (str,str.startswith('t'))

   #print '%s' % (str.replace('-','))



   con = ESLconnection(fs_ip, fs_esl_port, fs_esl_auth)

   if con.connected():



       e = con.events('plain','CHANNEL_HANGUP_COMPLETE CUSTOM:da')

       #CUSTOM:da为自定义的电话铃音检测模块消息

       while True:

           ee = con.recvEvent()

           #print ee

           event_name = ee.getHeader( 'Event-Name')

           event_subclass = ee.getHeader('Event-Subclass')

           if ee and event_name == 'CUSTOM' and event_subclass == 'da':

                #检测到了电话铃音分析结果

                da_type =ee.getHeader('da_type')

                #分析结果,由da_type来送出,即空号,忙等

                da_similarity =ee.getHeader('da_similarity')

                #da_similarity是和样本库中检测的实际样本的相似性百分比

                print da_type, da_similarity

           if ee and event_name == 'HANGUP_COMPLETE':

                my_number =  ee.getHeader('Caller-Caller-ID-Number')

                dest_number = ee.getHeader('Caller-Destination-Number')



                #在此处处理挂机事件

   con.disconnect();

```