2013-06-20 31 views
2

我總是會得到什麼似乎是Asterisk最頭疼的配置。當目的地是多個分機時,將通話記錄文件名設置爲星號

公司有一個直接連接到SIP中繼線的星號服務器,並且工作正常。在他們嘗試執行自動混音(* 3)命令後,被要求自動將呼叫錄音引入入站和出站呼叫。

他們的要求很簡單,只有MD和銷售經理可以訪問這些調用,一切都在內部,因此只需轉儲到/ var/spool/asterisk/monitor文件夾中,並且具有身份驗證的Web服務器允許他們查看文件夾 - 當他們快樂時,我們會清理這一點。

我已經有外撥電話做我們想要的(我們使用AEL),因此從任何分機撥出時觸發以下片段。

_9. => { 
    Monitor(wav,${STRFTIME(${EPOCH},,%Y%m%d-%H:%M:%S)}-OUT-${CALLERID(num)}-${EXTEN:${ABSORB}},m); 
    Dial(SIP/${EXTEN:${ABSORB}}@MAINTRUNK,90,X); 
    }; 

ABSORB是一個全局變量,它通常被設置爲1,因此9不會傳遞給Dial()應用程序。

的呼入電話是有點棘手的來電會通過這樣的:

Dial(SIP/2000&SIP/2001&SIP/2002&SIP/2003&SIP/2004&SIP/2005,35,Tt); 

所以現在我已經設置好它是這樣的:

Monitor(wav,${STRFTIME(${EPOCH},,%Y%m%d-%H:%M:%S)}-IN-${CALLERID(num)},m); 
Dial(SIP/2000&SIP/2001&SIP/2002&SIP/2003&SIP/2004&SIP/2005,35,Tt); 

其中至少得到具有日期/時間「IN」狀態和來電主叫ID的文件。

MD想要的是該文件被標記爲實際上應答該呼叫的分機。

有什麼辦法說把一個佔位符像「XXXX」的文件名,然後用MONITOR_EXEC得到一個殼和呼叫與上次連接的通道更換XXXX掛機後重命名文件?

我意識到它不會考慮轉移呼叫。

我看不到一種方法來確定呼叫的有效分機,因爲我必須在撥號命令之前啓用監聽。

有什麼建議?

回答

2

我克服這個問題的建議是使控制變量,MonitorIncoming的exaple,然後先設置前監視器被稱爲:

MonitorIncoming=${STRFTIME(${EPOCH},,%Y%m%d-%H:%M:%S)}-IN-${CALLERID(num)}; 

然後做休息

Monitor(wav,${MonitorIncoming},m); 
Dial(SIP/2000&SIP/2001&SIP/2002&SIP/2003&SIP/2004&SIP/2005,35,gTt); 

*與g標誌讓撥號繼續進行撥號計劃,然後只需執行類似操作(在呼叫離開所有撥號計劃之前):

if(${LEN(${MonitorIncoming})}>0) 
    System(mv /var/spool/asterisk/monitor/${MonitorIncoming} /var/spool/asterisk/monitor/${MonitorIncoming}-${${CDR(dstchannel)}:4:8}); 

*我還沒有測試過這個,也許你需要首先分配$ {CDR(dstchannel)}給變量,然後:4:8。:) 或者你可以寫一個簡單的shell腳本,並與系統()調用它,並將它傳遞${CDR(dstchannel)}
希望這有助於,
米爾科

+0

我*始終*忘了「G」選項!我將在週末在我自己的服務器上嘗試一下,然後再在客戶端上釋放它。 – JamesB

+0

讓我知道它是否有效:D – mirkobrankovic

+0

對不起,我還沒有時間來測試這個,還有一份工作迫在眉睫,我會很快做到這一點。 – JamesB

相關問題