• 顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-webrtc(浏览器直接拨打电话)


    顶顶通呼叫中心中间件(mod_cti基于FreeSWITCH)-webrtc(浏览器直接拨打电话)

    现代的浏览器都支持webrtc,浏览器通过webrtc就可以直接注册sip账户到FreeSWITCH实现拨打和接听电话了。就可以不用额外安装软电话或者硬件的电话机,方便CRM等系统集成电话呼叫功能。

    获取ssl证书

    • 阿里云购买(阿里云有提供1年的免费证书,可以用来测试)

    )
    下载到3个文件 域名_public.crt 域名.key 域名_chain.crt 这样的顺序放入wss.pem文件。
    格式要求
    -----BEGIN CERTIFICATE-----

    -----END CERTIFICATE-----
    -----BEGIN RSA PRIVATE KEY-----

    -----END RSA PRIVATE KEY-----
    -----BEGIN CERTIFICATE-----

    -----END CERTIFICATE-----

    如果购买的证书提供的不是这样的3个文件,只需要根据上面的格式放入,第一个段是CERTIFICATE(cert),第二个是RSA PRIVATE KEY(key),第三个是CERTIFICATE(chain)。解码证书的命令是 openssl x509 -in wss.pem -noout -text

    • 把wss.pem放到fs证书目录
      • 执行fs控制台命令global_getvar certs_dir 也可以ssh终端执行fs_cli -x "global_getvar certs_dir"查询到fs证书目录
      • 把wss.pem copy到证书目录
      • 也可以CCAdmin的SIP->internal->tls-cert-dir 修改这个路径

    FreeSWITCH配置webrtc

    • 设置webrtc使用的IP和端口

    配置webrtc监听的SIP和端口,CCAdmin->SIP->internal->wss-binding设置为:7443(冒号需要的),监听本机所有端口,也可以0.0.0.0:7443 监听ipv4所有IP的7443端口,也可以指定单独一个本机IP比如192.168.31.100:7443,也可以指定其他端口后面的测试例子是用端口7564。

    • 修改后要重启sofia模块才能生效

    执行fs控制台命令reload mod_sofia,也可以ssh终端执行 fs_cli -x "reload mod_sofia",或者CCAdmin运维调试界面SIP里面点一下restart。

    • 查看修改是否生效

      执行fs控制台命令sofia status profile internal,也可以ssh终端执行 fs_cli -x "sofia status profile internal",或者CCAdmin运维调试界面SIP->internal后面点一下info(…),看到类似WSS-BIND-URL sips:mod_sofia@10.0.16.17:7564;transport=wss这样的信息,就是端口绑定成功了。如果使用云服务器或者开启了防火墙,还需要把 wss端口放开一下(注意是TCP端口)。

    域名解析到FS的外网IP

    执行命令openssl s_client -connect sip.ddrj.com:7564 -showcertsopenssl s_client -connect sip.ddrj.com:7564 -state测试证书是否验证通过。

    浏览器打电话测试

    注意浏览器必须https打开的页面才可以使用webrtc。http页面会打开麦克风失败。

    sipml5

    sipml5官方网站 https://www.doubango.org/sipml5/ demo地址:https://www.doubango.org/sipml5/call.htm?svn=252

    第二个界面设置好了点保存,然后回到第一个界面,点Login,如果登录成功了,恭喜你,前面的配置都对,拨打电话测试就可以了。

    可以拨打echo,进行回音测试(路由里面启用放音测试),号码输入echo,点击Call->Audio,弹出是否允许使用耳麦,要勾选记住此决定。 如果听到自己说话的声音,就配置好了。

    jssip

    • 测试demo

    jssip官方网站https://jssip.net/ demo地址:https://tryit.jssip.net/ demo源代码在https://github.com/versatica/tryit-jssip

    ]

    保存设置,点下一步,进入呼叫界面,呼叫echo,过2-3秒,就会听到提示音了。为什么过2-3秒才可以听到声音,是因为默认使用了iceserver,可以自己下载demo代码tryit-jssip/lib/settingsManager.js把pcConfig.iceServers这个删除了去。session_timer如果设置为true,会注册不上,因为fs的Session-Expires要求大于120,jssip的Session-Expires默认是90,可以改成false,或者修改fs Session-Expires的最小时间,也可以发起呼叫设置sessionTimersExpires为120以上的值。。contact_uri这个如果不设置fs的通话记录的被叫就没办法显示正确的分机号。默认是启用视频通话的,可以发起呼叫的参数里面关闭视频呼叫。

    var options = {
        // 'eventHandlers'    : eventHandlers,
        'mediaConstraints': {'audio': true, 'video': false},
        'extraHeaders': [],
        'sessionTimersExpires': 180
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    • 代码下载

    jssip下载地址https://jssip.net/download/releases/,找到最新版本 下载 https://jssip.net/download/releases/jssip-3.9.1.min.js

    • 第三方例子,可以联系顶顶通获取。

    sipjs

    sipjs的官方网站是 https://sipjs.com/ demo代码地址 https://github.com/onsip/SIP.js/tree/master/demo 因为官方没提供可以直接访问的demo,本来就不写测试过程了。可以联系顶顶通获取第三方例子。

    faq

    1. 访问webrtc的页面必须是https的。
    2. iceserver 一定不要设置,设置了会导致呼出或者接听等几秒才有声音。
    3. 证书格式一定要对,如果证书不对会注册不上,可以通过浏览器直接访问 webrtc端口(https://域名:port)查看证书信息。
    4. 有的浏览器需要位置服务权限才可以获取到本机IP,需要允许位置服务和媒体的权限
    5. 有问题可以浏览器按F12看日志和F12网络看wss的SIP协议数据
  • 相关阅读:
    flutter tabbar设置indicator高度、宽度
    day16_购物车(添加购物车,购物车列表查询,删除购物车商品,更新选中商品状态,完成购物车商品的全选,清空购物车)
    nginx正向代理、反向代理、负载均衡(重中之重)
    P5906 【模板】回滚莫队&不删除莫队
    【Nginx笔记02】通过Nginx服务器转发客户端的WebSocket接口到后端服务
    【Leetcode】1320. Minimum Distance to Type a Word Using Two Fingers
    【Docker】实现JMeter分布式压测
    软件开发工具的技术要素
    通过UDP实现参数配置
    MySQL事务控制
  • 原文地址:https://blog.csdn.net/iyaosan/article/details/126660145