19
27

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アカウントだけで始めるLINEbot(Google Apps Script編)

Last updated at Posted at 2016-11-20

#この記事を書いた人
COBOLで昔ながらのシステムを開発保守するお仕事をしています。

そのため、
Webの知識はありません。
Web開発の経験もありません。
書いてあることは参考程度にしてください。

なにか間違っていたらご指摘ください。
がんばって直します。

#背景
LINEでメッセージを送信したり、受信内容に応じた返信をしたりできるAPI(LINE Messaging API)が2016年9月末に公開されました。
LINE Developer Trialに登録することで、個人でも無料で開発を行うことができるようになりました。

#やりたいこと
LINEbotを作りたい。
初心者がつまづきがちな環境構築をせずに(実際にはするけど非常に簡単)、
とりあえず動くモノを作りたい。

Googleが提供している言語「GoogleAppsScript」を使うことによって、
Webアプリの公開・プログラミング環境の構築が容易に行えます。
(GoogleAppsScriptはJavaScriptをベースにした開発言語なんだそうです)

まず、一番簡素な例として、
「どんなメッセージに対しても固定のメッセージを返す」ような機能を実現します。

#必要なもの

  • Googleのアカウント
    • Googleドライブ上にアプリケーション等を保存します。
  • LINEのアカウント
    • 普段使っているアカウントがあればよいです。
  • 時間(1時間くらい?)
    • ぼくの場合は諸々の登録~動作確認までで1時間ほどでした。

#準備

  • Googleアカウント登録
    • 説明しません。適当に登録してください。
  • LINEアカウント登録
    • 説明しません。適当に登録してください。
  • LINE Developer Trialの登録
  • LINE@ MANAGERの設定
    • アカウント選択 => アカウント設定 => Bot設定 で、次のように変更してください。
      • Webhook送信:利用する
      • Botのグループトーク参加:利用しない
      • 自動応答メッセージ:利用しない
      • 友だち追加時あいさつ:(どっちでもいいです)
  • LINE developersの設定
    • QRコードを読み込んで友達になっておく
    • Channel Access Token => ISSUE で発行された文字列をメモ(あとでコードに貼り付けます)

#さぁ、開発を始めましょう

#実現したい機能

  • 利用者から見た機能
    • LINEbotになにかしらを送ると、LINEbotから固定メッセージが返ってくる
  • 開発者から見た機能
    • 利用者からなにかしらが送られてくると、利用者に固定メッセージを返す

具体的には固定メッセージを「へんじがない。ただの しかばね のようだ。」としましょう。
image

アプリケーションを準備します。

Googleドライブ => 新規 => その他 => Google Apps Script
▼多分初回は選択肢にないので「アプリ追加」から「Google Apps Script」を追加します。
image

コード.gsを以下のように書き換えます。

利用者のなにかしらのアクション(メッセージ送信とかスタンプ送信とか)をキッカケに、
「へんじがない。ただの しかばね のようだ。」とメッセージを送信する、という内容です。

コード.gs
// xxx部分をChannel Access Token => ISSUE で発行された文字列に置き換える
var channel_access_token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 

function doPost(e) {
  var posted_json = JSON.parse(e.postData.contents);
  var events = posted_json.events;
  events.forEach(function(event) {
    var postData = {
      "replyToken" : event.replyToken,
      "messages" : [
        {
          "type" : "text",
          "text" : "へんじがない。ただの しかばね のようだ。"
        }
      ]
    };
    var options = {
      "method" : "post",
      "headers" : {
        "Content-Type" : "application/json",
        "Authorization" : "Bearer " + channel_access_token
      },
      "payload" : JSON.stringify(postData)
    };
    var reply = UrlFetchApp.fetch("https://api.line.me/v2/bot/message/reply", options);
  });
};

  • ファイルを保存する
    • ファイル => 保存
  • アプリケーションを公開する
    • 公開 => ウェブ アプリケーションの導入
      • プロジェクト バージョン:新規作成
        • 更新したいときも「新規作成」を選択
      • 次のユーザーとしてアプリケーションを実行:自分
      • アプリケーションにアクセスできるユーザー:全員(匿名ユーザーを含む)
      • [導入]
      • 現在のウェブ アプリケーションの URL:メモする

botとアプリケーションを連携します。

LINE developers => Basic information => Webhook URL
にさきほどメモしたURLを入力します。
[VERIFY]を押下して"Success"と表示されることを確認します。
※"Success"と表示されない場合、「アプリケーションにアクセスできるユーザー」や「現在のウェブ アプリケーションの URL」を確認してみてください。

botにメッセージを送信してみます。

返ってきたら成功です。

お疲れさまでした。

拡充する機能

やる気があったら更新します。

  • 返信内容の変更
    • オウム返しします。
    • 特定キーワードへの個別応答をします。
    • ランダムに返信します。
  • ログの取得
    • Googleスプレッドシートに保存します。
  • ユーザプロフィールの取得
    • Googleスプレッドシートに保存します。
  • 送信されたコンテンツの取得(画像・動画・音声)
    • Googleドライブに保存します。
  • 送信された位置情報から周辺地図画像の作成(GoogleMap)
    • 作成された周辺地図画像をGoogleドライブに保存します。
  • URLの短縮(GoogleUrlShortener)
    • URLが送信されてきたら、URLを短縮して返信します。
  • 簡単な数式の計算
    • 数式が送信されてきたら、Googleスプレッドシートに計算させて結果を返信します。

参考リンク

19
27
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
19
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?