メンチカツには醤油でしょ!!

AWS/Java/Node.js/Spreadsheets/Docker/Jenkins/コミュニティ・勉強会レポを主とした技術系ブログ

LINE Messaging APIのためにBotアカウントを追加した

経緯

ryoichi0102.hatenablog.com

アカウント追加の失敗編はこちら

ryoichi0102.hatenablog.com

手順

ログイン

ログインはこっちの方なんですよね。

f:id:ryoichi0102:20180913182146p:plain
https://developers.line.me/

ID・パスワード入力

f:id:ryoichi0102:20180913182401p:plain

場合によってはスマホのLINEアプリでパスコードを入力したりする必要があります。

プロバイダー名の部分クリック (作成ではない)

f:id:ryoichi0102:20180913092836p:plain

新規チャネル作成をクリック

f:id:ryoichi0102:20180913093143p:plain

チャネル選択ではMessaging APIをクリック

f:id:ryoichi0102:20180913093430p:plain

新規チャネル作成で必要事項を入力

アプリ名・アプリ説明・プラン・大業種・小業種・メールアドレスを入力します。
業種は今回はテスト用だったので、個人(その他)を選択。

f:id:ryoichi0102:20180913183003p:plain

同意

f:id:ryoichi0102:20180913183301p:plain

規約に同意して"作成"

f:id:ryoichi0102:20180913183534p:plain

作成されました

f:id:ryoichi0102:20180913183746p:plain

失敗編のLINE@アカウントの時と違って、LINEアプリ上では自動的に友達にはなってないので、詳細画面に飛んでQRコードから友達登録する必要があります。

Webhookの設定を行う 

"Webhook送信" を "利用する" に変更します。
"利用可能な機能" 欄にちゃんとPUSH_MESSAGEが入っていますね!
そしてWebhook URLを設定します。
ここで設定するURLでLINE Botに話しかけらたりしたデータやLINE Botアカウントが検知したBeaconのデータだったりを受け取ります。
なお、"自動応答メッセージ" は "利用しない" に設定します。

f:id:ryoichi0102:20180913185218p:plain

接続確認ボタンをクリック

下記のようなデータが送られてきます。

{
  "events": [
    {
      "replyToken": "00000000000000000000000000000000",
      "type": "message",
      "timestamp": 1536832520978,
      "source": {
        "type": "user",
        "userId": "Udeadbeefdeadbeefdeadbeefdeadbeef"
      },
      "message": {
        "id": "100001",
        "type": "text",
        "text": "Hello, world"
      }
    },
    {
      "replyToken": "ffffffffffffffffffffffffffffffff",
      "type": "message",
      "timestamp": 1536832520978,
      "source": {
        "type": "user",
        "userId": "Udeadbeefdeadbeefdeadbeefdeadbeef"
      },
      "message": {
        "id": "100002",
        "type": "sticker",
        "packageId": "1",
        "stickerId": "1"
      }
    }
  ]
}

たとえばAWSAPI Gateway + Lambdaの構成で下記のようなコードを書いておけば簡単にログが確認できます。

exports.handler = async (event) => {
  console.log(JSON.stringify(JSON.parse(event.body)));

  const response = {
      statusCode: 200,
      body: JSON.stringify('Hello from Lambda!')
  };
  return response;
};

LINE@MANAGERからもPUSH_MESSAGEが有効になっているのが確認できます。

f:id:ryoichi0102:20180913191922p:plain

各種設定

Beaconの設定はコチラ

ryoichi0102.hatenablog.com