Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
63
Help us understand the problem. What is going on with this article?
@t_gata

LINE BOTをGASで作成

More than 1 year has passed since last update.

はじめに

LINE BOTを作ってみた

  • 面白いことをやってみたかった
  • LINEという、普段使うツールで楽しさを求めてみた
  • gasを使った事がなかったので、試してみたかった
  • 注意→最近gasでスクリプトを作成する場合は、申請?が必要になった

必要なもの

  • googleアカウント
  • LINE developerアカウント

位でしょうか。。。
APIを使いたいなどあれば、別ですが、今回はこれだけで十分です。

コーディング

  • 今回は、特定の文字列が入力された際に、特定の返信を行えるように実装しました
//CHANNEL_ACCESS_TOKENを設定
//LINE developerで登録をした、自分のCHANNEL_ACCESS_TOKENを入れて下さい
var CHANNEL_ACCESS_TOKEN = 'YOU_ACCESS_TOKEN'; 
var line_endpoint = 'https://api.line.me/v2/bot/message/reply';

//ポストで送られてくるので、ポストデータ取得
//JSONをパースする
function doPost(e) {
  var json = JSON.parse(e.postData.contents);

  //返信するためのトークン取得
  var reply_token= json.events[0].replyToken;
  if (typeof reply_token === 'undefined') {
    return;
  }

  //送られたLINEメッセージを取得
  var user_message = json.events[0].message.text;  

  //返信する内容を作成
  var reply_messages;
  if ('かっこいい' == user_message) {
    //かっこいいと入力された際
    reply_messages = ['「' + user_message + '」ですね?\n' + '「' + user_message + '」はこちらになります。\n' + 'https://hogehoge.com',];

  } else if ('かわいい' == user_message) {
    //かわいいと入力された際
    reply_messages = ['「' + user_message + '」ですね?\n' + '「' + user_message + '」はこちらになります。\n' + 'https://hogehoge.com',];

  } else if ('普通' == user_message) {
    //普通と入力された際
    reply_messages = ['「' + user_message + '」ですね?\n' + '「' + user_message + '」はこちらになります。\n' + 'https://hogehoge.com',];

  } else {
    //かっこいい、かわいい、普通が入力されたときの処理
    reply_messages = ['「かっこいい」、「かわいい」、「普通」で入力してくださいね!'];
  }

  // メッセージを返信
  var messages = reply_messages.map(function (v) {
    return {'type': 'text', 'text': v};    
  });    
  UrlFetchApp.fetch(line_endpoint, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': reply_token,
      'messages': messages,
    }),
  });
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

上記で出来上がりです。
では実際にビルドしてみましょう。

  • ファイル→保存
  • 公開→WEBアプリケーションとして導入...
    • プロジェクトバージョン→新規作成
    • 次のユーザーとしてアプリケーションを実行→自分
    • アプリケーションにアクセスできるユーザー:全員(匿名ユーザーを含む)
    • 更新
  • ここで表示される現在のウェブアプリケーションのURLをメモ
    • のちのWebhook URLで設定します

実装は以上です!!

次に、LINE developerの用意

  • 色々なやり方があるみたいですが、現在は日本語に対応しているので割と簡単に登録が出来ます

LINE developerの設定

  • Webhook URLを設定する(要SSL通信)
    • Webhook URLはgasで作成したURLを設定します
      • LINE developerに登録をしてから、反映されるまで2~3時間位かかるみたいです
        • botにコメントを流して、レスポンスが返ってきたらOKです。
        • 次回以降は、ソースの更新を行えば、すぐに反映されます!
  • 待っている間に、設定を進めましょう!
    • 設定値は下記の通りでbotが出来ます
      • アカウント設定 > bot設定 でまずは「APIを利用する」
      • Webhook送信 「利用する」
      • 自動応答メッセージ 「利用しない」(お好きにどうぞです!)

設定は以上です!!

あとはとにかく遊んでみて、色々修正してみて下さい!
AIのAPIなども使えるので、もっと面白いbotが出来ると思います。
そこらへんは、次回の更新で出来れば。。。

63
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
63
Help us understand the problem. What is going on with this article?