簡體   English   中英

使用Asterisk檢測來電以及呼叫的來電

[英]Detect incoming call with Asterisk and who the call is going to

我目前正在編寫一個Windows服務,它使用Asterisk AMI來檢測呼叫何時進入,然后根據呼叫來自誰以及將要進入的人執行Web請求。 有沒有人知道Asterisk中的一個事件,我可以聽到包括這兩個細節? 我需要系統外呼叫的人的號碼,但是我可以用來識別被呼叫的內部電話號碼的任何東西都可以,只要它可以在星號之外使用。

我正在查看事件,他們都有外部調用者的號碼,但是他們都沒有鏈接到內部調用者而不是uniqueid,除非我在服務中構建這些字典,否則我將無法使用。

所以最后我設法通過僅使用AMI並監聽呼叫事件來做到這一點。 根據我們想要訪問的內容,我收聽了Newchannel事件,撥打事件和Hangup事件,盡管如果您只是呼叫的人數和他們呼叫的人數,我很確定您可以通過監控來逃避只是撥號事件。

每次收到Newchannel事件時,我都會創建一個Channel對象,並將其添加到當前位於Asterisk服務器上的Channel列表中。 然后,通過使用Subevent of Begin收聽Dial事件,我能夠提取呼叫中涉及的雙方的唯一信道ID,然后獲取所涉及的號碼。 收到Hangup事件后,我刪除了正在銷毀的頻道。 這似乎現在工作得很好,雖然我們沒有足夠的時間來測試它,所以希望它是正確的。

我有一個想法,但你可能不喜歡這個答案:)

我們試圖這樣做但失敗了所以我們做了一些邪惡的事:)

我們所做的是編寫agi腳本,然后使用Manager界面調用它們,然后刮取命令行。

像核心節目頻道簡潔等等的東西,它的ikky,但它的工作..我們使用正則表達式來解析字符串輸出,然后從那里抓取信息,做這樣的事情的唯一問題是你必須每次你修補時看命令行的輸出往往會將補丁更改為補丁。

如果你確實發現了一種使用c#api並且不使用agi的方法,我會非常感興趣但是我們無法使用api做我們想要的,而不是最終使用agi腳本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM