zoukankan      html  css  js  c++  java
  • freeswitch笔记(2)-voip初体验

    上一篇学习了如何安装freeswitch,接下来我们利用2个voip软件来体验如何互打电话(注:仍然是mac环境,windows用户可参考mac上的做法,原理相通)

    一、安装yateclient及zoiper

    voip软件有很多种,这里选用yate及zoiper这二种免费而且跨平台的客户端。

    yate下载地址: https://yate.en.softonic.com/mac

    zoiper下载地址:https://zoiper.en.softonic.com/mac 

    这二款软件大致长这样:

     

    二、启动freeswitch

    cd /usr/local/freeswitch/bin

    ./freeswitch

    注:启用freeswitch前,要先保证zoiper及yateclient这类软件完全退出,否则可能会占用默认端口5060,最终导致voip client账号登录失败。

    启用成功后,可以用lsof -i:5060之类的工具,查看下端口是否正常。

    重要提示:freeswitch默认会启用ipv6,参见上图中的TYPE,有2条记录是Ipv6,另外二条是Ipv4,目前ipv6的支持还不完善,可能导致一些client连接不上freeswitch,建议关闭ipv6功能。

    方法如下:

    (如果本机的fw尚在运行中)先在freeswitch终端输入shutdown关闭fw。然后

    /usr/local/freeswitch/conf/sip_profiles 会看到二个文件:

    external-ipv6.xml

    internal-ipv6.xml

    将这2个文件改名为:

    external-ipv6.xml.deactive

    internal-ipv6.xml.deactive

    然后重新启动freeswitch,成功后仍然可以用lsof -i:5060之类的验证下:

    顺利的话,会发现IPV6的那二行不见了。

    三、client配置账号

    YateClient

    Settings->Accounts

    freeswitch默认内置了20个账号,用户名从1000,1001...依次递增,密码均为1234,参考上图,这里配置了2个账号1002,1004,顺利的话,status这里会显示成online.

    同时在freeswitch的console控制终端上,输入:

    sofia status profile internal reg (即:查看internal这个profile的用户注册情况)

    可以看到1002/1004这2个账号,已经注册成功。

    类似的在zoiper 中,再配置另外2个账号:1000、1010

     zoiper主界面上,可以切换这2个账号:

    freeswitch的console终端上,建议也确认下是否注册成功:

      

    四、拨打电话

    先来热热身,在freeswitch的console里输入 originate user/1000 &echo 

    即:呼叫zoiper上的1000用户,稍等一会儿,zoiper会弹出提醒来电,参考下图

    点击accept就接通了,注意:在命令最后部分,使用了&echo,这是一个回音测试功能,类似于你在山谷里大叫“你好”,然后山谷给你传来回音“你好”一样。所以最终的效果是接通后,如果你对着mac麦克风说话,扬声器里放你自己的声音(即:你说啥,fs回应啥。)-友情提醒:在本机测试时,由于回音环绕,可能会有严重的嚣叫声。

    也可以用yateclient来呼叫zoiper, 如下图:yateclient上选择用户1002,然后拨打1000,zoiper上会弹出来电提醒,接通后,就能相互通话了。

    点击查看原图

    除了echo,还有几个常用的功能,大家可以尝试把&echo,换成:

    &park  这个相当于接通后,fs把通话给hold住,啥反应都不给。有点类似对方拿起听筒,但是一句话也不说,也不挂断。park的用途后面的文章会介绍。

    &playback(/tmp/music.wav) 这个相当于接通后,给用户放一遍音乐,音乐文件的地址是/tmp/music.wav,当然这个路径也可以是远程路径,比如http://www.xxx.com/music.wav

    &endless_playback(/tmp/music.wav) 与&playback的区别是,playback只放一遍,而endless_playback会一直不停的反复放,特别适合400电话场景,客服很忙时,先放段音乐让用户等待。

    更多时候,对于开发人员来讲,更希望通过代码方式来与freeswitch交互,下一篇学习esl的使用

    参考:

    https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+echo

    https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+park

    https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools:+playback

    https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+endless_playback

  • 相关阅读:
    python 基于os模块的常用操作
    python 文件的读写
    Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践
    Docker(四):Docker 三剑客之 Docker Compose
    Docker(三):Dockerfile 命令详解
    Docker(二):Dockerfile 使用介绍
    Docker(一):Docker入门教程
    虚拟机vmware centos7 扩展磁盘空间
    那些年我们遇到的坑(1)-Description Resource Path Location Type Archive for required library
    RPM安装命令总结
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/zoiper-and-yateclient-turotial.html
Copyright © 2011-2022 走看看