利用运营商固网和Asterisk在家搭建呼叫中心的一些总结

这几年推进光进铜推,实际上现在家庭的固话都是VoIP的。家里的光猫被封印在弱电箱,电话线拉不出来,固话就一直荒废了,趁着这两天有点时间,折腾了一下想尝试将固话用起来。最终成功实现了,自动外呼、IVR菜单、呼叫转移等功能。不得不说,Asterisk的确很强大,很多PBX系统都是在这个基础上做起来的。不过似乎局端的设备都Asterisk的认证支持有点问题,过一段时间就会掉线,所以目前是打住了。先将步骤和碰到的问题总结下来吧,方便后续其他同学折腾。

  1. 首先光猫要获得超级管理员权限,然后设置一个新的Vlan,Vlan ID用46,记得业务类型选择其他,不要选择语音。选择语音之后就不能用桥接类型,导致接口本身获得IP而不是对应连接的设备获得IP。
  2. 桥接配置后需要获得SIP的鉴权信息。我的光猫型号是HN8145V,可以将配置备份导出之后,用ctce_cfg.exe解密,然后再用这个工具huawei-win解密鉴权的$2加密内容。
  3. 在获得鉴权和网络接通以后,可以在Win下用MicroSIP测试一下能不能直接拨号,具体的参数填写请参照这个截图:
microsip-account1

4. 测试的时候必须注意SIP对应的网络信息和接口是独立的内网网段,所以必须收到设置路由,包括SIP服务器、SIP代理、DNS服务器等相关的地址。这个也是我觉得比较麻烦而且不靠谱的地方,因为你不知道SIP代理、DNS地址什么时候会变。而且你不知道中间过程中会不会涉及到其他地址。所以如果想长期搞的同学还是建议单独弄个设备,默认网关走SIP的内网,这样设备就会上不了网,但是会省却很多麻烦。

5. 如果测试拨号过程中出现能呼叫、接听。但是接听之后,没法说话或者其他情况。建议还是检查一下网络和Asterisk的NAT设置。我这里就卡了一段时间,出现了能听,但是不能说的情况。主要是由于说和听分别由两条单工的RTP负责的。其中一个方向的RTP网络出现了问题,就会导致这种情况。

6. MicroSIP拨号成功后,就可以配置Asterisk服务器,具体可以参考这篇文章。这个配置还是挺好懂的,就是配了两个内网SIP用户和一个外线。

7.Astersik关于IVR菜单,可以参考篇文章。自动外呼的话,可以参考这篇。这两个我觉得挺有意思的,前者可以做一个很酷家庭语音菜单网关+留言信箱。后者可以结合家里的设备做报警外呼。

参考:

https://wiki.asterisk.org/wiki/display/AST/Creating+a+Simple+IVR+Menu

https://www.voip-info.org/asterisk-auto-dial-out/

http://zhmail.com/2016/09/24/configuring-epon-e8-c-gateway-to-access-ctc-voip-network/

http://lsjtt.asuscomm.com:88/?post=1099

腾讯DDNS-DNSPOD 双wan口版本运行脚本

不知道什么原因,最近家里的宽带居然能双拨叠加带宽了,并且两次拨号都能拿到公网IP。考虑到不要就是浪费的原则,在OpenWRT配好了双WAN负载均衡后,就剩下双公网IP没有处理。

之前一直用QNAP的DDNS,比较遗憾的是,我在QNAP插件里面没有找到双IP注册的方式。并且考虑到QNAP自身拿wan口的IP也不容易,所以就想在路由上打主意。

刚开始确实找到DNSPOD在OpenWRT的DDNS插件,安装以后发现依旧是不支持多WAN口的。简单测试了一下,DNSPod本身的DDNS是支持多IP的(免费的解析好像支持两个IP,刚好)。还好插件本身是开源的,改起来还算简单。

先改一下插件的页面,将interface改成列表形式,打开文件:/usr/lib/lua/luci/model/cbi/tencentddns.lua,将interface改成DynamicList,删掉第一个iface:value,增加你自己的wan口。注意保留internet,这个是用于请求公网来获取IP地址的。

然后修改:/usr/sbin/tencentddns,改的内容比较多,可以直接从这个gist上面复制,或者从这里下载

最后不得不说,bash的语法依然像一坨糊糊,而它的子集ash,更是糊中之王。真的是为难了那些做openwrt插件的朋友。本来这个修改预计用1个小时左右,没想花了3天,前后总共用了3个小时左右。反正社区都有强大的luci,为什么不用lua做一个默认的shell呢?而且lua虚拟机本身占用也极低,在嵌入式设备也不用担心。

