Was this page helpful?

DP: DISA 穩定版

    DISA - Direct Inward System Access

    前言

    什麼是DISA?
    要用中文來翻譯這個功能實在也找不到一個較合宜的名詞,姑且就以它的主要用途(外線撥外線)來命名好了。

    它的其中一項用途最常見的,就是仿間電話公司的電話卡服務,一般用戶用市話或手機先撥入電話公司的系統,輸入通關密碼後,就可以撥到國外的電話。這類的撥號流程也就是所謂的二次撥號。所以就此例而言,DISA 可以扮演 PSTN 與國外接駁兩不同系統的橋接角色,也基於此原理,如果要使不同的網路電話系統可以互相接駁,例如 IPBB 的070 轉至 Gizmo 的1747,就可以利用 DISA 這功能,當然,由於 Asterisk 平台的高度彈性設計,不僅是一對一的系統接駁,即使要一對多也輕而易舉。

    DISA 與 IVR 應用不同
    乍看之下DISA 與 IVR(自動總機)兩者應用似乎有雷同之處,但它們在實際應用方面還是有很大的區別:

    IVR)
    - 適用外線撥內線
    - 可設計多層次語音操作選單

    DISA)
    - 適用外線撥外線(雖然也可以包含外線撥內線,但這並沒有 IVR 來的實用,所以實質意義不大)
    - 有通關密碼設計
    - 透過二次撥號行為可以達到不同供應商或異質電話系統間的接駁

    緣由

    會有此篇設計的原因是因為在使用 Asterisk 過程中,對於內建的 DISA 功能始終無法能有效讓系統辨識從手機或一般市話所撥出的數字,雖然知道主要原因可能是在 DTMF 的辨識問題,也曾經朝著換不同的終端話機設備來嘗試找出原因,但最後還是沒能找到有效的解決方案。

    不過,在使用 IVR 功能卻沒有數字辨識的問題,所以決定重新寫一個 Dialplan 來取代內建的 DISA 函數,在做完初步測試後,其功能與內建 DISA 幾乎一樣,並且使用上出乎意外的比內建的還好用。

    我的 DISA 與內建的差別

    內建 DISA 的缺點:
    - 從手機或市話撥入後,系統對於二次撥號的數字辨識率極低(可能操作十次會有一次成功,甚至更低),以致此功能近乎無法使用。
    - 當密碼輸入或撥目的地電話號碼時,Timeout 時間不好掌控,經常導致撥出號碼不全情況。
    - 撥目的地電話號碼時,會發出持續的 Tone 音(這個因人而異,或許有人習慣有Tone音)。

    我的 DISA 的優點:
    - 系統辨識從手機或市話的二次撥號的正確率較高。
    - 在輸入密碼或目的地電話號碼時,以輸入完畢按井字號的方式來作。
    - 不會出現持續的Tone音。

    Dialplan for DISA

    完整設計如下:

    [custom-myDISA-auth]
    ;Don't include this on the section [from-internal-custom].
    exten => s,1,Answer
    exten => s,2,Set(TIMEOUT(digit)=15)
    exten => s,3,Set(TIMEOUT(response)=20)
    exten => s,4,Authenticate(123456789)
    exten => s,5,Playback(vm-enter-num-to-call)
    exten => s,6,Read(OUTNUM)
    exten => s,7,Goto(from-internal,${OUTNUM},1)
    exten => s,n(end),Hangup
    

    ;TIMEOUT 時間可自行調整
    ;123456789 通關密碼自行調整
    ;from-internal 這是預設的context名稱,如要作更多的撥出限制可自行修改

    將以上放在 /etc/asterisk/extensions_custom.conf 設定檔內,不過,不要在 [from-internal-custom] 下包含它,而是新增 Unembedded freepbx -> Custom Destination

    Custom Destination    = custom-myDISA-auth,s,1
    Description                = myapp-DISA-auth
    Notes                        = Custom DISA

    在 IVR 或 Inbound Route 的選項,設定目的端為 Custom Application: myapp-DISA-auth

    完成!

    延伸設計
    • 使用Authenticate()函數,無法彈性設計提示語音,改以可自由設計提示語音的其他認證方式。
    • 在密碼輸入及目的地電話號碼撥號後,系統可語音提示所撥出的數字,並且系統可以再一次提示語音對所輸入號碼作確認。
    Was this page helpful?
    標籤 (Edit tags)
    • No tags
    查看第1個(總1個)評論: 查看所有
    alang, 你好,请问这个设置在ddwrt GUI环境下如何实现啊?问题很菜,见笑了
    按照这篇安装的
    http://www.osslab.org.tw/index.php?title=%E5%AF%A6%E9%A9%97%E5%B0%88%E6%A1%88/Asterisk/Addons/Asterisk_GUI
    發佈時間 16:40, 30 Mar 2010 ()
    查看第1個(總1個)評論: 查看所有
    您必須 登入 才能發佈評論。
    Powered by MindTouch Core