FreeSWITCH 高手速成培训 2023 冬季班圆满结束

2023RTSCon 结束之后,紧接着我们迎来了 2023 冬季 FreeSWITCH 培训,培训仍然在北京,大家不辞辛苦,从四面八方赶来,共赴一场双向奔赴的盛会。伴着浓浓的京味儿,我们开始了为期三天的培训。

小樱桃是烟台的企业,这次培训,在我们烟台人的北京大本营烟台协同创新中心举办。现场设施不错,心也温暖。

工作人员早早地带着签到表来到烟台协同创新中心,让大家签到,确保小伙伴们一个不拉。

培训第一天是 12 月 24 日,杜老师为大家播放了 Jingle Bells 音乐,也感谢大家在周末且平安夜来到北京一起学习。

最辛苦的还是我们的杜老师,沙龙结束后又开始了培训,但是杜老师好像一点也不累。

第一天上午杜老师先讲了 FreeSWITCH 的精髓,杜老师说 FreeSWITCH 就是个电话服务器,它的精髓就是呼叫。课上,杜老师介绍了 VoIP 网络电话的基本原理,首先通话双方都要在 FreeSWITCH 服务器上注册账号,才能实现通话。需要注意的是注册时需要提供用户名、密码等信息。服务器会根据这些信息,在用户目录中查找并验证用户身份。在通话时,呼叫方发送一个 INVITE 消息给被叫方,包含通话双方的地址等信息。被叫方收到后,会回复一个 200 OK 消息,建立通话。

在通话中,音频数据通过 RTP 协议传输。RTP 运行在一个独立的端口上。通话结束时,任意一方可以发送 BYE 消息,挂断电话。简单休息以后,接着上课,杜老师通过一个示例,演示了使用 FreeSWITCH 客户端软件注册用户、打通电话的全过程,让学员们更直观地理解 VoIP 通信流程——首先定义用户账户,如用户名 1000,密码 1234;使用客户端软件注册此用户,若注册成功,服务器会回复 200 OK;用另一个客户端软件使用不同用户名,如 1001,向 1000 发起呼叫,1000 用户收到呼叫 INVITE,验证通过后,回复 200 OK,双方通过 RTP 端口开始音频通话,任意一方发 BYE 消息,可结束通话。

FreeSWITCH 是一个 Application Server,“跟 FreeSWITCH 交互,就是跟 FreeSWITCH 中的一个 Application 交互”,杜老师说。以 FreeSWITCH 中几个经典的 Application 为例,配合伪代码实现,杜老师讲了 FreeSWITCH 的核心工作原理。

最后,杜老师带大家简单回顾了课上的主要内容,其一, VoIP 通话原理:注册、呼叫、回复、通话、挂断;其二,通过示例让学员们对原理有直观理解;其三,实际演练让学员熟悉如何使用 FreeSWITCH 服务器来实现 VoIP 通话。

上午讲的内容相比较来说比较简单,大家都听懂了。

中午大家吃完饭以后,在自己的位置上休息了一会,方便下午能以好的状态听课,大家学习的态度和方法都很值得学习呢 😊。

下午,杜老师先分析了一个典型的通话失败案例:服务器端发起呼叫,但客户端未收到 INVITE 消息,杜老师带领大家一起寻找错误点,并告诉大家遇到错误不要怕,通过分析服务器日志,找到问题解决错误就可以。经过检查日志发现,发现 INVITE 消息时间间隔不正常(超过 1 秒),推断是因为 UDP 报文大小超过路由器的 MTU 限制,进行了优化,最后找到是 NAT 端口预留时间过短导致连接断开的问题,接着又解释了 NAT 端口映射的工作原理:内网设备需要通过 NAT 设备才能访问外网;NAT 会开启端口映射,但映射会在一定时间后关闭,需要内网设备每隔一段时间发送数据包来保持 NAT 映射,接着又演示了不同的 NAT 保活方法:频繁重发 REGISTER 消息来保持端口映射,使用 UDP OPTIONS 心跳包周期性刺激 NAT 设备,调整 SIP 协议选项,减少报文大小,用抓包工具分析了 REGISTER 和 INVITE 报文,解释了 NAT 导致的连接问题,总结了 NAT 穿透的原理,以及保持端口映射的常用方法。

