１日の仕事の振り返りで使えるコーチング用LINE BOTを作ろうとした

#はじめに

自社のWEBサイトのQ&Aで、LINE BOT作れたらなと考え、
とりあえず何か簡単なLINE BOTを作ってみようと思いました。

普段、人材開発の仕事に携わっているので、
自分の１日の振り返り用のLINE BOTだったら実用的かなと、
作ることにチャレンジしました。


#コーチング用LINE BOTの意図

振り返りで自動化したいことは、
・月間目標のリマインド
・月間の残り日数
・振り返りの質問
・PDCAを回す時の視点
です。

そのあたりを自動化しつつ、
明日の行動をイメージできるように、
明日の天気も自動で取得できるようにしてみました。


#結果できたLINE BOT


天気apiを使うまでのLINE BOTは作れた。

![8619_0.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/664861/87faa404-4028-03cb-c371-cb141cc5ad2f.jpeg)


```Javascript
"use strict";

const express = require("express");
const line = require("@line/bot-sdk");
const axios = require('axios');
const PORT = process.env.PORT || 3000;

const config = {
  channelSecret: "channelSecret",
  channelAccessToken: "channelAccessToken",
};

const app = 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)
  );
});

const client = new line.Client(config);

async function handleEvent(event) {
  if (event.type !== "message" || event.message.type !== "text") {
    return Promise.resolve(null);
  }

  const message = event.message.text;
  let replyMessage = event.message.text;

  if (message == "完了") {
    replyMessage = "お疲れ様！1日振り返りましょう！";
  }

  if (message == "はい") {
    replyMessage = "今月の目標は、Qiitaの記事を3つ書くことです。現状は？";
  }

  let date = new Date();
  let year = date.getFullYear();
  let month = date.getMonth() + 1;
  let day = date.getDate();
  let eom = new Date( year, month, 0 ).getDate();
  let number =　 eom - day ;

  if (message.indexOf("現状") > -1) {
    replyMessage = `今月は残り${number}日です。順調ですか？`;
  }

  if (message == "いいえ") {
    replyMessage = "いますぐリスケしましょう。";
  }

  if (message == "やばい") {
    replyMessage = "６つの変数＜質・量・納期・方法・代替・金＞どこ変えますか？";
  }

  if (message.indexOf("目標") > -1) {
    replyMessage = "今月は「WEBサイトに新サービスを追加」です";
  }

  if (message == "順調") {
    const randomMessages = [
      "さすが！間違いなく成長してます！",
      "素晴らしい！！いうことなし！",
      "成功間違いなし！明日も頑張りましょう！",
    ];
    replyMessage = randomMessages[Math.floor(Math.random() * 3)];
  }

  if (message == "ヒント") {
    const randomMessages = [
      "Tips:タスクじゃなく得たい結果を意識しよう",
      "Tips:タスクを15分単位に分解してみよう",
      "Tips:移動時間でもできるタスクを見つけよう",
    ];
    replyMessage = randomMessages[Math.floor(Math.random() * 3)];
  }


  if (message == "明日もよろしく") {
    const randomMessages = [
      "こちらこそ！！",
      "明日もがんばって！",
      "たのしんで！！",
    ];
    replyMessage = randomMessages[Math.floor(Math.random() * 3)];
  }

  return client.replyMessage(event.replyToken, {
    type: 'text',
    text: mes
  });
}
app.listen(PORT);
console.log(`Server running at ${PORT}`);


```

最後に天気apiで明日の天気を取得し、明日の行動スケジュールを立てやすくしようとしたが、うまくいかなかった。

上のソースコードに、挿入したのがこちら。


```Javascript

 if(event.message.text == '天気教えて') {

  let replyText = '';
  replyText = '考え中'; 
  await client.replyMessage(event.replyToken, {
      type: 'text',
      text: replyText
  });
}
  const CITY_ID = `400040`; 
  const URL = `http://weather.livedoor.com/forecast/webservice/json/v1?city=${CITY_ID}`;
  const res = await axios.get(URL);
  const pushText = res.data.description.text;
  return client.pushMessage(event.source.userId, {
      type: 'text',
      text: pushText,
  });
}

  return client.replyMessage(event.replyToken, {
    type: 'text',
    text: mes
  });
}

```

やはりプログラム1つ1つの意味が解読できないと、どこをどう変えればいいかわからない。

まずはJavascriptのプログラムの勉強からはじめる必要がありそう。


#工夫したこと

・目標達成に向けて順調に進んでいたら、褒める、労う。
・目標達成ノウハウで、たまに思い出したいものを、いつでも引き出せるようにする
・今月の残り日数を自動計算することで、目標達成の具体的なスケジュールを意識できるようにした

#今後の改善事項

・まずはapiを使ったプログラムを完成させる。
・状況に合わせて、効果的な問いが自動で出てくるようにしたい
・もっとリマインドしたい目標達成ノウハウを詰め込みたい
・計画をリスケしたら自動でgoogleカレンダーに入力されるようにしたい

今後、改善して、より実用的なものに繋げていこうと思います。


#まとめ

LINE BOTの勉強をはじめて３日でやってみましたが、
思いの外できた部分と、うまくいかない部分と味わった。


これからも色々チャレンジしながら、学んでいけたらと思います。