はじめに
自社のWEBサイトのQ&Aで、LINE BOT作れたらなと考え、
とりあえず何か簡単なLINE BOTを作ってみようと思いました。
普段、人材開発の仕事に携わっているので、
自分の1日の振り返り用のLINE BOTだったら実用的かなと、
作ることにチャレンジしました。
コーチング用LINE BOTの意図
振り返りで自動化したいことは、
・月間目標のリマインド
・月間の残り日数
・振り返りの質問
・PDCAを回す時の視点
です。
そのあたりを自動化しつつ、
明日の行動をイメージできるように、
明日の天気も自動で取得できるようにしてみました。
結果できたLINE BOT
天気apiを使うまでのLINE BOTは作れた。
"use strict";constexpress=require("express");constline=require("@line/bot-sdk");constaxios=require('axios');constPORT=process.env.PORT||3000;constconfig={channelSecret:"channelSecret",channelAccessToken:"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(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);}constmessage=event.message.text;letreplyMessage=event.message.text;if(message=="完了"){replyMessage="お疲れ様!1日振り返りましょう!";}if(message=="はい"){replyMessage="今月の目標は、Qiitaの記事を3つ書くことです。現状は?";}letdate=newDate();letyear=date.getFullYear();letmonth=date.getMonth()+1;letday=date.getDate();leteom=newDate(year,month,0).getDate();letnumber= eom-day;if(message.indexOf("現状")>-1){replyMessage=`今月は残り${number}日です。順調ですか?`;}if(message=="いいえ"){replyMessage="いますぐリスケしましょう。";}if(message=="やばい"){replyMessage="6つの変数<質・量・納期・方法・代替・金>どこ変えますか?";}if(message.indexOf("目標")>-1){replyMessage="今月は「WEBサイトに新サービスを追加」です";}if(message=="順調"){constrandomMessages=["さすが!間違いなく成長してます!","素晴らしい!!いうことなし!","成功間違いなし!明日も頑張りましょう!",];replyMessage=randomMessages[Math.floor(Math.random()*3)];}if(message=="ヒント"){constrandomMessages=["Tips:タスクじゃなく得たい結果を意識しよう","Tips:タスクを15分単位に分解してみよう","Tips:移動時間でもできるタスクを見つけよう",];replyMessage=randomMessages[Math.floor(Math.random()*3)];}if(message=="明日もよろしく"){constrandomMessages=["こちらこそ!!","明日もがんばって!","たのしんで!!",];replyMessage=randomMessages[Math.floor(Math.random()*3)];}returnclient.replyMessage(event.replyToken,{type:'text',text:mes});}app.listen(PORT);console.log(`Server running at ${PORT}`);
最後に天気apiで明日の天気を取得し、明日の行動スケジュールを立てやすくしようとしたが、うまくいかなかった。
上のソースコードに、挿入したのがこちら。
if(event.message.text=='天気教えて'){letreplyText='';replyText='考え中';awaitclient.replyMessage(event.replyToken,{type:'text',text:replyText});}constCITY_ID=`400040`;constURL=`http://weather.livedoor.com/forecast/webservice/json/v1?city=${CITY_ID}`;constres=awaitaxios.get(URL);constpushText=res.data.description.text;returnclient.pushMessage(event.source.userId,{type:'text',text:pushText,});}returnclient.replyMessage(event.replyToken,{type:'text',text:mes});}
やはりプログラム1つ1つの意味が解読できないと、どこをどう変えればいいかわからない。
まずはJavascriptのプログラムの勉強からはじめる必要がありそう。
工夫したこと
・目標達成に向けて順調に進んでいたら、褒める、労う。
・目標達成ノウハウで、たまに思い出したいものを、いつでも引き出せるようにする
・今月の残り日数を自動計算することで、目標達成の具体的なスケジュールを意識できるようにした
今後の改善事項
・まずはapiを使ったプログラムを完成させる。
・状況に合わせて、効果的な問いが自動で出てくるようにしたい
・もっとリマインドしたい目標達成ノウハウを詰め込みたい
・計画をリスケしたら自動でgoogleカレンダーに入力されるようにしたい
今後、改善して、より実用的なものに繋げていこうと思います。
まとめ
LINE BOTの勉強をはじめて3日でやってみましたが、
思いの外できた部分と、うまくいかない部分と味わった。
これからも色々チャレンジしながら、学んでいけたらと思います。