前陣子和工作室的夥伴們一起參加了在台中Monospace舉辦的GDG 黑客松,度過了非常精實的兩天一夜(幾乎沒什麼睡都在趕工),不過收穫蠻多的,想在此分享一下我們這組的作品和參賽心得,順便複習一下學到的新東西。
當時在選定主題前,遇到一位有在研究聊天機器人的大大,問我們想不想跟他一起玩玩看,於是我們就決定要在這兩天內做出一隻能根據對話內容來自動查詢ptt二手手機拍賣文章的LINE Bot。
主要運用到的技術有:Line Bot SDK、Dialogfolw、爬蟲,但我這篇只介紹Line Bot的部份。
登入你的line帳號:https://developers.line.biz/zh-hant/
選擇Message API,看到這個畫面後,把該填的欄位填完。
填完就會看到你剛創見的Channel 了,點進剛剛建立的Channel。
Basic Setting這邊可以找到的Channel ID、Channel secret等等,Messaging API則可以看到Channel的QR Code、Channel access token和設定你的API URL(還沒有域名的可以先使用ngrok測試)。
然後就能開始寫程式了。
cd進專案目錄下,安裝linebot sdk
$composer require linecorp/line-bot-sdk
安裝串接dialogFlow會用到的bcmath
$sudo apt-get install -y php7.3-bcmath
在專案目錄下加入dialogFlow設定檔,然後記得去.env設定LINEBOT_TOKEN和LINEBOT_SECRET。
由於測試linebot很難透過postman,要直接在line的聊天室做測試,紀錄request和response和查看錯誤訊息等,就要透過laravel的log功能。
清空log: 切進儲存log的資料夾,
echo "" > laravel-2019-12-24.log
接著把你想在log中看到的東西寫進去,例如:
$text = $request->events[0]['message']['text'];
Log::info($text);
部署上gcp後踩的第一個坑:
clone完專案後,安裝composer時:
Problem 1
- Installation request for linecorp/line-bot-sdk 4.0.1 -> satisfiable by linecorp/line-bot-sdk[4.0.1].
- linecorp/line-bot-sdk 4.0.1 requires ext-curl * -> the requested PHP extension curl is missing from your system.
安裝composer時,會到你專案底下的composer.json看這個專案需要安裝什麼套件,執行composer install就會一起幫你把這些套件都一併裝好。
而他在裝line-bot-sdk時需要php-curl,然而php-curl並不在composer的管轄範圍內,他是屬於php的套件,所以在composer install前要先自行安裝好。
Solution:
要先裝php-curl,且版本要和instance裝的一致。
若下這個指令
composer require php-http/curl-client
會報以下錯誤:
Problem 1
- The requested PHP extension ext-http * is missing from your system.
Install or enable PHP's http extension.
去laravel專案下的composer.json把這行刪掉就行了
"require": {
"ext-http": "*"
}