下午同学们都掌握的非常好,都能跟得上杜老师的流程,所以培训第一天下午的课程提前讲完了,杜老师本想领着大家复习一下今天的课程,奈何杜老师讲的通俗易懂又细致,大家都说没复习的必要了,看到大家求知若渴的眼神,杜老师决定给大家接着往下多讲点。

杜老师讲解了 WebRTC,解释了 WebRTC 的基本工作流程:getUserMedia 获取音视频,通过 ICE 候选连接协商建立点对点连接,建立 P2P 连接后进行音视频传输,杜老师提醒大家由于浏览器限制,需要通过信令服务器交换信息。

杜老师现场演示了使用 Verto 协议和 SIP over Websocket 协议通过 WebRTC 连接 FreeSWITCH 的 Demo。

杜老师讲到这里特地停顿了一下,问大家有没有不懂的地方,解答了同学们的疑问后,接着又分析了移动端 WebRTC 支持情况。iOS 系统限制第三方应用使用摄像头和麦克风,Android 和微信小程序支持较好,主流浏览器基本都已支持 WebRTC,又介绍了多方通话的两种实现方案,对 MCU、SFU 和 Mesh 进行了分析。

时间转眼来到了培训的第二天,也是个好日子,是圣诞节,在这个欢乐的日子,杜老师先介绍、演示了 FreeSWITCH 中的一些 Appplication:

  • answer: 接听
  • birdge: 桥接,是阻塞的,b-leg 释放才继续往下走
  • hangup: 挂机
  • record: 录音
  • echo: 回声

用户代理客户端-UAC(User Agent Client),用于发起请求,用户代理服务器-UAS(User Agent Server),用于接收请求。UAC/UAS 的划分是针对一个事务的。在一个呼叫中的多个事务里,UAC 和 UAS 的角色是可以互换的。例如在 A 和 B 的呼叫中,A 向 B 发起呼叫,在呼叫建立的事务中,A 是 UAC,B 是 UAS;呼叫结束时,B 先挂机,在呼叫释放的事务中,B 是 UAC,A 是 UAS。换句话说,每个一般的 UA 都是 UAS 和 UAC 的结合体。

如果 SIP 消息的大小超过了 MTU,则有可能被网络中的某一节点分片,而 UDP 处理分片会有很大的问题,从而导致 SIP 消息传输失败。要解决该问题的话,两种方案:

  • 减少 SIP 消息的体积,比如减少 codecs、x headers 等。
  • 使用 TCP 来替代 UDP 传输 SIP 消息。

上午的时间过得很快,转眼间就到 12 点了,虽然到了午餐时间,但是杜老师仍然坚持回答完同学的问题再去吃饭,生怕时间推迟会使同学们忘记了自己的问题或者理解的不够深入,毕竟要趁热打铁,杜老师这种对技术孜孜不倦的追求令所有的同学动容,对同学负责任的态度令人在心里自然升腾出一种深深的敬意,大家更加爱戴、尊重、理解杜老师了。

伴着冬日的暖阳,大家吃完午饭回来后,放松了会儿,有的刷会小品,有的在桌子上小憩一会,有的出去抽根烟,学习的时候认真学,休息的时候好好休息,一切都在有序的进行着,小编也在码字,用文字记录着杜老师上课的内容,也记录着同学们的状态,有种岁月静好的感觉。

下午杜老师还担心大家会困,其实杜老师的担心是多余的,在一楼的时候,学员们在一起聊天,都说杜老师讲课既细致又幽默,根本听不够,哪里会困。大家都在认真听课,不懂的同学积极提问,自己的疑问也得到了及时的解答。

接着杜老师展示了常用的的 TTS 配置,先需要在控制台中创建一个语音合成应用,获取相应的应用 ID 和应用密钥,用于进行身份认证和授权。然后在获取到应用 ID 和应用密钥之后,可以通过阿里云语音合成 API 接口,将需要转换为语音的文本内容发送给阿里云服务器进行处理,生成对应的语音文件。

在语音文件生成完成之后,可以通过 API 接口获取该文件的流,进行播放。接着杜老师又解释了双流,很多 SIP 终端都支持双流,思科等支持双流,一般有一个人开会,分别开一个摄像头,另外一个就是要看 PPT视频,那么它就有两个流,然后两个视频就是双流。FreeSWITCH 将一个 SDP 分成了 2 个了,增加了一路假的 channel,在 MCU 中看到是两路流。