PS:国内托管WP无法直接嵌入gist,而国内gitee,coding.net根本无法发布公开的gist,原因大家都懂。国内目前能自由对外发布言论的渠道基本都被堵死。博客托管、评论系统几乎都要接受备案和审查,否者一律不能对公众发布。就连gitee-gist这种也不能幸免。我能理解为什么这么做,却很难从心里认同这件事儿。

近况

离开105已经有一个月,没想到时间会过得这么快,明天就是我在新项目组第一次参加的三方。每次去到一个新的项目组,都需要一段时间去熟悉各种人/事/物。这且这次还是只有我自己一个,基本没有熟悉的人,估计要花不少精力。幸亏项目组也属于刚扩张阶段,大部分同学都是新招进来的,这对我来说应该是个好事吧。

这端时间接触了很多新的东西:Perforce,UE4,端游的开发;也用回了熟悉的Python,还有服务端引擎。老实说,这一个月的进度远比应该要的进度慢,总觉得自己不太专心。直到B组解散以后我才知道自己不专心的原因是什么。虽然人已经过来这边,但对原有项目组依然没有“了结”,一直再跟大家做各种的八卦,“缅怀”这两年的事情。直到听到解散的消息后,自己突然有了一种释然的感觉。应该要继续往前走了,要提醒自己为什么要转过来新的项目组,有些东西该止则止吧。

另外,之前注册的域名也备我抢回来了,估计菠菜觉得没什么价值了。我打算用来搭个简单的英文站,锻炼一下自己的英文写作技巧。在这里SEO一波吧:https://shaneyao.com

美食的科学实践-潮汕反沙芋头

还记得在大学城读书时,和同学一起去大排档吃潮汕菜。那种对我固有味觉的冲击感到现在依然深刻。甚至连那家大排档的名字叫”学友大排档”,我都依然还记得(也有可能是因为它的名字跟张学友比较像?哈哈。)。我对当时好几道菜都印象深刻,尤其是有一道甜品“反沙芋头”。

在前段时间刚好是芋头的季节,就买了几次芋头尝试制作。在经历过一两次失败后,后面基本没出什么意外了。B站上有不少教制作这道菜的教程,如果想看实操的话,可以点这里。操作上的东西就不赘述了,可以去看视频。这里主要想补充一下很多视频都没说明白的点。

先说重点:这道菜的成败关键在于含水量。反沙的形成原因,我们初中化学基本都学过,其实就是:糖的过饱和溶液在温度和含水量变化后析出的晶体

首先是材料芋头的挑选含水量低,粉口的芋头。广西荔浦芋为上选,含水量低,够粉,而且芋头的香味较浓。如果没有的话,越南芋头也可以,关键要够粉,香味对成菜最多只能作为点缀。如果芋头不够粉,则含水量较高,一则影响成菜口感,二则影响反沙形成。

其次炸芋头的主要作用是收干芋头的水分。前面必须用慢火炸干炸到哐当响,后面30秒猛火逼出油脂。芋头要尽量放凉才用,这样后面加入炒沙时,才能迅速降低糖浆温度,快速结晶。这点也是很多视频教程里面没有提到的。

接着是煮糖浆,水不用太多,因为我们主要的目的是糖的过饱和溶液,水太多,还要费时间蒸发水分,提高浓度。如果有喜欢下香葱的同学,建议将香葱炒干后再加入,避免关火后渗出水分。泡泡的大小是判断糖浆浓度的标准,这点看视频基本就能掌握。

最后是炒沙,在浓度足够后关火。其实这时候可以根据煮糖浆容器的厚度适当延迟加入芋头的时机。因为容器越厚,温度降低越慢,在糖没开始结晶的时候,翻炒几乎没有意义,过度翻炒还会弄烂一些芋头。当然加芋头进去的时候还是要简单翻炒一下,让糖浆分布均匀。随着温度降低,糖浆开始重新结晶时(糖浆会变粘稠,翻动会变困难),必须加快翻炒速度,让糖浆在结晶中混入空气,这样才能形成完美的反沙。完成结晶后,就可以出锅。如果这时候翻动不及时,就会变成拔丝芋头或者糖脆芋头了(我第一次就是这样失败的T_T)。

至此,技术总结完毕。

换个域名,再次出发

时隔两年,重新注册了新的域名,开始了新的写作计划。这次再开博客,会有更大想法。先埋藏在脑子里,一步一步的实现吧。

可惜了之前的域名:shaneyao.com,在搜索引擎还是有一定的权重的,以至于停止续费后,马上被菠菜盯上,网站变成了澳门顶级肚肠。也罢,换了这个域名也算凑合,还是先关注内容吧。

PS:现在搭建网站可真容易,从注册域名主机,到搭建完成,总共2个小时不到,而且还是配置好SSL和HTTP2的情况下。