東京アラートBOT
LINE BOTを利用し、新型コロナウィルスの新規陽性者数、死亡者数、検査数、東京アラートが出ているかどうかを返してくれるものを作成しました。
東京アラートを発令する基準
作る過程で東京アラートが発令される基準を調べました。
- 新規陽性者数
- 新規陽性者における接触不明率
- 週単位の陽性者増加比
- 重症患者数
- 入院患者数
- PCR検査の陽性者数
- 受診相談窓口における相談件数
上記の7項目の状況によって検討されるようです。
重傷者が増えていないので、当面は発令されそうにありませんね。
完成品
東京アラートBOTを製作しました!最新の情報を取得してくれます。#JavaScript #protoouthttps://t.co/brsoDYN70Zpic.twitter.com/lddhU3yBrx
— Toshiki (@Hirasawa1987) August 26, 2020
構成
環境
- node.js v14.5.0
- @line/bot-sdk 7.0.0
- axios 0.19.2
- express 4.17.1
LINE Messaging API
Node.jsでLINE BOTを作る方法はこちらを参考にしました。
1時間でLINE BOTを作るハンズオン (資料+レポート) in Node学園祭2017 #nodefest
データ元
東京における新型コロナウイルスのデータは以下のサイト同じデータです。
ソースコードはMITライセンスで公開されており、誰でも自由に利用することができるそうです。 詳しくは、 GitHub リポジトリをご確認ください。
コード
index.js
"use strict";constexpress=require("express");constline=require("@line/bot-sdk");constaxios=require('axios');constPORT=process.env.PORT||3030;constconfig={channelSecret:'××××××××××××××××',channelAccessToken:'×××××××××××××'};constapp=express();app.get("/",(req,res)=>res.send("Hello LINE BOT!(GET)"));//ブラウザ確認用(無くても問題ない)app.post("/webhook",line.middleware(config),(req,res)=>{console.log(req.body.events);//ここのif分はdeveloper consoleの"接続確認"用なので削除して問題ないです。if(req.body.events[0].replyToken==="00000000000000000000000000000000"&&req.body.events[1].replyToken==="ffffffffffffffffffffffffffffffff"){res.send("Hello LINE BOT!(POST)");console.log("疎通確認用");return;}Promise.all(req.body.events.map(handleEvent)).then((result)=>res.json(result));});constclient=newline.Client(config);asyncfunctionhandleEvent(event){if(event.type!=='message'||event.message.type!=='text'){returnPromise.resolve(null);}if(event.message.text==='こんにちは'){letreplyText='こんにちは。東京の新型コロナ情報LINEボットです。\n\n'+'取得ボタン:\n'+'新規陽性者、死亡者数、検査数を表示します\n'+'※最新のお知らせは19:30分ごろ更新されます。\n\n'+'都庁アイコン:\n'+'東京アラートが発令されているか教えてくれます\n';returnclient.replyMessage(event.replyToken,{type:'text',text:replyText});}lettokyo_alert='';letmes='';if(event.message.text==='東京アラート'){constresponse=awaitaxios.get('https://raw.githubusercontent.com/tokyo-metropolitan-gov/covid19/master/data/tokyo_alert.json');console.log(response.data.alert);constalert=response.data.alert;if(alert===false){tokyo_alert="東京アラートは発令されていません。";console.log(tokyo_alert);}elseif(alert===true){tokyo_alert="東京アラートが発令されました!";console.log(tokyo_alert);}mes='現在は、'+tokyo_alert;returnclient.replyMessage(event.replyToken,{type:'text',text:mes,});}elseif(event.message.text==='最新情報'){constres=awaitaxios.get('https://raw.githubusercontent.com/tokyo-metropolitan-gov/covid19/master/data/news.json');console.log(res.data.newsItems[1].text);consttokyo_data=res.data.newsItems[1].text;mes2=tokyo_data;awaitclient.replyMessage(event.replyToken,{type:'text',text:mes2,});}}app.listen(PORT);console.log(`Server running at ${PORT}`);
感想
今回はリッチメニューを使いました、UIが簡単に作れるのでめちゃめちゃ便利です。サービスを高速で構築できそう。
東京都新型コロナウイルス感染症対策サイトのおかげで、素早く必要なデータを取得できました。
今後もLINE Messaging APIを活用しアウトプットしたいと思います。