Jimmy's Code

Want to be a better Coder
^

Laravel 與 Line Bot 的踩雷微經驗

2019-08-04

前陣子看到鐵人賽有一個系列:用 laravel 尻出自己形狀的 line bot,還要撐三十天!  ,便想說,來玩一下line bot + laravel 好了

卡關到破關

參考網路上很多資料,但必須說…. 有些真的很舊,於是卡關了好一陣子…. (注:上面鐵人賽系列是用line bot 作 爬蟲及推送訊息,並沒有webhook 的部分…也就是有人發問而機器人回答的那種並不是那個系列要達成的效果。)後來發現,看到 line 發給我們webhook 的request , WTF 原來這麼簡單…..

{"events":[{"type":"message","replyToken":"...","source":{"userId":"...","type":"user"},"timestamp":1564820945283,"message":{"type":"text","id":"...","text":"..."}}],"destination":"..."}

以上…代表隱私資訊,反正就是line 傳過來的一串英文數字串出來的號碼就是了,於是我發現這樣的寫法就可以了…

$events = $request['events'];
foreach ($events as $event) {
   $resp = $this->bot->replyText($event['replyToken'],'Hello World');
}

我遺失的歲月啊(昏~ 接下來安裝一下linecorp/line-bot-sdk 就可以像鐵人賽裡面的推送文章、訊息囉… 我自己是還在研究中… 而我在此次開發了兩個專案…

專案一:聖經查詢機器人

其實這是一開始碰line bot 的初衷,最近開發到一陣子我想可以試著談一下了(但我自己也還要好好想一想要怎麼樣可以有自然語言的感覺…串深度學習等技術…),因為 line 要求使用到https ,所以目前暫時使用Heroku 作為host,等到覺得真正的開發成熟後,我想到時在移到AWS 吧?!

目前就是簡單兩個功能:一個是每日的推送經文(使用台灣聖經網的服務),另一個則是查詢聖經的服務(串接信望愛網站JSON API),而另外我遇到全形半形的問題… 但偶然發現php 有一個function 很好用,那就是mb_convert_kana,詳細用法可以參考這裡,另外為了程式碼的品質與結構,使用到Service , Transformer 等模式,希望隨著這個專案的日漸茁壯,這些模式可以更好的幫助開發!

目前在測試階段,如果想要加入一起開發歡迎發PR 喔或找我更多討論將來如何發展!

https://github.com/r567tw/bible-bot

專案二:不知道該怎麼命名的聊天機器人

因為查詢聖經機器人開發到一個階段,然後無聊興起想說是否可以來玩玩更多不同的功能,可能也是有點像是我從樂在信仰中之外又開發這個Tech Blog 吧?總之不想給人太多傳教的感覺,所以又拉出了一個子專案,而這個字專案結構與原本的聖經機器人有87%相似,目前只有提供幫我查詢Yahoo 的今日星座運勢,未來應該會想開發查一周運勢或者今天天氣會不會下雨該不該帶傘之類的,不過這是有點極高玩味性質存在的作品啦,可能也是想說如果要推聖經機器人新功能之前也可以先透過此專案試行看看… 所以像之前專案用比較嚴謹的heroku cli 作deploy ,這個則直接連github branch 直接自動部署了,反正壞掉我個人也不會介意XD

也歡迎大家對於程式碼有什麼建議也可以告訴我喔!

https://github.com/r567tw/bot

小君曰:line bot 真的好好玩~

r567tw

住在台北的一位台東developer,最喜歡"忠心"這個形容詞。這一生希望完成三件事:寫一本書、站在TED演講並且想要成為福音及各種學科的橋梁,希望自己能從基督教的思考框架出發與各學科傾聽、回應、對話