zoukankan      html  css  js  c++  java
  • 用dtmf实现asterisk自动拨打分机

    背景

    系统结构图

    现存电话系统中用1026和1027分机,在1026和1027下面各有一个asterisk实现的电话系统。 A : 1027系统下的1011分机 B : 1026系统下的1012分机 现在通过A呼叫B,由于1026系统中实现了语言菜单,首先可以通过91026呼入1026系统(外线加拨9),然后根据提示音输入1012进行呼叫。 现存交换机不支持号码直接拨打(暂时没找到解决方案),即: 从A直接拨打910261012,不能完成对B的呼叫。

    原理

    双音多频 DTMF(Dual Tone Multi Frequency) 双音多频信号(DTMF),电话系统中电话机与交换机之间的一种用户信令,通常用于发送被叫号码。 双音多频信号是贝尔实验室发明的,其目的是为了自动完成长途呼叫。 有效字符集为: "0123456789*#abcdABCD" 字符w可以进行等待,一个w代表0.5秒的等待时间,如果需要更长时间则需要多个w的组合来实现,比如: 123456wwww789

    配置extensions.conf实现

    [macro-dtmf]
    exten => s,1,Wait(8)
    exten => s,n,SendDTMF(${ARG1})
    
    [DLPN_testOut2]
    exten => _9XXXXXXXX,1,Dial(DAHDI/g1/${EXTEN:1},30,M(dtmf,${EXTEN:5}))
    
    [DLPN_DialPlan1]
    ;include = DLPN_testOut  ;define in extension.lua
    include = DLPN_testOut2
    

    配置extension.lua实现(lua实现)

    extensions = {
            DLPN_testOut = {
                    ["_9XXXXXXXX"] = function(context,extension)
                            --app.dial("DAHDI/g1/" .."1026", "10","M(dtmf)tr")
                            num1 = string.sub(extension,2,5)
                            num2 = string.sub(extension,6)
                            app.dial("DAHDI/g1/" ..num1, "30","D(wwwwwwwwwwwwwww"..num2..")")
                    end;
            };
    }

    本文github地址:

    https://github.com/mike-zhang/mikeBlogEssays/blob/master/2012/20121218_用dtmf实现asterisk自动拨打分机.md

    欢迎补充

  • E-Mail : Mike_Zhang@live.com
  • 转载请注明出处,谢谢!
查看全文
  • 相关阅读:
    能ping通Linux但是ssh连不上问题解决方法
    php遍历目录与文件夹的多种方法详解
    Apache与Nginx的优缺点比较
    Apache查看连接数和限制当前的连接数
    【MySql】性能优化之分析命令
    PHP实现各种经典算法
    301、404、200、304等HTTP状态
    常用服务器资源地址集合
    关于WAMP的apache 人多了就访问非常卡的问题解决方法
    HTML基础
  • 原文地址:https://www.cnblogs.com/MikeZhang/p/dtmfAutoDial_20130107.html
  • Copyright © 2011-2022 走看看