許久不見佣蓉。
Athena的開發(fā)被擱置了好久披摄,期間也經(jīng)歷了不少不停的打開工程,思考怎么改勇凭,然后在一無所獲后關(guān)掉的過程疚膊。經(jīng)過最近兩天的努力,終于又增加了新的功能虾标。
最近閑來無事寓盗,去看了看python,中間在看大家用python做什么的時候璧函,發(fā)現(xiàn)大家都在做公眾號傀蚌。我登上我自己的公眾號,發(fā)現(xiàn)微信公眾號的消息可以被轉(zhuǎn)發(fā)到特定服務(wù)器蘸吓,而且不是域名善炫!
Athena從本質(zhì)上說,在當(dāng)前是一個聊天機(jī)器人库继。所以箩艺,即時通訊軟件窜醉,其實非常適合接入。
不過當(dāng)時我還沒那么想艺谆,我只是想酱虎,為何不做一個后臺,讓我能夠自己回復(fù)自己的公眾號的消息呢擂涛?于是昨天我就花了一晚上的時間研究了一下,基本的驗證聊记,搞定撒妈。但是在解析post請求的時候卻怎么都拿不到數(shù)據(jù),改了多次無果排监,嘗試了別人寫的框架狰右,無果。遂下班舆床。
昨天夜里我翻來覆去覺得有問題棋蚌,早上來了更新代碼……搞定了。
一時非常開心挨队。瞬間就想谷暮,為何不接入Athena呢?盛垦!
說干就干湿弦。
我先把基本的路由接入進(jìn)去,然而腾夯,之前的測試工程是sudo起的80端口颊埃,Athena作為一個正規(guī)項目是不能隨意sudo的。于是就去看網(wǎng)上如何用PM2接入80端口蝶俱,大家的意見是生產(chǎn)上還是Nginx安全一點班利。
于是又在VPS上加了個Nginx,感謝大力榨呆。80->2333罗标。
接著順利的通過了微信的驗證,可以正常返回消息了积蜻。然而馒稍,這,不是目的浅侨。
Athena的服務(wù)端結(jié)構(gòu)是劃分成了Server層(根)纽谒、dao、human如输、service四層鼓黔。首先央勒,之前架構(gòu)是Socket.io為主的,沒有router澳化。所以不存在router文件崔步。這次加入了一個接口的分發(fā)后,代碼很難看缎谷,于是先把router的兩個分發(fā)封裝到service層的wechat功能里井濒。然后把專門的router改到了index里。兩行列林。
接著瑞你,Athena所有的對外是由human里的react來進(jìn)行的,于是把wechat的兩個應(yīng)答器扔出來希痴。同時把基本的text型消息者甲,封裝到了一個枚舉的say方法里。
再然后砌创,human里的interpreter模塊負(fù)責(zé)AIML的應(yīng)答虏缸。然而這個應(yīng)答的代碼……看的我難受。半個小時重寫嫩实,分離出了兩個方法刽辙,加入了wechat擴(kuò)展。至此甲献,interpreter模塊已經(jīng)可以正常的應(yīng)答react給的消息了扫倡。
接下里是一部分代碼優(yōu)化,你們也不想聽竟纳,我也不想寫撵溃。
最后,搞定锥累。結(jié)果見最后的圖缘挑。
說在最后的話:
一如既往,這是個展望和回憶的環(huán)節(jié)桶略,首先语淘,我對前端的開發(fā)框架感到一種無力感。NG1會停止維護(hù)际歼,NG2還不穩(wěn)定惶翻,TS還沒學(xué)會,React好難用鹅心。我一度想轉(zhuǎn)個Python算了吕粗。
ES6將是大家的基本技能。然而擁抱ES6的過程是漫長而殘酷的旭愧。就如同放棄IE6一樣颅筋。我這次把Athena的編譯等級調(diào)整到了ES6宙暇,但是仍有很多特性是Node不支持的。而我也不是很熟悉……只能多寫一點议泵,再多寫一點占贫。
我之前想讓文煥幫我寫點東西。不過最近好久沒有聯(lián)系了先口。最近我也頹廢了很久型奥。
Athena接下來,一方面會進(jìn)一步橫向擴(kuò)展對其他應(yīng)用的支持和接入碉京。一方面厢汹,在深入上,將會繼續(xù)搞一些自動化收夸、智能的東西。
不過簡單的說血崭,我下一步會先做一個賬號系統(tǒng)卧惜,雖然我也不知道為什么,但是有賬號就會有記錄夹纫。就可以積累更加準(zhǔn)確的數(shù)據(jù)了咽瓷。大概。
另外舰讹,結(jié)婚和房子以及工作的事情茅姜,其實蠻麻煩。我也在稍微的努力月匣。
如果可以的話钻洒,希望Athena終有一天能變成我的女兒一樣的存在。
以上锄开。