在下午的时间,其实杜老师又遇到了很多问题,但这也难不倒有着丰富经验的杜老师,只见杜老师一番操作,终于把问题给解决了,问题出在命令输入不正确,连续两天都是这个问题,所以说天下大事必做于细,我们一定要细心。晚上大家一起吃了饭,又进行了一些技术交流,大家也交到了很多好朋友。

时间过得很快,转眼间来到了第三天,杜老师分析了电话接通的流程,其中 FreeSWITCH 具备 RTP 地址自动校正功能。

该功能的原理很简单:FreeSWITCH 会向终端发送一个公网 IP 和端口的通知,告知终端将所有接收到的媒体数据包视为从该 IP 端口发出的。当 FreeSWITCH 接收到数据包时,它会比较数据包的源地址和源端口与之前终端 SDP 通知的是否一致。如果不一致,FreeSWITCH 会将终端的地址校正为该数据包的源地址。从此以后,属于该终端的媒体数据包将通过校正后的地址发送给终端,从而真正建立起媒体通信连接。

当通信建立起后,SIP 发送 INVITE 消息等待 FreeSWITCH 相应,如果 Auth 验证成功则 SIP 再发送 ACK 消息确认电话已经接通,如果没收到响应则以$2^{n-1} $ (1,2,4,8)秒进行多次重试,最终在 30 秒左右多次未响应后挂断电话。

休息了15分钟后,杜老师接着又解释了 Dialplan 的功能和配置,拨号计划可以分为上下文,允许不同类型的呼叫遵循不同的路径。呼叫也可以转移到其他上下文。例如,可以配置两种拨号计划:一种处理来自公共电话网络 (PSTN)的呼叫,另一种处理来自内部分机的呼叫。当一个用户拨号时,FreeSWITCH 会对用户所拨的号码进行分析,进而决定下一步该做什么,FreeSWITCH 拨号方案不是一个单一的实体。客户可以选择本地运行不同的拨号方案子系统。这些并不都被翻译成与其他系统可能使用的相同的后端。相反,每种方法都是独特、独立的方法,您可以通过它访问信息。

杜老师生怕同学们不会,给同学讲解的很细致,而且一个模块讲解完以后,就跟着回答同学不懂的问题,让同学安心地听接下来的课程,大概对一个老师最好的反馈就是老师我都听懂了。

下午,杜老师着重回答了同学们的问题,简述了 OpenSSL 的问题,OpenSSL 的版本号会导致冲突和报错,不同的 Debian 之间的 OpenSSL 的版本号不同,早起的版本对于多线程的版本支持的并不好,所以在对于支持多线程的程序中,如果支持多线程的话会造成报错或者性能严重下降的问题。

学员们提的问题,都比较具体,形象,杜老师很快 get 到了学员的意思,如果您也想提高提问水平的话,可以参考《橡皮鸭解题法》

接着杜老师又回答了另外一位学员的问题,FreeSWITCH 怎么获取语音流?杜老师说这个问题问的太好了,值好几百块钱。接着就把墨问便签小程序上的课程给大家详细讲了一遍。如果大家还有不懂的地方,可以购买老师墨问便签中如何获取FreeSWITCH中的语音流这一课。

杜老师讲完了以后,就下课了,但是小伙伴们都舍不得走,毕竟最后一个问题太重量级了,很多学员都在仔细回味,争取尽可能多的吸收杜老师讲的知识。

下午的时候有两位来自福建的同学分享了 FreeSWITCH 带给他们的实打实的收益,因为杜老师的这项技术,辅助同学完成了自己公司的项目,实现了升职加薪,走上了人生巅峰,另外,他还讲幸亏有杜老师这本《FreeSWITCH 权威指南》,因为这本书不仅仅有满满的干货,还有很多鲜活生动的例子供他参考、练习,所以大大提高了他的开发效率,让他的产品能提前上线,获得领导的赏识。有心动的小伙伴,快快来买杜老师的书吧,在小樱桃官网就可以购买。

另外一个小伙伴他讲很喜欢杜老师,因为杜老师很亲切,让人愿意靠近,而且讲课能照顾到基础好和基础一般般的同学,他买的是《Kamailio 实战》这本书,本来这种书放在家里都落灰了,但经过长时间对杜老师的了解,发现杜老师技术很牛,而且很乐意分享,所以就拾起来重新读,结果公司把话机换成 SIP 的,正好就用到了,化解了工作危机,同学们都很赞杜老师,在同学们分享完之后,杜老师对两位同学的分享赞不绝口,并说道,要敢于自己解决问题,就要扣问题,笨办法往往是最快的办法,了解了自己的边界以后,再去寻找帮助,先是书,然后再是线下课,灵活的解决大家遇到的问题,这样问题才能得到真正的解决。

不知不觉就到了 4 点 20,杜老师为大家书写结业证书,并合影留念,标志着大家三天的培训合格,也意味着三天培训完美的落下了帷幕。

米兰·昆德拉说:这是一个流行离开的世界,可我们都不擅长告别。美好的时光总是短暂的,我们最终迎来了离别的时刻。杜老师跟大家拍了合照,又送了祝福,大家也踏上了归途。同学们带着满满的收获离开,杜老师带着满满的祝福送别,这大概就是最好的离别。

期待更多的同学来参加培训,给自己充满电,再出发!


以下是培训报名信息,供参考


FreeSWITCH 高级培训 2023 冬季班北京站(线下)

风雨送春归,飞雪迎春到,伴着冬日的风韵,小樱桃 FreeSWITCH 培训班也正式回归线下了。我们相聚在北京,在北京市海淀区中关村烟台协同创新中心举办。

内容

  • 培训时间:2023 年 12 月 24 日-12 月 26 日 三天
  • 培训方式:线下培训
  • 培训地点:北京市海淀区中关村烟台协同创新中心 二楼会议室
  • 详细地址:北京市海淀区 G6 辅路与四拨子北路交叉口西南 140 米
  • 收费详情:
    • 全价为 6000 元,含 3 天课程以及培训第二天晚宴。

购票优惠说明

类型时段价格(优惠价/全价)元/人
七折票2023 年 11 月 12 日-2023 年 11 月 23 日4200/6000
八折票2023 年 11 月 24 日-2023 年 12 月 7 日4800/6000
九折票2023 年 12 月 8 日-2023 年 12 月 18 日5400/6000
  • 2023 年 12 月 19 日及以后报名,不享受折扣。
  • 因场地有限,报名人数达 30 人后,价格自动恢复原价,早报名早优惠!

其他优惠政策

  • 自 2023 年 11 月 24 日起, 2 人及以上 同时购票(开同一张发票),可申请优惠 。
  • 全日制本科、硕士在读学生,凭学生证报名可享受优惠。
  • 凡以前参加过 FreeSWITCH 培训的学员,再次参加本次培训,可享受优惠。

付款说明

我们支持支付宝、微信、公对公付款,选择公对公付款的报名者,请在 24 小时内支付,逾期未支付者订单自动取消。

线下付款账户信息:

  • 户名:烟台小樱桃网络科技有限公司
  • 账号:535902890210506
  • 开户行:招商银行股份有限公司烟台南大街支行

开票声明

如果您对发票有要求,比如需要开专票或开票内容为“培训费”,请您选择“线下付款”报名,之后付款到我公司账户,如果在平台上直接报名,将由平台提供发票(普票且开票明细为“经纪代理服务*服务费”)。

退款政策

如果您报名后因故不能来上课,除了活动行正常退款手续费外,开课前 2 日前申请退款收 20%管理费。开课前 2 日内及开课后收取 50%管理费。

注意事项

  • 培训第一天的签到时间是上午 8:30
  • 学员需携带个人电脑,以便进行实战练习
  • 请自行安装 FreeSWITCH(各种版本都可以),以节约时间。我们也为大家准备了我们为 FreeSWITCH 做了一个免费的 Docker
  • 培训第二天,周一晚上,培训学员免费参加社交晚宴
  • 如果你在线上支付有问题,请与我们联系,不能及时线下付款也请与我们联系
  • 如果有特殊需求的学员,请及时告知联系人,以便做好提前准备

