前置き
Node.js + Express ベース
チュートリアルなど記事で既出ではあるが、ピンポイントにユーザー追加したい場合のTips
LINE のプッシュ通知のユーザーを追加するには
今の所、Webhookで取れるイベントオブジェクトからuserIdを取るしかない気がする
userIdを取得して使えるようになるまでの流れ
- Webhookアプリを用意する
- アプリケーションを公開する(Heroku, IBM Cloudなど)
- アプリケーションのURLをLINEのチャネルページのWebhookに登録する(この時、接続確認ボタンでWebhookが使えることを確認すること)
- 以下の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にて