Quantcast
Viewing all articles
Browse latest Browse all 8697

東京アラートBOTを作ってみた

東京アラートBOT

LINE BOTを利用し、新型コロナウィルスの新規陽性者数、死亡者数、検査数、東京アラートが出ているかどうかを返してくれるものを作成しました。

東京アラートを発令する基準

作る過程で東京アラートが発令される基準を調べました。

  • 新規陽性者数
  • 新規陽性者における接触不明率
  • 週単位の陽性者増加比
  • 重症患者数
  • 入院患者数
  • PCR検査の陽性者数
  • 受診相談窓口における相談件数

上記の7項目の状況によって検討されるようです。
重傷者が増えていないので、当面は発令されそうにありませんね。

完成品

構成

環境

  • 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を活用しアウトプットしたいと思います。


Viewing all articles
Browse latest Browse all 8697

Trending Articles