2
1

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.

LINE の Messaging API アプリで通知対象のユーザーを追加するには?

Last updated at Posted at 2018-07-18

前置き

Node.js + Express ベース
チュートリアルなど記事で既出ではあるが、ピンポイントにユーザー追加したい場合のTips

LINE のプッシュ通知のユーザーを追加するには

今の所、Webhookで取れるイベントオブジェクトからuserIdを取るしかない気がする

userIdを取得して使えるようになるまでの流れ

  1. Webhookアプリを用意する
  2. アプリケーションを公開する(Heroku, IBM Cloudなど)
  3. アプリケーションのURLをLINEのチャネルページのWebhookに登録する(この時、接続確認ボタンでWebhookが使えることを確認すること)
  4. 以下のSnippetの場合は、コンソールログに吐き出されるので、idを通知先に加えておく

Snippet

// app.js

// LINE から来たEvent オブジェクトをハンドリングし、
// 中にあるidを抜き取る
function handleWebhookEvent(event) {
// ユーザーがbotをフォローしたタイミングでこのifに入る
    if( event.type === 'follow') {
      console.log('[Follow]: ', event.source.userId);
    }
    return Promise.resolve(null);
}

function webhook(req, res, next) {
  console.log("Received Event from LINE");
  Promise.all(req.body.events.map(handleWebhookEvent))
  .then((result) => res.json(result))
  .catch((err) => {
    console.error(err);
    res.status(500).end();
  });
}

app.post('/callback', webhook);

補足

  • 今回はFollowのイベントのみ取っているが、メッセージ投稿などのイベントでも取れるので、もうフォローした後でも取得は可能
  • Webhookアプリと通知アプリが一体化している場合、userIdの配列を用意し、取れたidがもしリストに入っていなければ、追加するといった実装がいいだろう
  • Webhookアプリと通知アプリが別れている場合、通知アプリの方でRESTのAPIを用意し、Webhookでid取れた時点でそのAPIをコールする形がいいかもしれない
  • クラウドサービス上にアプリをデプロイする手順は参考Linkにて

参考Link

Herokuでサンプルボットを作成する
IBM Cloud(旧Bluemix)にExpressをデプロイする方法

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?