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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM