FreeSWITCH高手速成培训2021冬季班(ONLINE)圆满结束

[培训]





大约在冬季,我们举行了2021年最后一场FreeSWITCH培训。



近几年的培训后记都是小伙伴们写的,今年,我想自己写一写。



第一个公开的FreeSWITCH培训班始于2013年6月,距今已有9个年头了。考虑到疫情等各种原因,今年最后一场培训首次在线上举行。

多年来,我一直坚持办FreeSWITCH培训班,为社会培养了大量的FreeSWITCH人才,也从另一个侧面推动了FreeSWITCH开源项目的发展。我们培训班的特色,或者说我们一直坚持的理念是——「专注、系统地学习可以提高学习效率」、「“师傅领进门,修行在个人”,持续不断地学习和练习是巩固和扩展知识的唯一途径」。FreeSWITCH。



来参加学习的大都是公司的技术骨干,他们有的是架构师、有的是“底层”开发者,在公司里一般都很忙,甚至很多时候都是在公司不停地“放火”(写Bug)和“救火”(修Bug)。我们要求来参加学习的同学都暂停这种忙碌的状态,三天内集中精力学习FreeSWITCH,也算是保障学习效果的很重要一环。

从第一届起,我们就决定每年春夏秋冬开四个班,因此才有了“春季班”、“冬季班”之类的代号,但事实上,我们只有一年做到了,其它年份都是2-3次。

2019年底突发的疫情打乱了所有人的节奏,线下班也比较难组织,但我们还是见缝插针的办了几届,所幸都没有给国家添乱。随着网络技术的成熟和大家习惯的改变,再加上很多学员也都希望来一个线上的培训班,于是我们终于下决心尝试做了一次。

严格来说我们还是喜欢线下的。同学们可以面对面的交流,在课上看见大家的眼神和期待也让我讲课更有激情,尤其是课后还可以跟大家一起喝酒吹牛。但线上也有线上的好处。大家和我都少了舟车劳顿,企业省了差旅的负担,节省了时间。

本次培训我们使用腾讯会议商业版,除了不能让大家自由发言外,一切都还好。我们这次尝试了Webinar模式,有别于临时组织的会议,这种模式可以让我们更好的控制谁可以发言,当然带来的管理成本就是操作起来非常复杂因此我们根本没让大家露脸和语音发言,一切提问都是以文字形式进行的。这样可以异步交流,其实也可以节省时间,但总没有现场或者直接音视频互动那么直观、生动。有利有弊,一切还是很顺利地完成了。这也是我们培训班首次突破100人。当然,我们公司所有人都参与或参加了培训,我们“欠”下的一些合作伙伴的培训也一并补上了。



本次课程把原来三天的时间改为两天,价格也亲民了许多。考虑到大家对“高手速成”的期待,本次课程还是完整呈现了三天的内容,当然后来大家都批评语速比较快,有时候跟不上,不过,这也从另一个侧面反映了我的大脑还没有迟钝。我只是想利用有限的时间给大家提供更多的内容,至于消化,课后多多修炼就应该能多消化一些,即使讲得再慢一些,无损消化也几乎是不可能的,再说,也没有必要,我讲的也不是100%都是精华。

我讲课的一个特点是每次讲的内容看上去一样,但又不一样,即使我们对外宣称是同样的培训大纲,也会有学员三番五次的来听。这样也好也不好,好的是,这样更灵活,大家也可以学到更真实有用的技能;不好的是,不像学校上课那样对学到的知识和技能有一个标准的“期待”。举例来说,我几乎每次讲课都会因地制宜做一些实例讲解,也几乎每次都会遇到问题卡住一段时间,但大家都发现,我在解决问题的时候,思路和方法反而比实际课本上的步骤和内容更有用。当然,如果是3天的课我可以比较大胆的挥霍,压缩成两天我就只能节约时间,尽量减少演示不可控的内容和环节。这也是三天压缩到两天的秘密,内容确实没有少,但是根据能量守恒原理,还是少了些东西。不过再考虑到我们确实降低了价格,算起来应该还是大家赚了。

这次课还是从我积累了多年的课件讲起,从通信的发展到一些通信基本知识、基本概念、新概念如5GNR,甚至元宇宙都涉及到了。目标是给大家一个快速的知识对齐,让新入行的同学也可以有些基础知识听后面的课,有经验的同学也能感到新鲜有趣,能学到东西。知识是分层的,至少我从课程设计上是这么考虑的。

时至今日,Docker、虚拟化和云原生已经成了系统部署和运维标准的方式,虽然大部分企业级的部署还没有实现,但我们去年发布了免费的FreeSWITCH Docker镜像xswitch-free,从那以后我们就一直用它来开篇讲课。FreeSWITCH自带的配置默认配置在尝试展示自身强大的功能方面非常不错,但对于初学者来讲,就显得冗长又难懂。xswitch-free反其道而行之。启动Docker镜像后,立马可以打电话,甚至不需要建账号,任意账号和密码均可注册互拨。每次讲到这里,我一般都会在课上说,好了,你们可以毕业了。当然同学们不会真的离开,因为他们还想听后面的内容。后面讲到的内容都会在最简版配置文件中“加上去”,即从简单的配置做加法而不是从冗长的配置做减法。

从“打电话”这一直观体验开始,我们讲如何做电话路由、如何增加网关配置、如何加用户,配权限等,一切都顺其自然。对于重要的概念、Channel、Session、Dialplan、Context、API、App、呼叫字符串等,由反复演示反复讲解,直到大家理解FreeSWITCH的本质:终端跟FreeSWITCH交互其实就是跟一个App在交互,掌握了所有App,就完全掌握了FreeSWITCH。

WebRTC、视频转码和视频会议,就完全在我们XSwitch云平台上讲。与使用FreeSWITCH默认的例子相比,减少了很多不确定性(默认的例子有很多国外的服务依赖),也让学员能直观的了解到WebRTC可以做到哪些实际的功能,所有这些功能又是怎么实现的,一切秘密如抽丝剥茧般呈现在大家面前,有的学员也当场大呼过瘾,一切都豁然开朗,说醍醐灌顶也不为过。

XSwitch平台后台全部使用Lua直接在FreeSWITCH内部完成。课上,我们除了讲Lua的原理、呼叫控制逻辑,跟ASR/TTS/AI平台的交互外,还给大家讲了Lua动态绑定XML、连接FreeSWITCH与数据库、以及通过HTTP及Websocket交互的JSON API等,几乎把FreeSWITCH中的Lua用到了极致。可能并不是所有学员都用到这些内容,但是对于全面了解FreeSWITCH是非常有帮助的。

本次对于ESL开发实例讲得比较少。本质上,ESL相当于从外部通过Socket控制FreeSWITCH,实际上还是远程调用FreeSWITCH内部的API和App,通过Event触发相应的逻辑。万变不离其宗,举一反三掌握本质,再多的例子其实也没有太大必要。

关于高可用和集群部署,也有非常详细的讲解。当然我们从不在课上演示集群搭建和容灾演练。集群搭建比较困难,在很多概念和配置文件中跳来跳去也不容易让大家抓住要点,使课程不紧凑。因而,我们一般只讲理论,并回答大家的问题。当然,课上还有专门的Kamailio与FreeSWITCH组网内容,Kamailio与FreeSWITCH的对比等。也是一样,只讲原理,修行靠个人。

总之,本课程设计的目标就是让大家快速了解FreeSWITCH的方方面面,在以后的工作中知道使用FreeSWITCH的哪部分功能才是最适合自己的,理解FreeSWITCH为什么这么设计,为什么某一个功能没有像自己所想的或所期望的那样设计,这样设计的优缺点都在哪里,等等。

除了干讲,几乎每一次下课前或上课之初我都会有针对性的分析并回答大家提出的问题,解答了大家心中的疑惑,其它同学也能学到很多课程里本来没有设计到的内容。



美好的时光总是短暂的,两天时间匆匆而过,大家付出了周末的时间,带回满满的收获。

后面,我们打算每年至少开一次线上的培训班。线下的,只要疫情允许,我们还是会每年搞一次,所以,错过的同学还有下次。应一些学员要求,以后,我们也考虑多搞一些更聚焦,更差异化的培训课程,如Dialplan专题、WebRTC专题、视频专题、模块开发与源代码专题等,敬请期待。

我总是忘记,我们其实有一些线上录播课(收费但不贵),录得还不错,大家感兴趣的可以点左下角的「阅读原文」中听一下。这个平台是号称“互联网百晓生”的曹政先生创办的,只是平台没有找到好的经营策略,一直不温不火。

FreeSWITCH官方Wiki

(https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+First+Steps)

2. 杜老师的知识星球,随时和业内人员互动交流





最后,希望更多的人参与FreeSWITCH开源社区中来,也希望更多的人能同去参加一场ClueCon!



FreeSWITCH权威指南
FreeSWITCH权威指南

FreeSWITCH-CN微信公众账号
微信公众账号
FreeSWITCH-CN