上一篇学习了如何安装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

freeswitch笔记(2)-voip初体验的更多相关文章

  1. Kubernetes 笔记 02 demo 初体验

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 从前面的文章我 ...

  2. [开发笔记]-Jqplot图表初体验

    文章内容为初次使用Jqplot图表插件的测试代码,仅供参考. <html xmlns="http://www.w3.org/1999/xhtml"> <head& ...

  3. 云中沙箱学习笔记2-ECS之初体验

    1.1 背景知识 云服务器(Elastic Compute Service, 简称ECS),是一种简单高效,处理能力可以弹性伸缩的计算服务.ECS的相关术语说明如下: --实例(Instance):是 ...

  4. VSTO学习笔记(十五)Office 2013 初体验

    原文:VSTO学习笔记(十五)Office 2013 初体验 Office 2013 近期发布了首个面向消费者的预览版本,我也于第一时间进行了更新试用.从此开始VSTO系列全面转向Office 201 ...

  5. Spring Boot 学习笔记1——初体验之3分钟启动你的Web应用[z]

    前言 早在去年就简单的使用了一下Spring Boot,当时就被其便捷的功能所震惊.但是那是也没有深入的研究,随着其在业界被应用的越来越广泛,因此决定好好地深入学习一下,将自己的学习心得在此记录,本文 ...

  6. 数据结构(逻辑结构,物理结构,特点) C#多线程编程的同步也线程安全 C#多线程编程笔记 String 与 StringBuilder (StringBuffer) 数据结构与算法-初体验(极客专栏)

    数据结构(逻辑结构,物理结构,特点) 一.数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关.逻辑结构包括: 集合 数 ...

  7. django初体验 学习笔记

    django环境搭建     1.安装Python     2.ipython         sudo apt-get install ipython         sudo pip instal ...

  8. python--爬虫入门(七)urllib库初体验以及中文编码问题的探讨

    python系列均基于python3.4环境 ---------@_@? --------------------------------------------------------------- ...

  9. grunt 构建工具(build tool)初体验

    操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/  直接点击install ,会根据你的操 ...

  10. protobuf(Protocol Buffers)java初体验

    因为项目须要所以简单的研究了下protobuf.我也是參照网上的博客,所以大部分内容我也就不反复造轮子了.首先protobuf介绍点击这里,使用介绍点击这里,使用demo看这里. 我个人的第一个样例也 ...

随机推荐

  1. 【漏洞扫描】Nuclei v3.4.1 下载方法(附快速下载链接)

    简介 Nuclei v3.4.1是一款强大的漏洞扫描器,并且拥有社区维护的海量漏洞POC,工具质量十分的高.Nuclei 用于基于模板跨目标发送请求,从而实现零误报并提供对大量主机的快速扫描.Nucl ...

  2. 【经验】微信小程序开发 云后台比价(自带云开发、leancloud、bmob)(2022/10/31更新)

    目录 前言 1. 免费配额 2. 超过额度时收费情况 3. 另外的价钱 总结 前言 作为前端开发者,没有购买云服务器的习惯,在只需要使用数据库的情况下,开发微信小程序完全可以用现在免费的云后台. 常用 ...

  3. 【记录】BASE64|解决JS和C++中文传输乱码,内含两种语言的Base64编码解码的代码

    JS 解决方法来源于知乎新码笔记的文章 function b64Encode(str) { return btoa(unescape(encodeURIComponent(str))); } func ...

  4. SQL 日常练习 (二十)

    也只是尽快搬完这快一个月 sql 的砖, 准备要来整新学习模块了, 因此, 正好趁着五一, 加波速. 也会一直坚守和追求, 学无止境, 气有浩然. 每次都会说, 这是一种精神的传承,而我想的是, 不仅 ...

  5. 操作系统 -- linux初始化(上):GRUB与vmlinuz的结构

    本节树立启动的整体流程,重点解读Linux上GRUB是怎样启动,以及内核里的"实权人物"-- vmlinuz内核文件是如何产生和运转的. 全局流程 在机器加电后,BIOS会进行自检 ...

  6. C++11 auto和decltype关键字

    今天来看下C++中的auto和decltype两个关键字 auto关键字定义变量,编译器会自动判断变量的类型 举个栗子: auto i =100; // i 是 int auto p = new A( ...

  7. 做一次产品调研,这次我是一名PM

    AldeaS 想法超市:开启想法交流与项目协作新体验 在这个创意无限.节奏飞快的时代,你是否渴望一款能够精准捕捉想法,高效推进项目,并助力结识志同道合伙伴的得力工具?Aldeas 想法超市 App 应 ...

  8. vue中使用swiper 插件出错问题

    由于我自己在写一个demo时候用到了该插件,出现了一些问题,所以就简单查了一下该插件的用法以及一些常见的错误 1.出现Get .../maps/swiper.min.js.map 500(Intern ...

  9. React Native开发鸿蒙Next---react-native-cameraroll在ArkTS下的接入报错

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  10. Docker Compose部署随机图API

    Docker Compose部署随机图API 平时我们部署博客的时候,为了考虑美观会考虑使用随机图来作为文章的封面,现在有很多大佬愿意提供随机图API,通过API我们可以很方便地部署随机图,不必自己寻 ...