FreeSwtich的監聽功能
FreeSwitch 提供了一個APP實現通道的監聽功能,它的名字是:eavesdrop。 如果要持續監聽某個使用者,那麼要用mod_spy裡實現。
用法
Usage
eavesdrop [<uuid>|all]
相關通道變數
<action application="set" data="eavesdrop_require_group=<groupID>"/>
<action application="set" data="eavesdrop_indicate_failed=/sounds/failed.wav"/> <!-- used in 'eavesdrop all' case -->
<action application="set" data="eavesdrop_indicate_new=/sounds/new_chan_announce.wav"/> <!-- used in 'eavesdrop all' case -->
<action application="set" data="eavesdrop_indicate_idle=/sounds/idle.wav"/> <!-- used in 'eavesdrop all' case -->
<action application="set" data="eavesdrop_enable_dtmf=true"/> <!-- false means no commands during eavesdrop -->
<action application="set" data="eavesdrop_bridge_aleg=true"/> <!-- enables listen to aleg -->
<action application="set" data="eavesdrop_bridge_bleg=true"/> <!-- enables listen to bleg -->
<action application="set" data="eavesdrop_whisper_aleg=true"/> <!-- enables whisper mode in aleg -->
<action application="set" data="eavesdrop_whisper_bleg=true"/> <!-- enables whisper mode in bleg -->
監聽過程中的DTMF信令
在監聽過程中,可以用DTMF信令控制監聽行為:
- 2 :與UUID私語
- 1:與UUID的對端麼語
- 3:進入三方通話
- 0:監聽模式,不能與通道私語
- * :監聽下一通道
如果指定 "eavesdrop_require_group" ,那麼監聽功能僅作用於特定的群組,群組以通道變數 "eavesdrop_group"的值作為標識,同一組成員的變數值相同。
如果data引數不指定為all,那麼輸入星號 '*'則監聽終止。
如果沒有指定eavesdrop_bridge_aleg或eavesdrop_bridge_bleg,那麼監聽功能失效。
模擬
ESL終端可以用uuid_recv_dtmf傳送DTMF。
預設DTMF,同被叫方私聊的例項
<extension name="eavesdrop_speak_to_callee" continue="true">
<condition field="destination_number" expression="^88(.*)$|^\*0(.*)$">
<action application="answer"/>
<action application="set" data="eavesdrop_enable_dtmf=true"/>
<action application="queue_dtmf" data="w1@500"/>
<action application="eavesdrop" data="${db(select/spymap/$1$2)}"/>
</condition>
</extension>
預設DTMF,同主叫方私聊的例項DTMF Speak to caller Example
<extension name="eavesdrop_speak_to_caller" continue="true">
<condition field="destination_number" expression="^88(.*)$|^\*0(.*)$">
<action application="answer"/>
<action application="set" data="eavesdrop_enable_dtmf=true"/>
<action application="queue_dtmf" data="w2@500"/>
<action application="eavesdrop" data="${db(select/spymap/$1$2)}"/>
</condition>
</extension>
撥號方案例項
以下的片段摘自安裝後自帶撥號方案的default.xml。用你的終端撥打88[extension number]試試。比如說,想監聽1001分機,撥打881001:
<extension name="global" continue="true">
<condition>
<action application="info"/>
<action application="db" data="insert/spymap/${caller_id_number}/${uuid}"/>
<action application="db" data="insert/last_dial/${caller_id_number}/${destination_number}"/>
<action application="db" data="insert/last_dial/global/${uuid}"/>
</condition>
</extension>
<extension name="eavesdrop">
<condition field="destination_number" expression="^88(.*)$|^\*0(.*)$">
<action application="answer"/>
<action application="eavesdrop" data="${db(select/spymap/$1$2)}"/>
</condition>
</extension>
event socket 發起監聽
下面這個例項,首先呼叫分機2001,然後監聽UUID c7709e9c-1517-11dc-842a-d3a3942d3d63的通道:
api originate sofia/default/2001@yourvsp.com &eavesdrop(c7709e9c-1517-11dc-842a-d3a3942d3d63)
如果要使用SRTP:
originate {sip_secure_media=true}user/1000 &eavesdrop(52d87034-4173-11de-99ef-f1acc19bfdf1)
下面這個例項,功能類似,只不過預設的DTMF選項2 (w2@500),這樣,監聽者可以直接與UUID的對方私語:
originate user/1001 'queue_dtmf:w2@500,eavesdrop:a28739d0-00f0-4a59-8c82-7a5a74ab6861' inline
監聽群組
可以定義一個 "group"來限定監聽的範圍,這樣可以有效地保護隱私。
比如說,你只想監聽銷售部的來電,那麼,可以在呼叫的源通道上,設定"eavesdrop_group"變數:
<action application="set" data="eavesdrop_group=sales_call_eavesdrop"/>
監聽指令中,指定"sales_call_eavesdrop"這個小組:
<extension name="eavesdrop">
<condition field="destination_number" expression="^779$">
<action application="answer"/>
<action application="set" data="eavesdrop_require_group=sales_call_eavesdrop"/>
<action application="eavesdrop" data="all"/>
</condition>
</extension>
你可以在eavesdrop APP之前設定通道變數eavesdrop_require_group=foo 。
相關文章
- 監聽 watch props物件屬性監聽 或深度監聽物件
- 阿里雲Freeswtich部署阿里
- java鍵盤監聽之視窗監聽的實現Java
- Vue3.0的遞迴監聽和非遞迴監聽Vue遞迴
- 直播商城原始碼,Android實現監聽Settings值變化的功能原始碼Android
- 成品直播原始碼,Android實現監聽Settings值變化的功能原始碼Android
- watch監聽
- javaWeb中的監聽器JavaWeb
- 7、listener監聽
- JavaScript 事件監聽JavaScript事件
- springboot事件監聽Spring Boot事件
- js 監聽事件JS事件
- 時間監聽
- Flutter事件監聽Flutter事件
- 監聽滑鼠事件事件
- jQuery事件監聽jQuery事件
- centos的監聽http小程式CentOSHTTP
- 監聽所有模型的 saved 事件模型事件
- 如何監聽URL的變化?
- 監聽鍵盤事件事件
- Flutter監聽路由返回Flutter路由
- 屬性和監聽
- 初識事件監聽事件
- JMS監聽Oracle AQOracle
- Android截圖監聽Android
- oracle靜態監聽Oracle
- vue之監聽事件Vue事件
- redis過期監聽Redis
- iOS ViewController Dealloc監聽iOSViewController
- JMeter—監聽器(十二)JMeter
- Springboot 監聽 S3 的 SQSSpring BootS3
- (譯文)swift中的監聽者Swift
- 在duplicate時,出現監聽BLOCKED的情況,導致監聽自動關閉BloC
- localeStorage 當前標籤頁變化監聽不到,只能監聽不同標籤頁變化,自己寫方法監聽
- windows10怎麼檢視監聽埠_windows10檢視監聽埠的方法Windows
- 監聽微信公眾號訊息,監聽微信訊息推送
- vue監聽input是否為空(監聽值為物件某個屬性)Vue物件
- 6、oracle網路(監聽)Oracle