Line Notify でReplyする方法

Line Messaging API で画像を送る場合、現在の仕様的に直リンクされたurlを指定しないとできないみたいだが、 プライベートなものなどを誰でもアクセスできる場所にアップロードするのは気が引ける。

一方、Line Notifyでは画像アップロード機能が実装されたので、自前で何処かにアップロードする必要がなくなった。

Line Notifyは一方的に通知することしかできなさそうだけど、こちらからのメッセージにReplyさせることが出来れば便利そうな気がする。

Line Messaging APIとLine Notifyのアカウントを組み合わせることで、実現することができた。

順序としては

  1. Line Messaging APIのアカウントを作成する。これはこちらからのメッセージを検知するためだけに使用する。

  2. 作成したLine Messaging APIのアカウントを含めたグループを作成する。

  3. Line Notify で作成したグループに対するアクセストークンを取得する。

  4. 作成したグループにLine Notifyのアカウントを招待する。

3と4の順番を間違えるとエラーになったっぽい。

Google apps scriptでの実装はこちら

// LINE Notify の Access Tokenを設定 
var notify_access_token = "xxxxxxxxxxxxxxxxxxxxxxx";


// LINEから呼ばれる関数 
function doPost(e) {
  var events = JSON.parse(e.postData.contents).events;
  events.forEach(function(event) {
    if(event.type == "message"){
      lineNotify(event);
    }
 });
}
// LINE Notify での返信
function lineNotify(e) {
  var postData = {
    "message" : ((e.message.type=="text")? e.message.text : "Text以外")
  };
  var options = {
    "method" : "post",
    "headers" : {
      "Authorization" : "Bearer " + notify_access_token
    },
    "payload" : postData
  };

  UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}

エディタから公開→ウェブ アプリケーションの導入をクリックし、

プロジェクト バージョン:新規作成(更新したいときも「新規作成」を選択)

次のユーザーとしてアプリケーションを実行:自分

アプリケーションにアクセスできるユーザー:全員(匿名ユーザーを含む)

を選択して出てきた現在のウェブ アプリケーションの URLをコピーする。

その後、準備したLine Messaging API アカウントのLine DevelopersのEditを押してWebhook URLに貼り付け、verifyをクリックしSuccessと表示されることを確認する。

これでLine Notifyで返信することができた。