1. 多段音频顺序播放的设置
在 FreeSWITCH 中涉及到放音的 APP 有不少,比较典型的是播放录音文件的 playback
和 play_and_detect_speech
。这两个 APP 播放录音的功能都依赖于 switch_ivr_play_say.c#switch_ivr_play_file() 函数,而该函数可以借助 file_string
实现多段音频播放,示例如下:
originate user/1000 &playback(file_string://ivr/8000/ivr-welcome1.wav!ivr/8000/welcome2.wav)
file_string://
前缀不能省略,这个代表的是 FreeSWITCH 中的一个文件管理模块,多个音频文件用 ! 拼起来即可。注意如果文件名中含有 ! 符号,也可以使用通道变量playback_delimiter
来修改文件间的分隔符号
2. uuid_bridge 时机问题
在 FreeSWITCH 外呼系统中,常驻坐席拨打用户时接通双方的 uuid_bridge
命令执行时机很关键。通常如果坐席不需要听用户的早媒体,那么在收到 CHANNEL_ANSWER
事件时执行 uuid_bridge 最稳妥,几乎不会产生什么问题。 但是当坐席需要听早媒体的时候,就需要在 SIP 交互更早期 bridge 坐席和用户,比较合适的事件是 CHANNEL_PROGRESS_MEDIA
CHANNEL_PROGRESS_MEDIA
的产生时机是 FreeSWITCH 收到被叫 180/183 响应并且响应中带了 sdp 时,一般这时候已