LoginSignup
4
17

More than 3 years have passed since last update.

LINE BOTを作りたいのでLINE Messaging APIについて調べる

Last updated at Posted at 2020-06-21

目的

必要な情報をいろいろと通知してくれる自分用 & 友人用LINE BOTを作りたい

LINE bot アカウントの作成と、2種類のbot作成方法

LINE bot アカウント作成

Messaging APIを利用するには | LINE Developersに記載のある通り、LINE Developersからポチポチっとアカウントを作成する。

プロバイダー = botの管理者であるので、ここは自身の情報を入力。その後、bot アカウントとなる"チャネル"を作成。なお、作成には普通のLINEアカウントが必要。

LINEアカウント -> プロバイダー -> チャネルという関係性があり、プロバイダー/チャネルとも作り直しが可能なので適当な情報でもよい。

2種類のbot作成方法

LINE管理画面で簡易的に作成する方法と、Messaging APIを使って開発する方法がある。

LINE管理画面の場合、LINE Official Account Managerから作成するが、定型的なあいさつメッセージ+αしか作成できないので、Messaging APIを使って開発する。

Messaging APIの費用

【公式】LINE公式アカウントの運用費用は?料金プランを解説!
image.png

ユーザーから受け取ったメッセージに対する返信は無料で、課金対象はMessaging APIの「Push API」「Multicast API」「Broadcast API」。Multicast/Broadcastでユーザーが100人いた時は100通とカウントされるのか?は確認中(多分されそう)

家族や友人間ならフリープランで問題なさげだが、通知メッセージが多くなってしまうときは要注意。

Messaging APIの仕組み

クイックスタートはこちら。
Messaging APIの概要 | LINE Developers

リファレンスはこちら。
Messaging APIリファレンス | LINE Developers

エンドユーザーからのメッセージの受信

文字で図解するとこうなる。

エンドユーザー → LINE bot アカウント -> [HTTPリクエスト] -> [開発者が用意するサーバー]

LINE bot アカウントが送信するHTTPリクエストの内容はリファレンスに掲載されている。例えば単純なテキストメッセージだとこんな感じ。

Messaging APIリファレンス | LINE Developers

{
  "replyToken": "nHuyWiB7yP5Zw52FIkcQobQuGDXCTA",
  "type": "message",
  "mode": "active",
  "timestamp": 1462629479859,
  "source": {
    "type": "user",
    "userId": "U4af4980629..."
  },
  "message": {
    "id": "325708",
    "type": "text",
    "text": "Hello, world! (love)",
    "emojis": [
      {
        "index": 14,
        "length": 6,
        "productId": "5ac1bfd5040ab15980c9b435",
        "emojiId": "001"
      }
    ]
  }
}

エンドユーザーへのメッセージ返信

文字で図解するとこうなる。メッセージ受信と逆なだけですね。

エンドユーザー <- LINE bot アカウント <- [HTTPリクエスト] <- [開発者が用意するサーバー]

Messaging APIリファレンス | LINE Developers


const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '<channel access token>'
});

const message = {
  type: 'text',
  text: 'Hello World!'
};

client.replyMessage('<replyToken>', message)
  .then(() => {
    ...
  })
  .catch((err) => {
    // error handling
  });

エンドユーザーへの単純メッセージ送信

上記はエンドユーザーの送信に対する返信だったが、単純に通知などを送る場合はこれでよい。

エンドユーザー <- LINE bot アカウント <- [HTTPリクエスト] <- [開発者が用意するサーバー]

Messaging APIリファレンス | LINE Developers


const line = require('@line/bot-sdk');

const client = new line.Client({
  channelAccessToken: '[チャネルアクセストークン]'
});

const message1 = {
  type: 'text',
  text: 'Hello,'
};

const message2 = {
  type: 'text',
  text: 'World!'
};

client.broadcast([message1, message2])

結果、こうなる。
image.png

何を使って実装するか?

このご時世にbotのためだけにOS入りのサーバー用意する奴はおらんやろ、ということでいろんな手法が紹介されています。

Google App Script

私は使ったことはないですが、簡易にjavascriptを実行できるGoogle App Scriptなど。

Azure Logic Apps

ローコードツールであるLogic Apps/Power Automate。

その他、サーバーレス系

公式はHerokuで実装しています。

Herokuでサンプルボットを作成する | LINE Developers

4
17
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
4
17