FreeSWITCH及VOIP,Openser,电话机器人等产品中文技术资讯、交流、沟通、培训、咨询、服务一体化网络。QQ群:293697898
最早使用链接:
https://mp.weixin.qq.com/s/WPDfYX2kzKlcI-VH4IcHsA
下载:
http://nway.com.cn/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()
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/'
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();
```