freeswitch实现互通并发送dtmf

基础环境搭建

freeswitch创建

创建两个freeswitch的Docker 端口设置 25060和35060

实现互通

预期是拨打25060转发到35060

配置25060网关

在25060中进入目录 /freeswitch/etc/freeswitch/directory/default 新建 bridge.xml 内容如下


	
    	
    	
    	
	

配置25060对50000转发

进入25060中进入目录 /freeswitch/etc/freeswitch/dialplan 编辑 default.xml 并插入


	
		
	

配置35060的50000号码

进入35060中进入目录 /freeswitch/etc/freeswitch/dialplan 编辑 default.xml 并插入

	
		
			
			
		
	

之后再两边的fs_cli中执行reloadxml命令 并用sip软件连接25060拨打50000就可以拨打到35060上

从25060发送的dtmf信息到35060

25060使用命令发送dtmf

使用fs命令 uuid_send_dtmf uuid dtmfs 发送按键信息
需要先获取uuid 根据被叫号码50000 模糊查找channel信息
在通话中 在fs_cli执行 show channels like 50000 as xml 返回信息如下


  
    86ca6c90-b149-4e6c-8790-0f5b8bd2a81f
    outbound
    2020-10-29 17:09:33
    1603962573
    sofia/external/50000
    CS_EXCHANGE_MEDIA
    Extension 1004
    1010
    *.*.*.*
    50000
    
    
    XML
    default
    PCMU
    8000
    64000
    PCMU
    8000
    64000
    
    1905c6ebe853
    
    
    
    ACTIVE
    50000
    50000
    SEND
    78bc395c-0ce0-4b00-b4b6-977989f7801f
    Extension 1004
    1010
    Extension 1004
    1010
    *.*.*.*
    50000
    XML
    default
  

填充参数 fs_cli执行命令 uuid_send_dtmf 86ca6c90-b149-4e6c-8790-0f5b8bd2a81f 123 发送按键信息123

35060使用lua脚本监听按键信息

进入35060中进入目录 /freeswitch/share/freeswitch/scripts 新建 dtmf.lua

function onInputCBF(s, type, obj, arg)
if (type == "dtmf") then
freeswitch.consoleLog("INFO", "===================================================\n")
freeswitch.consoleLog("INFO", "===================================================\n")
freeswitch.consoleLog("INFO", "===================================================\n")
freeswitch.consoleLog("INFO", "===================================================\n")
freeswitch.consoleLog("INFO", "===================================================\n")
freeswitch.consoleLog("INFO", "===================================================\n")
freeswitch.consoleLog("INFO", "===================================================\n")
freeswitch.consoleLog("INFO", "Got DTMF: "..obj.digit.." Duration: "..obj.duration.."\n")
end
return ''
end
session:answer()
session:execute("start_dtmf", "")
session:setInputCallback('onInputCBF', '')
session:streamFile("local_stream://moh")

进入目录 /freeswitch/etc/freeswitch/dialplandefault.xml 中的50000路由中载入lua脚本

	
		
			
		
	

两边reloadxml后再25060发送 uuid_send_dtmf 86ca6c90-b149-4e6c-8790-0f5b8bd2a81f 123 的同时 会在35060得到如下日志
freeswitch实现互通并发送dtmf_第1张图片
注:执行的命令也可以写入lua脚本中 参考 如何向通话的另一方号码发送dtmf?

你可能感兴趣的:(freeswitch)