空号及回铃检测模块
最早使用链接:
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(); ```