Freeswitch如何接收 RECORD_STOP 和 RECORD_START事件

简介: Freeswitch如何接收 RECORD_STOP 和 RECORD_START事件

#如何接收 RECORD_STOP 和 RECORD_START事件


准备工作:


(1).  把邮件中的三个文件  switch_core_io.c 和 switch_core_media_bug.c 以及 switch_ivr_async.c

放入到src目录,然后编译,编译过程:

./rebootstrap.sh -j        

./configure -C --enable-portable-binary --enable-sctp --prefix=/usr --localstatedir=/var --sysconfdir=/etc --with-gnu-ld --with-openssl --enable-core-odbc-support --enable-zrtp --enable-core-pgsql-support --enable-static-v8 --disable-parallel-build-v8 --disable-selinux  

          src根目录:找到MakeFile: vi编辑          

           libfreeswitch_la_LINK = (LIBTOOL)(LIBTOOL) (LIBTOOL)(AM_V_lt) --tag=CXX \

            (AMLIBTOOLFLAGS)(AM_LIBTOOLFLAGS) (AMLIBTOOLFLAGS)(LIBTOOLFLAGS) --mode=link $(CXXLD) \

            (AMCXXFLAGS)(AM_CXXFLAGS) (AMCXXFLAGS)(CXXFLAGS) $(libfreeswitch_la_LDFLAGS) \

            (LDFLAGS)−lvad−o(LDFLAGS) -lvad -o (LDFLAGS)lvado@

           你的makefile 里面 参照修改

           加上 -lvad

make -j install

编译过程无任何错误,只有部分警告信息,成功编译并安装成功之后,就在/usr/bin/目录已经生成 freeswitch 可执行文件。\

          编译问题请参考: /affairs/Article.asp?id=2356


(3).  vars.xml增加以下配置:


 



(4).启动Freeswitch:

/usr/bin/freeswitch -nonat -nosql


测试方式:通过telnet方式模拟,检测是否在通话过程中收到vad生成的Record_Stop事件;


(1).

telnet 192.168.2.28 8021

auth ClueCon 两个回车;

(2).

然后输入:(接收应答和挂机,已经录音开始停止事件)

event plain CHANNEL_ANSWER CHANNEL_HANGUP RECORD_START RECORD_STOP DTMF

 

(3).

bgapi originate {absolute_codec_string=pcma,origination_uuid=123456,rtp_enable_vad_in=true,rtp_enable_vad_out=true}sofia/gateway/MRWG/15005600327  &bridge({absolute_codec_string=pcma,origination_uuid=654321}user/1001)

 

(4).

api uuid_record 123456  start /home/asr/123456_1.wav 30

api uuid_record 123456  start /home/asr/123456_2.wav 30

api uuid_record 123456  start /home/asr/123456_3.wav 30


注意一定要设置录音时间:否则就不生效!!


每次收到record_stop事件之后,立即送到asr去识别,然后收到 record_start事件之后,

再次手动开始录音,注意文件名称要不同.


测试结果:


此时,手机用户(外线)开始说话,然后停顿2秒钟,检测是否收到 Record_Stop事件,发现并未收到该事件。有关系统问题欢迎和博主进行交流。


多次测试,仍然无法收到 Record_Stop事件;  仅仅在通话开始和通话结束的时候收到 Record_Start 和 Record_Stop事件,


说话的过程并未收到该事件。

相关文章
|
1月前
|
Java
【Azure 事件中心】向Event Hub发送数据异常 : partitionId[null]: Sending messages timed out
【Azure 事件中心】向Event Hub发送数据异常 : partitionId[null]: Sending messages timed out
|
数据库
FastAPI(55)- Events: startup - shutdown 启动/关闭事件
FastAPI(55)- Events: startup - shutdown 启动/关闭事件
364 0
FastAPI(55)- Events: startup - shutdown 启动/关闭事件
|
1月前
|
消息中间件 存储 Kafka
【Azure 事件中心】适用Mirror Maker生产数据发送到Azure Event Hub出现发送一段时间后Timeout Exception: Expiring 18 record(s) for xxxxxxx: 79823 ms has passed since last append
【Azure 事件中心】适用Mirror Maker生产数据发送到Azure Event Hub出现发送一段时间后Timeout Exception: Expiring 18 record(s) for xxxxxxx: 79823 ms has passed since last append
|
1月前
|
网络安全
androidstudio无法启动,Failed to create a child event loop
androidstudio无法启动,Failed to create a child event loop
74 0
脚本文件stop和status与start类似,这里不再描述。
脚本文件stop和status与start类似,这里不再描述。
49 0
|
Ubuntu JavaScript
ubuntu 文件监视数量 Error: ENOSPC: System limit for number of file watchers reached, watch‘所在文件路径‘
vue 运行执行 npm run dev | * Error: ENOSPC: System limit for number of file watchers reached, watch’所在文件路径’ 最简单的命令 沾走就能用
199 0
ubuntu 文件监视数量 Error: ENOSPC: System limit for number of file watchers reached, watch‘所在文件路径‘
|
消息中间件 监控 Kafka
【kafka源码】/log_dir_event_notification的LogDir脱机事件通知
【kafka源码】/log_dir_event_notification的LogDir脱机事件通知
【kafka源码】/log_dir_event_notification的LogDir脱机事件通知
How to check if one event is cancel event - #Exit#
How to check if one event is cancel event - #Exit#
100 0
How to check if one event is cancel event - #Exit#
|
Web App开发 前端开发
周期性取count请求是如何在前台setup的 - Tile count
Created by Jerry Wang, last modified on Oct 25, 2014
139 0
周期性取count请求是如何在前台setup的 - Tile count
|
SQL 关系型数据库 MySQL
级联slave的延迟计算和query event exe time获取方法
一、级联时间计算方式 比如A->B->C那么C的延迟是计算B还是A的。因为Event的中timestamp没变,但是C计算时间差值却是以B为准。如果时钟同步的情况下,其实基本可以考虑为A的。计算方法可以参考我的《深入理解MySQL主从原理》专栏 逻辑如下: 级联中的Event依然是主库的时间,因此其延迟还是相对主库而言。
740 0