5
0

More than 3 years have passed since last update.

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

Posted at

はじめに

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

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

コーチング用LINE BOTの意図

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

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

結果できたLINE BOT

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

8619_0.jpg

"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 = "6つの変数<質・量・納期・方法・代替・金>どこ変えますか?";
  }

  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で明日の天気を取得し、明日の行動スケジュールを立てやすくしようとしたが、うまくいかなかった。

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


 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の勉強をはじめて3日でやってみましたが、
思いの外できた部分と、うまくいかない部分と味わった。

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

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0