常见问题

  • Q: 能否开发票?
  • A:能,如果您对发票有要求,比如需要开专票或开票内容为“培训费”,请您选择“线下付款”报名,之后付款到我公司账户,如果在平台上直接报名,将由平台提供发票(普票且开票明细为“经纪代理服务*服务费”)。
  • Q:本次培训费用都包括哪些内容?
  • A:培训费和培训第二天晚宴费,不包括午餐。您可在培训地附近自主就餐。
  • Q: 本次培训有人数限制吗?
  • A:有的。考虑到培训场地和培训效果,本次培训最多可以参与 35 人,报名人数达到 30 人后,报名费将恢复原价,名额有限,请您尽快报名。
  • Q:培训费这么贵,是否能便宜点?
  • A:软的,杜老师独到的讲课的内容和教学方法是在别处听不到的。硬的,我们在各地培训都是找当地专业的合作伙伴以及专业的场地,各种策划和宴会也需要一些费用。尽早报名能享受较低的折扣。
  • Q: 培训内容能具体点吗?
  • A:我们本次培训课程内容有基础部分,也有高级部分,如果您有一定基础,当然会更好一些,具体培训内容应该是以《FreeSWITCH 权威指南》为主,但比书上更生动,也会根据课堂情况灵活发散。也可以应学员要求侧重某方面的知识。
  • Q:下次培训是什么时候?能到 XX 城市培训吗?
  • A:我们非常愿意把 FreeSWITCH 培训常态化。但是,组织一场培训需要动用很多人,花费很多精力。从我们的经验来看,学员大部分还是集中于北上广等大城市,而且,不管我们在什么城市培训,都有千里迢迢赶来的求学者,所以,在可以预见的将来我们将还是集中在这几个城市。当然,我们也不拒绝当地土豪的盛情,如果任何城市能做到 20 人以上的规模,请与我们联系,我们很乐意前往。

联系方式

  • 公司座机 号码:0535-6753997
    • 安经理:18605359919
    • 李经理:13953542846
  • 邮件:training@x-y-t.cn
  • 微信公众平台:FreeSWITCH-CN
  • 新浪微博:@ FreeSWITCH-CN

培训大纲

第一天(12 月 24 日)

  • FreeSWITCH 极速入门
  • 在 Docker 中运行 FreeSWITCH
  • FreeSWITCH 高级配置实例
    • 路由
    • 网关
    • 多租户
  • SIP/RTP 详解及案例分析
  • FreeSWITCH 动态配置及数据库设计

第二天(12 月 25)

  • WebRTC
  • 视频转码和会议
  • 呼叫逻辑
    • 用 Lua 扩展呼叫逻辑和配置
    • ESL 开发,接口设计
    • HTTAPI
    • 更多呼叫控制机制
  • FreeSWITCH 连接 AI
    • ASR
    • TTS
    • ChatGPT
  • 学员问题解答

第三天(12 月 26)

  • FreeSWITCH 高可用部署
  • FreeSWITCH 集群部署
  • Kamailio 与 FreeSWITCH 组网简介
  • 超越 FreeSWITCH——XSwitch 功能扩展简介与参考
  • 学员问题解答

以实际授课顺序为准,以上仅为内容大纲。

讲师介绍

杜金房(Seven Du),北京信悦通和烟台小樱桃创始人,FreeSWITCH-CN 中文社区创始人,Kamailio 中文社区联合创始人,FreeSWITCH 代码贡献和维护者。资深网络通信技术专家,在网络通信领域耕耘 20 年,精通 VoIP、SIP 和 FreeSWITCH 等各种网络协议和技术,经验十分丰富。有超过 10 年的 FreeSWITCH 应用和开发经验,不仅为国内大家大型通信服务厂商提供技术支持和解决方案而且客户还遍及美洲、东南亚、欧洲海外国家和地区。

往期培训回顾

https://x-y-t.cn/training/

主办单位

本次培训,由烟台小樱桃网络科技有限公司主办。

烟台小樱桃网络科技有限公司成立于 2016 年 1 月,是国内最早从事 FreeSWITCH 研发与推广的企业,与美国 FreeSWITCH 核心研发团队保持着紧密联系。运营着 FreeSWITCH 中文社区、RTS 社区、公众号、QQ 群、知识星球等与 FreeSWITCH 软交换相关的资源。组织着国内 FreeSWITCH 的培训与沙龙。公司主要从事云端通信平台、电信级、企业级通讯系统建设、IVR 建设、呼叫中心系统、IP 电话、实时音视频会议、洲际 VoIP 通信、指挥调度、FreeSWITCH 咨询、开发、培训等服务。致力于打造优质的、一站式企业通信服务,为客户提供企业通信解决方案,最大化提升客户价值。