使用Node.js開發結合口罩地圖開放資料的LINE聊天機器人
使用Node.js開發結合口罩地圖開放資料的LINE聊天機器人
近日口罩地圖非常熱門,又因為LINE在台灣是個老少皆宜, 非常熱門的應用程式,因此很適合拿來作為口罩地圖查詢的平台。
這邊獻上我開發的聊天機器人開發連結
此專案為開發LINE機器人搭配政府提供的口罩open data為範例,若有任何意見,歡迎來我的GitHub repository觀看與給予回饋唷。
以下將教大家如何使用這份。
環境與工具介紹
開發環境:Node.js
套件:linebot-sdk, express, request
資料來源:mask data made by g0v member - kiang
使用步驟
- 到LINE Business開立一個機器人 
 取得以下資料:- 1 
 2
 3- channelId: CHANNEL_ID, 
 channelSecret: CHANNEL_SECRET,
 channelAccessToken: CHANNEL_ACCESS_TOKEN
- 下載這份repository 
 專案clone下來後,在根目錄新增config.js- 1 
 2
 3
 4
 5
 6
 7
 8
 9
 10- // 放入你剛剛取得的資料 
 const channel = {
 CHANNEL_ID: '',
 CHANNEL_SECRET: '',
 CHANNEL_ACCESS_TOKEN: '',
 };
 module.exports = {
 channel: channel
 };
- 安裝套件 - 1 - npm install 
- 執行專案 - 1 - node app.js 
- 用LINE打開你的機器人,即可使用 
補充
由於是server to server,所以會有跨網域的問題,因此需要補上:
| 1 | app.all('*', (req, res, next) => { | 
基本功能
機器人會根據收到以下的動作,來執行function內的事件
| 1 | bot.on('message', function (event) { }); | 
資料處理
使用者傳送的資料可以從event中取得
| 1 | const message = event.message.text; | 
回覆方式
機器人回覆的方式有兩種
- reply
 只能回覆一次1 event.reply(replyMessage).then(function (data) {}).catch(function (error) {}); 
- push
 可回覆多次,需得知使用者Id回覆內容給指定使用者1 const userId = event.source.userId; 1 bot.push(userId, '歡迎追蹤口罩地圖'); 
回覆格式
可單純回覆一個字串或是指定格式
以口罩地圖為例:
| 1 | { | 
文字:
| 1 | event.reply('Hello, world'); | 
多文字:
| 1 | event.reply(['Hello, world 1', 'Hello, world 2']); | 
一次回覆多個物件:
| 1 | event.reply([ | 
回覆圖片:
| 1 | event.reply({ | 
更多範例請參考官方文件
參考資料
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
 Comment






