1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

「公式Line」を使って介護の緊急メールを職場のメール宛先へ送ってみた

Posted at

これは何

個人で色々試行錯誤して公式LINEを利用した、介護の緊急時に職場へメールを送る仕組みができたので共有&ブラッシュアップしたいので、ご意見を是非ください!!

作成背景

  • 職場では私用携帯が使えない時がある(データセンター訪問時とか会議中)ので、社用携帯に通知をさせたかった
  • 家族の連絡手段が「LINE」なので「LINE」⇒「職場メールアドレスが受信」ができれば、私用携帯につながらないとき時の連絡経路を作っておきたかった

利用環境

  • LINE公式アカウント
    • 自分の私用LINEアカウントで開設
  • LINE Developers
    • 開設した個人のLINE公式アカウントと紐づける
  • GAS(Google Apps Script)
    • gmail送信用
    • WebhookURL(サーバー)用

準備

LINE公式アカウント

公式サイト通りに登録を進めていくだけ

LINE Developers

  1. LINE Developersへ登録
  2. 公式アカウント開設したアカウントと紐づけ

この記事がかなりわかりやすかったです

構築~稼働開始

初期動作確認

以下のプログラムをGASに実装&公開&WebhookURLを設定して応答確認

const ACCESS_TOKEN = 'ここにチャネルアクセストークン'
const REPLY_URL = 'https://api.line.me/v2/bot/message/reply';

function doPost(e) {
  let json = JSON.parse(e.postData.contents);
  let replytoken= json.events[0].replyToken;
  const userMessage = JSON.parse(e.postData.contents).events[0].message.text;
  Logger.log(json);
  if (typeof replytoken === 'undefined') {
    return;
  }
  let message = json.events[0].message.text;
  Logger.log(message);

  UrlFetchApp.fetch(REPLY_URL, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replytoken,
      'messages': [{
        'type': 'text',
        'text': '動作確認テスト',
      }],
    }),
  });
  
  return ContentService.createTextOutput(
    JSON.stringify({'content': 'post ok'})
  ).setMimeType(ContentService.MimeType.JSON);  

}

実行結果

LineBot1.jpg

特定の文字に反応して返答をするように修正

function doPost(e) {
  let json = JSON.parse(e.postData.contents);
  let replytoken= json.events[0].replyToken;
  const userMessage = JSON.parse(e.postData.contents).events[0].message.text;
  Logger.log(json);
  if (typeof replytoken === 'undefined') {
    return;
  }
  let message = json.events[0].message.text;
  Logger.log(message);

  if(userMessage == 'Help') {

    UrlFetchApp.fetch(REPLY_URL, {
      'headers': {
        'Content-Type': 'application/json; charset=UTF-8',
        'Authorization': 'Bearer ' + ACCESS_TOKEN,
      },
      'method': 'post',
      'payload': JSON.stringify({
        'replyToken': replytoken,
        'messages': [{
          'type': 'text',
          'text': '動作確認テスト',
        }],
      }),
    });
    
    return ContentService.createTextOutput(
      JSON.stringify({'content': 'post ok'})
    ).setMimeType(ContentService.MimeType.JSON);  
  }
}

実行結果

LineBot2.jpg

「リッチメニュー」を使って簡単に指定文字を送信

公式アカウントの「トークルーム管理」「リッチメニュー」でボタンを追加
⇒「テキスト」で「Help」の文字がボタンを押すだけで送信されるようにする

設定方法

LineBot3.jpg

LineBot4.jpg

設定結果

LineBot5.jpg

Gmailで職場の連絡先へ送信するようにプログラムを修正

function doPost(e) {
  let json = JSON.parse(e.postData.contents);
  let replytoken= json.events[0].replyToken;
  const userMessage = JSON.parse(e.postData.contents).events[0].message.text;
  Logger.log(json);
  if (typeof replytoken === 'undefined') {
    return;
  }
  let message = json.events[0].message.text;
  Logger.log(message);

  if(userMessage == 'Help') {
   sendEmail();
  }

}

function sendEmail(){
  let to = "******@****.jp";
  let subject = "介護用緊急連絡";
  let body = "家族より介護の緊急連絡が入りました。";

  MailApp.sendEmail(to, subject, body);
}

実行結果
LineBot6.jpg

よしできた~

作成した後の振り返り

  • Line⇒メールの手段はいくつかある(ZapierとかのSaaSサービス)が、公式LINEなら家族も使っているので受け入れやすかった
  • GAS側でCcを加えることができるので、複数人(介護関係者)に送るのができそう
  • サーバーいらなくてGmailをさくっと送信できるのは「GAS」の強みだなぁ

改善点

  1. GASのプロパティを使ってちょっとセキュリティ意識しよう、、
  2. 「MailApp.sendEmail()」⇒「UrlFetchApp.fetch()」という順番で実行させたかった、、
    • 同期処理の順番が分からなく、試行錯誤をしたがうまくいかなかったので「Gmailで職場の連絡先へ送信するようにプログラム」で運用開始
    • 以下の記事等を参考にして、「LINE」と「メール」の両方にメッセージが飛ぶようにしたい
    • https://qiita.com/tanaike/items/e6b3b43461bfdec8005b

ご精読ありがとうございました。

改善点とかこの箇所こうしたほうがいいよ随時コメントください!!

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?