FreeSWITCH⼊门
教程
wiki :
You can provide FreeSWITCH with your own directory (dynamically generated by a webserver). This is done by using the mod_xml_curl module. For additional information, look here:
推荐:
安装
Ubuntu安装:
win10 安装Freeswitch
下载地址:
详细请看:
作者:graceup 来源:CSDN
原⽂:
多租户
conf/sip_l 和 conf/sip_l
默认配置中,下述参数是⽣效的,不管你的Domain怎么配置,都让他强制成了默认的Domain。因此注释掉,此时我们的客户端注册不上了。
<!--all inbound reg will look in this domain for the users -->
<param name="force-register-domain" value="$${domain}"/>
<!--force the domain in subscriptions to this value -->
<param name="force-subscription-domain" value="$${domain}"/>
<!--all inbound reg will stored in the db using this domain -->
<param name="force-register-db-domain" value="$${domain}"/>
freeswitch使⽤mysql数据库
环境:win10
1、window odbc下载地址:
2、mysql建⽴⼀个表名freeswitch
3、windows进控制⾯板->管理⼯具->数据源ODBC
4、创建⽤户DSN 连接mysql freeswitch库
5、修改conf\autoload_f.xml下的
ubuntu使用入门教程<param name=”core-db-dsn” value=”freeswitch(数据库名):root(数据库⽤户):’(数据库密码)’ /> 6、重启下FS,⾃动在数据内⽣成表
JSsip⼊门
作者:爱清清来源:CSDN
原⽂:
// Create our JsSIP instance and run it
/**
* 创建websocket连接,连接地址最好是wss,本地测试可以使⽤ws,
* 如果信令服务使⽤FreeSWITCH,那么websocket连接地址如下:
* ws://FreeSWITCH所在服务器IP:5066 或
* wss://FreeSWITCH所在服务器IP:7443
*/
var socket = new JsSIP.WebSocketInterface('wss://host');
/**
* User Agent配置参数,sockets表⽰信令服务器的连接集合,即可以
* 注册多个信令服务器;uri即注册⽤户的SIP地址,password为连接密
* 码;常⽤的参数还有register(true/false)表⽰是否直接注册;
* no_answer_timeout⽆应答超时时间等。具体的可参考:
* www.jssip/documentation/3.0.x/api/ua_configuration_parameters/
*/
var configuration = {
sockets : [ socket ],
uri : 'sip:alice@example',
password : 'superpassword'
};
//使⽤上述配置创建User Agent
var ua = new JsSIP.UA(configuration);
/**
* 连接到信令服务器,如果是之前停⽌则恢复到停⽌之前的状态,如果是刷新操作‘’
* ⽽且configuration的register参数设置为true则直接注册到信令服务器
*/
ua.start();
// 注册监听事件监听各个连接状态
var eventHandlers = {
'progress': function(e) {
console.log('call is in progress');
},
'failed': function(e) {
console.log('call failed with cause: '+ e.data.cause);
},
'ended': function(e) {
console.log('call ended with cause: '+ e.data.cause);
},
'confirmed': function(e) {
console.log('call confirmed');
}
};
/**
* 拨打参数配置,eventHandlers是注册事件监听的回调;mediaConstraints
* 是多媒体配置,详细配置可以参考:/en-US/docs/Web/API/MediaDevices/getUserMedia;
* pcConfig可以配置ICE服务器地址,适⽤于需要穿透的⽹络环境
*/
var options = {
'eventHandlers' : eventHandlers,
'mediaConstraints' : { 'audio': true, 'video': true },
'pcConfig': {
'iceServers': [
{ 'urls': ['ample', 'ample'] },
{ 'urls': 'turn:example', 'username': 'foo', 'credential': ' 1234' }
]
}
};
// 拨打⾳视频电话给'sip:bob@example'
var session = ua.call('sip:bob@example', options);
常⽤命令:
#列出internal SIP Profile的状态
sofia status profile internal
#列出某个Profile上所有已注册⽤户
sofia status profile internal reg
#过滤某些符合条件
sofia status profile internal reg 1000
sofia status profile internal user 1000
#列出⽹关状态
sofia status gateway gw1
#以上命令都可以将status⽤xmlstatus来代替,以列出XML格式的状态,这样⽐较容易⽤于其他程序解析
#启动、停⽌、重启某个Profile的命令
sofia profile internal start #启动
sofia profile internal stop #停⽌
sofia profile internal restart #重启
#有时候修改了某个Profile的某个参数,不需要重启(重启是影响通话的),可以使⽤下列命令让FreeSWITCH重读sofia的配置#注意并不是所有的参数都能⽣效
sofia profile internal rescan
#添加了⼀个新的gateway以后,也可以使⽤rescan指令读取
sofia profile external rescan
#如果是修改了⼀个⽹关,则可以先删除该⽹关,再rescan
sofia profile external killgw gw1
sofia profile external rescan
#下列命令可以指定某个⽹关⽴即向外注册或注销
sofia profile external register gw1
sofia profile external unregister
#开启该Profile的SIP跟踪功能抓SIP包
sofia profile internal siptrace on
#有时候,希望将已经注册的⽤户清理掉,可以使⽤如下命令,注意此命令只是临时清理,客户端重新注册的话还是可以注册成功的
sofia profile internal flush_inbound_reg 1000@192.168.1.7
#也可以根据call-id来清理
sofia profile internal reg 1000 #通过此命令查到call-id的值
sofia profile flush_inbound_reg zsfsdfhdfgdfsdfsdfsdfsdf #清楚call-id=zsfsdfhdfgdfsdfsdfsdfsdf的⽤户
抓包及debug
1、抓包
#在是⽤sofia命令和siptrace⼦命令进⾏抓包时,⽤户经常搞不清该对那个Profile进⾏抓包,通过如下global参数使命令对所有
#Profile都有效
sofia global siptrace on #开启
sofia global siptrace off #关闭
sofia global capture on
sofia global capture off
2、debug
有时候可能是协议栈更底层的原因引起的问题,由于收到或者发送⾮法的消息会导致协议栈出错,这可能会使消息丢弃,当然也可能是协议层的bug,在这种情况即使开启了详细的FreeSWITCH⽇志以及SIP跟踪也查不到问题的原因,这个时候可以使⽤如下命令打开更低级别的调试器
#如下,将开启详细的sofia sip底层调试信息,在控制台上打印⽇志,其中⽇志级别为0~9
sofia loglevel all 9
#如果你对sofia⽐较熟悉,也可以开启相关模块的⽇志,如下仅开启nua的调试信息
sofia loglevel nua 9
#loglevel的其他参数可以在sofia的命令帮助中到
#在默认情况下sofia的⽇志是console级别的,它会直接打印到相关信息控制台,⽽不会写到⽇志⽂件中(log/freeswitch.log)
#如果需要将这些⽇志也写⼊⽇志⽂件中,可以为这些⽇志制定⼀个级别,如下分别将sofia的⽇志映射到debug和notice级别
sofia tracelevel debug
sofia tracelevel notice
sofia loglevel all 0 #最后可以使⽤此命令关闭调试
freeswitch ##启动,带⽇志输出
freeswitch -nc ##后台启动
/exit ##退出fs_cli
shutdown ##关闭freeswitch
./fs_cli ##启动⽇志窗⼝
sofia status profile internal reg ##显⽰注册⽤户
# freeswitch 查看当前注册⽤户命令
sofia status profile internal reg
sofia profile internal siptrace on # sip呼叫流程详细:
version ,显⽰版本
show codecs ,显⽰编解码器
sofia status profile internal ,查看
shutdown ,退出
help ,显⽰帮助
4、链接启动⽅式
默认的安装位置在/usr/local/freeswitch上,如果不做链接,我们要启动bin⽂件下的命令时,只能cd到此⽬录下或者以完整路径名来执⾏,我们为了⽅便,进⾏链接后可以在随意⽬录下执⾏,系统会⾃动去搜寻相关⽂件来执⾏命令,配置命令如下:
ln -sf /usr/local/freeswitch/bin/freeswitch /usr/bin/
ln -sf /usr/local/freeswitch/bin/fs_cli /usr/bin/
接下来就可以启动freeswitch了,常⽤命令有:
测试
sipML5+asterisk 14,基于websocket通话
sipml5 下载地址:
下载完成后建议直接解压到桌⾯上,到call.htm,直接把它拖到chrome浏览器中打开,这⾥建议使⽤⾕歌浏览器或者⽕狐,其他的就不要⽤了,打开后是如下界⾯ ,按照你刚刚在f中配置分机号,按照以下格式换成你⾃⼰的,
然后再点击Expert mode?
点击Login登录,应该会出现
此时asterik的控制台应该会有⽇志输出
在使⽤浏览器打开⼀个call.htm,然后再输⼊另外⼀个sip,conf分机号,登录
拨号,此时左上⾓会提⽰是否允许麦克风,点允许,出现in call说明通话已经建⽴
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论