使用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
3channelId: CHANNEL_ID,
channelSecret: CHANNEL_SECRET,
channelAccessToken: CHANNEL_ACCESS_TOKEN下載這份repository
專案clone下來後,在根目錄新增config.js1
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