2013-06-23 63 views
1

當用戶打電話給我的PBX時,他需要輸入另一個電話號碼。然後星號應該撥打該號碼,當該號碼的擁有者接聽電話時,星號應該發出聲音。PBX呼叫撥打另一個電話和間諜

向我的pbx撥打電話的用戶可以聽到另一個電話的現場直播,他會聽到pbx播放的聲音和用戶的聲音。

這樣做的最好方法是什麼?

+1

我已經完成了它,和Originate()非常類似的事情。我現在無法在詳細解釋中解釋,也許在幾天內,但請閱讀[Originate](http://www.voip-info.org/wiki/view/Asterisk+cmd+Originate) – mirkobrankovic

+0

謝謝。我現在使用帶有選項G的撥號應用程序和呼叫中的間諜。它有效,但不是100%。我想看看你的方式。 –

回答

1

這裏是我的解決方案

* 我寫在AEL,更容易理解

首先,我假設你得到了被叫號碼和文件要發揮:

context Start 
{ 
    catch s { 
      Wait(1); 
      ... 
      __NumberToDial=<Number that caller picked>; 
      FileName=<File you want to play>; 
      ... 
      // I used SHARED variables to pass all the necessary data to sub channel 
      SHARED(FileName)=${FileName}; 
      __Channel="${CHANNEL(name)}"; 
      Dial(Local/${CALLERID(num)}@Originate/n,,g); 
    } 
} 

context Originate { 
     _X. => { 
      Originate(SIP/<YourDialOutTrunk>/${NumberToDial},exten,Play,${Channel},1); 
      if (${ORIGINATE_STATUS}!=SUCCESS) 
      { 
       //do stuff if not connected... 
      } 
      else 
        ChanSpy(,qsSg(${Channel})); 
     } 
} 

context Play { 
     _X. => { 
       Channel="${CUT(EXTEN,?,1)}"; 
       Set(SPYGROUP=${Channel}); 
       FileName=${SHARED(FileName,${Channel})}; 
       Playback(${FileName}); 
     } 
} 

* 如果您想允許耳語/說話,可以選擇Chantil的w
我沒有測試這個耳語!
您需要隨處添加catch => h和其他所需的邏輯。
惠特這你會得到良好的時機。唯一的問題是如果主叫方決定掛斷,我已經通過AGI腳本向AMI發送頻道消息,發送它的頻道名稱... bla bla ... :)來終止Originate頻道。:)

希望它有助於:)

2

最好的(也是最簡單的)方式 - 將用戶加入會議,並創建另外兩個呼叫到同一個會議。

一個播放聲音,一個呼叫給其他用戶。

對於如何創建調用看到這一點:

http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out

Chanspy將創建類似的結構發佈會,但它更簡單的控制(靜音/取消靜音)會議。

+0

我也嘗試過這個選項,但主要問題是計時,讓文件開始播放時,被叫方選擇電話 – mirkobrankovic

+0

爲撥號應答宏使用。所以你創建呼叫第二個用戶,設置宏,在宏開始新的呼叫播放消息。如果這太複雜 - 聘請專家(或只是程序員) – arheops

相關問題