0 AI聊天机器人
开篇先把估值一个亿的AI算法的核心代码公布出来吧,大家可以拿去融资了,融到的话记得给我发个红包哈。
output = input.replace("吗", "").replace("?", "!").replace("?", "!")
代码我就不解释了哈,懂的都懂,WYSIWYG。另外想说话的话建议还是找个真人吧,机器人毕竟只是机器人。
说到这里,我又想起来一个有意思的聊天应用模式,正儿八经的跟人聊的那种,写完这篇就去搞。
又扯远了,书接上文,我们继续折腾IM。
1 Mattermost
Mattermost是一个Slack的开源替代品(啥是Slack?额……理解为企业微信那种东东吧),面向的是企业和团队。当然前一篇提到的另外几个其实也都是这样的,面向个人的可能直接就自己做服务了吧,不会做产品了,貌似也没法做产品。
之前说了,把这货之所以排在最后,纯粹是因为名字不讨喜。这是个什么奇怪的名字啊。但是前面几个哥们不够给力,还是要试试它了。
2 安装
Mattermost的文档写的挺详细了,无脑复制粘贴命令基本都能搞定安装。
数据库
先是安装数据库,可以选MySQL或PostgreSQL。因为之前已经有一个在跑的MySQL容器了,加之PostgreSQL也不熟,所以安装就不用了,只需要加一个mattermost的库和用户就好了。
服务端
下载,解压,移动,完。就是这么简单!当然也没有说的那么简单,把应用本体安顿好了以后,还要创建存储文件夹,创建用于运行的系统用户,配置数据库连接和站点URL,注册系统服务,配置nginx代理,等等。嗯……还是不少事情要做的。后来还专门花费巨款(几十块钱)买了个域名来挂它,幸好有免费的SSL证书可以申请,不然就要破产了。
配置完毕了以后,可以开始愉快的玩耍了。
3 玩耍
打开已经运行起来的Web应用页面,创建一个初始账号,我就是这片土地的领主了哈哈哈。
进入管理后台,改改名字,图标啥的,整个应用就算是正式上线了。
聊天功能分成两类,一类是CHANNEL,其实就是群聊,一类是DIRECT MESSAGE,也就是私聊。Mattermost还非常蛋疼的搞了两个没法移除的包含所有人的公共大群,一个叫公共频道,一个叫闲聊,可能前一个是用来发通知之类,后一个是用来扯淡吹水的吧。
Web版的功能看起来还算正常,接下来试试手机App好使不好使。
4 APP
App是拿React Native写的,所以web没啥问题的话,App理应不太会出什么纰漏。从GitHub的Release里下了个最新的版本试了试,果然还可以。嗯,算我错怪你了,不该以名取IM。
但是!
一个致命的问题出现了。
由于Mattermost是个邪恶美帝的公司的产品,它的Android App推送服务走的是Firebase的通道(Android官方推送通道),这问题就大了。我大清自有国情在此,Firebase?不存在的!
聊天消息没有通知提醒,这怎么玩?
国内也不是没有推送通道,问题是这玩意儿它不支持啊。怎么办?糖醋凉拌,自己搞呗。
5 推送
Mattermost提供了一个推送代理应用,可以自己部署,但上面说了,只支持Firebase。那我如此如此,这般这般,不就行了吗?
说干就干!
国内的推送服务商里,极光应该算是最早的了,又免费,就是它了。问题是,Mattermost的推送代理是用go写的,这个……虽说go的代码看能看的懂,但是要上手写的话,还是有点力不从心。还是得靠交友平台啊!GitHub上搜了搜,果然有go的包,感谢这位朋友的无私奉献。
万事俱备,只差对接了。整个推送代理项目的逻辑还是比较清晰的,很快就定位到了需要修改的地方,把包引进来,改一下推送的逻辑就差不多啦。不得不说,写惯了C#,go这种C风格的语言写起来还是有些费劲的。
服务端搞定了,App也得改。RN我也没写过啊!费了老大的劲才把账号和推送的逻辑理顺了,还好极光也提供了RN的SDK,省得我去找了。js写起来就比go轻松多了。
熬了几个晚上终于把推送给替换掉了。小三要把原配搞下去可真是不容易啊!
但是还是存在一个问题,就是推送只能在App活跃的时候才能收得到,App进程被杀掉了,推送服务自然也就停了。这个问题可以通过走手机厂商推送通道来解决,但是这些狗屁的厂商要想接入实在是太麻烦了,又要软著又要上架啥的,我一个自用的小玩意儿懒得搞了。
这样一来,就只有一个办法了:App保活。
6 保活
保活就是想办法让App不要被杀掉。到了这会儿,已经不想再折腾了。算了,别活了。
7 放弃
应用现在也还在跑着,仅仅用作不同机器之间的数据传输了,比起微信来,传个消息文件啥的还是舒服的多。
IM的折腾到此就告一段落了。好久没有写大篇幅的东西了,写起来吃力的很。不说了,搞聊天应用去了。