45
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Google Apps Scriptを使ってLINE Messaging APIでオウム返しをする

Last updated at Posted at 2016-10-30

Line BotをGoogle App Scriptで無料で手軽に試してみる。
http://qiita.com/osamu1203/items/0de2909821a1b3cbb350

こちらの記事を参考にLine Botを運用していたのですが、BOT API Trial Account廃止の通達がありました。
そこで、LINE Messaging APIの動作確認も兼ねて、オウム返しをするBotを作成しました。

#LINE準備
https://business.line.me/ja/services/bot
Messaging APIを始める
で適当に入力してアカウントを作る。

さらにオウム返しをするため
LINE@ MANAGER にてアカウント選択 > アカウント設定 > Bot設定
Webhook送信:利用する
自動応答メッセージ:利用しない

#アプリケーション準備
Googleドライブ > 新規作成 > Google Apps Script

bot.gs
// LINE Developers > Basic Information > Channel Access Token から取得
var channel_access_token = "<Channel Access Token>"; 

function doPost(e) {
  var events = JSON.parse(e.postData.contents).events;
  events.forEach(function(event) {
    if(event.type == "message"){lineReply(event);}
    else if(event.type == "follow"){ /* 友だち追加・ブロック解除 */ }
    else if(event.type == "unfollow"){ /* ブロック */ }
 });
}

function lineReply(e) {
  var postData = {
    "replyToken" : e.replyToken,
    "messages" : [
      {
        "type" : "text",
        "text" : ((e.message.type=="text")? e.message.text : "Text以外")
      }
    ]
  };
  
  var options = {
    "method" : "post",
    "headers" : {
      "Content-Type" : "application/json",
      "Authorization" : "Bearer " + channel_access_token
    },
    "payload" : JSON.stringify(postData)
  };
  
  UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options);
}

ファイル > 保存
公開 > ウェブ アプリケーションの導入
プロジェクト バージョン:新規作成
アプリケーションにアクセスできるユーザー:全員(匿名ユーザーを含む)
導入ボタンを押すと「現在のウェブ アプリケーションのURL」が分かる。
このURLを
LINE developers > Basic information > Webhook URL
に設定する。

#botを友だち追加
LINE developers > Basic information > QR Code
のQRコードをスマホで読み取り、友だちに追加。
botに話しかけるとオウム返しをします。
QRコードに書かれたURLを他に教えれば、誰でもbotを友だちに登録できると思います。

#その他・悩んだところ

  • 上記コード上では友だち追加時に何もしない処理になってますが、このタイミングでuserIdをスプレッドシートにでも記録しておけばプッシュ通知も簡単にできる(と思います)。

  • 今のところServer IP Whitelistは指定しなくても動きます。

  • webhookのリクエストヘッダにX-Line-Signatureがあるそうなのですが、Google Apps ScriptのdoPostでは取得できないんでしょうか?

  • botに関わるLINEの設定がLINE@ MANAGER、LINE developersの2箇所に分かれているのがややこしい。

45
41
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
45
41

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?