Asterisk
Asterisk AMI - 獲取詳細的擴展狀態
我正在使用來自 Python 的 AMI。我想同樣可以通過 Asterisk CLI 實現。我希望能夠獲得有關 PBX 中每個分機的詳細資訊。更具體地說,對於我想知道的每個擴展:
- 如果分機正在通話中,該呼叫的唯一 ID 是什麼,主叫方 ID 是什麼,呼叫的電話號碼是什麼(來電)
- 如果分機正在振鈴,則目前正在振鈴的是哪條呼入線路。
該系統目前有許多自定義上下文,它們將首先搜尋然後振鈴所有可用的分機,我想知道是誰在哪裡振鈴和說話。我瀏覽了幾乎所有能找到的 AMI 電話,但不知道從哪裡獲得這些資訊。
Digium在其 wiki 上為所有AMI 操作和AMI 事件提供了一些完整的文件。我說“有點”是因為它列出了所有可用的操作和事件,以及如何使用它們,但是當涉及到您應該期望看到的輸出時,其中一些有點稀疏。
您可能會覺得有用的操作:
- 命令- 允許您從 AMI 執行任意 CLI 命令,如果沒有專門的 AMI 操作來獲取 CLI 上的可用資訊,這很有用
- CoreShowChannels - 相當於 CLI
core show channels
,顯示頻道名稱和相關的 caller-id 資訊- ExtensionState - 獲取擴展的目前狀態,如果您定義了擴展提示,可能最有用
- Getvar - 獲取通道變數的值
- 狀態- 顯示通道的目前狀態資訊,包括通道變數(然後您可以使用Getvar查詢)
您可能會發現有用的事件:
- ExtensionStatus - 當擴展的狀態改變時引發
- Newchannel - 創建新頻道時引發(例如新來電)
- Newstate - 當通道的狀態改變時引發(例如現有呼叫轉移並且現在正在響鈴)
在這些操作中,我認為Status將是最有用的,Newchannel和Newstate事件會告訴您頻道何時響鈴或得到應答。