2017-08-25 45 views
0

我試圖讓我的星號運行一個腳本,每當某個電話(SIP電話)應答或撥打電話以及何時結束該呼叫。其目的是在與同一個房間內的電話打電話時自動將電視靜音。星號運行腳本電話答案和撥打電話

我試過使用系統命令,但沒有得到有關答覆手機的信息。由於我有多個電話鈴響,我無法區分它是否確實是電視旁邊的電話或完全不同的電話。同樣的問題,我有撥出電話。

有沒有不同的方法呢?我也試過使用AMI,但我還沒有找到一種方法來獲得特定對等的狀態(離線,在線,呼叫中,滯後)。

回答

0

比方說你有分機SIP/111

支持擴展

[from-internal-very-special] 
exten => 111,1,UserEvent(TVRingStarted) 
same => n,Set(CHANNEL(hangup_handler_push)=from-internal-very-special,ends,1) 
same => n,Dial(SIP/111,,U(from-internal-very-special,answer,1)) 

exten =>answer,1,UserEvent(TVRingAnswer) 
same => n,Set(GOSUB_RESULT=);we accept call 
same => n,Return;continue 

exten => ends,1,Noop(end of call) 
same => n,UserEvent(TVRingEnds) 
same => n,Return; 

該呼叫分機作爲本地/ 111後@ N從內部-極特殊的/不是SIP/111

您將擁有可以通過AMI解析的用戶事件。或者,您可以根據您的意願通過系統調用來替換它。

+0

我會在一分鐘內給你一個嘗試,謝謝!而對於傳出的電話,我必須把它放在一個特殊的環境中,或者我該如何處理?由於我的默認上下文包含許多擴展,如果我可以包含它並在前後運行腳本,這將是最簡單的,這有可能嗎? – Flole

+0

您可以在回答(U)中輸入撥號選項gosub,您可以在其中查看channle名稱。但我擔心這將會變得更復雜的員工。 – arheops

+0

是的,這將會更復雜,因爲我必須將它添加到絕對每個撥號命令,這是幾百。感謝您的幫助,我對您的解決方案做了一些小改動,現在它絕對有效! – Flole