JsSIP 注册,拨打填坑
吐个槽:
http://tryit.jssip.net/ 这个毛东西,默认是要使用视频的,而且没得设置不使用,至少我没看到有设置的!!!(其实就是写死了,翻了他的js代码的-_-||)
设置连接到自己的FreeSWITCH服务器也很简单:
然后 登陆/注册那里要填"you name" 随便填就好了.
好了, 到这里, 我们已经可以注册上了,然后打电话吧,,,,
然后你有米有发现, contact 是一堆随机字符, O(∩_∩)O哈哈~
fs 的 esl 事件里看到 不知道是谁...
要命...
哦,对了, 这里呼出也是有问题的, 哈哈
要设置 Session expires
FreeSWITCH 默认设置要求 Session Expires 不低于120
JsSIP.C.SESSION_EXPIRES=120,JsSIP.C.MIN_SESSION_EXPIRES=120;
不然你打不出的, O(∩_∩)O哈哈~~~o(>_<)o ~~
对了, 继续上一个问题, contact的随机字符串的问题,
然后又去研究代码了, 原因嘛,我喜欢研究别人的js代码, 毛病, ,,,找不到文档说明呀o(╥﹏╥)o
然后又试 , 按照 内部js的搞, configuration 加参数:
contact_uri:new JsSIP.URI('sip',8004,'192.168.1.254',null,{transport:'ws'})
结果new JsSIP.UA(configuration)直接报错,contact_uri不能赋值为对象,只能是string, 准备去看看改掉?? 这样子不行啊
于是又拿不同方式注册的 siptrace 对比, 看到
Contact: <sip:8004@pud927611qgg.invalid;transport=ws>;+sip.ice;reg-id=1;+sip.instance.....
这里有transport=ws (transport=wss 也是行的啦)
可是内部是会把contact_uri变成对象的, 怎么搞,
算了 试试咯
contact_uri: 'sip:'+u+'@'+fsip+';transport=ws'
嗯, 结果是成功的,呼叫的esl事件里的 也有了分机号可以识别了
如此, 填了两个坑,以上!
然后还有个问题, 不管呼入还是呼出,调整了 fs的 codec 编码的 , 也还是报编码问题, 不能通话, 一接就挂
然后还有 ACL 的问题, 明天再折腾
,附图:
报错:
编码问题貌似是要手工设置转码...
<X-PRE-PROCESS cmd="set" data="media_mix_inbound_outbound_codecs=true"/>
参考1:http://freeswitch.net.cn/164.html
参考2:https://freeswitch.org/confluence/display/FREESWITCH/Codec+Negotiation
-------------更新线----------------------------------------------------------------------------------
其实不需要这些这么折腾, acl.conf.xml 中加:
<list name="wan.auto" default="allow">
<node type="allow" cidr="you-ip/24"/>
</list>
就应该能解决 ACL 问题,,,,应该差不多吧, 我就试了下,好像有些作用的...
而且我是使用的另一种办法(没用这个配置了): 改源代码,,,,O(∩_∩)O哈哈~
代码如下: (switch_core_media.c)
1 if (!engine->cand_acl_count) { 2 engine->cand_acl[engine->cand_acl_count++] = "localnet.auto";// "wan.auto";//lzpong 2018/11/15 3 switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(smh->session), SWITCH_LOG_WARNING, "NO candidate ACL defined, Defaulting to localnet.auto not wan.auto -- lzpong 2018/11/15\n"); 4 }
至于解码,嗯...... 其实不需要折腾啦, 一点都不需要!!!
我用的是1.6.20, 都支持啦,浏览器也都支持啦!
省事!
其实没声音,也可能是没有给输出设备哟(比如: <audio/>),,就这个我折腾不少时间, 才想到, 然后有折腾(因为官网没例子说明....坑爹不,,,个官网,都多长时间了,文档都缺缺的...)
audioPlayer.srcObject=session.connection.getRemoteStreams()[0];
也可以使用 mod_verto : https://blog.csdn.net/jiaojian8063868/article/details/79020024
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!