#如何接收 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)−lvad−o@
你的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事件,
说话的过程并未收到该事件。