shirasud dev

PjM兼Webエンジニアのつぶやき

家事のやる気を出すために褒められたらのびるLINEbotつくった

f:id:shirasud:20190419002013j:plain

最近遊び心が足りないなと思いLINEbotをつくりました

家事をしたらポイントがたまる・褒めてもらえる・ボーナスと交換できるって感じです

Herokuは応答が微妙そうなんでGASでつくりました

つくった機能

f:id:shirasud:20190419010952j:plain

  • 家事するとポイントがたまる
  • 感謝の言葉送るとポイントがプレゼントできる
  • ポイントボーナスを追加できる
  • ポイントでボーナスと交換できる

ざっくりこんな感じで、返信にはreplyTokenが必須のためbotの方から通知を送る実装はしてません。LINE Notifyとかでできるのかな

LINE Developersの登録

こちらがわかりやすかったです

特に設定に困ることはないくらいシンプルです

qiita.com

Google App Scriptの設定

基本的にはこちらのdoPost関数つくるだけ

qiita.com

あとはメッセージごとにアクションを分岐させてって感じでいけます

// 単語とアクションの一覧
// シートで定義してもいいかも
var routes = {
  'ありがとう': 'presentAction',
  '洗濯': 'addPointAction',
};

// メッセージからアクションを判別
function getAction(message) {
  var action = {
    'hit': null,
    'method': null,
  };
  
  for(key in routes) {
    if(message.indexOf(key) != -1) {
      action.hit = key;
      action.method = routes[key];

      break;
    }
  }
  
  return action;
}

// テスト
function getActionTest() {
  Logger.log(getAction('洗濯した')); 
  // --> {hit=洗濯, method=addPointAction}
  
  Logger.log(getAction('洗濯ありがとう')); 
  // --> {hit=ありがとう, method=presentAction}

  return;
}

少しハマったのは公開の度にプロジェクトバージョンをnewにしないとソースが更新されないことくらい

あと制約としてモダンなJSは動かないです

clasp使えやって話ですね、すいません

まとめ

  • 超簡単
  • 家事のやる気ちょっとだけわいた
  • ちょっといいねもらえた