こんにちは、皆さん!今回は、公式LINEアカウントを友達追加した際に、ユーザーのLINE IDをデータベースに保存する方法について解説していきます。LINEのMessaging APIを活用して、ユーザー情報を自動的に取得し、それを効率的にデータベースへ登録する仕組みを作ることができます。これにより、LINEを活用したマーケティングやユーザーサポートの強化が可能になりますよ。
これから、ステップごとに解説していくので、初心者の方でも安心して取り組める内容になっています。実際のコードも含めて具体的に説明しますので、ぜひ参考にしてみてください!
公式LINEアカウントでの友達追加イベントとデータベース保存
公式LINEアカウントでは、ユーザーが友達追加した際に「友達追加イベント」が発生します。このイベントをトリガーにして、ユーザーのLINE IDやプロフィール情報を取得し、データベースに保存するという流れを構築していきます。
まずは、必要な準備から始めましょう。
必要な準備
1. LINE Developers コンソールで公式アカウントを設定する
まず、LINE Developersコンソールにアクセスし、Messaging APIを使うためのチャネルを作成します。公式LINEアカウントを持っていない方は、新たに作成してください。
チャネルを作成したら、以下の情報を取得しておきます。
- チャネルID
- チャネルシークレット
- チャネルアクセストークン
2. Webhookの設定
次に、友達追加イベントが発生したときにサーバー側で処理を行うためのWebhookを設定します。サーバーを用意し、LINE公式アカウントからのリクエストを受け取るエンドポイントを作成します。このURLをLINE DevelopersコンソールでWebhook URLとして登録します。
Webアプリケーションの作成
次に、実際にLINEの友達追加イベントを処理するためのWebアプリケーションを構築します。今回はNode.jsとExpressを使った簡単なサーバーを作り、データベースにはMySQLを使ってユーザー情報を保存する仕組みを作ります。
必要なライブラリのインストール
npm init -y npm install express body-parser mysql2 @line/bot-sdk
このコマンドで必要なライブラリをインストールします。@line/bot-sdk
は、LINEのMessaging APIを扱うためのSDKです。
コードの実装
1. サーバーのセットアップ
以下のコードで、簡単なExpressサーバーをセットアップし、Webhookからのリクエストを受け取る部分を実装します。
const express = require('express'); const bodyParser = require('body-parser'); const mysql = require('mysql2'); const line = require('@line/bot-sdk'); const app = express(); app.use(bodyParser.json()); // LINE Botの設定 const config = { channelAccessToken: 'YOUR_CHANNEL_ACCESS_TOKEN', channelSecret: 'YOUR_CHANNEL_SECRET', }; // LINE SDKのクライアント const client = new line.Client(config); // MySQLの接続設定 const db = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'line_users', }); // Webhookエンドポイント app.post('/webhook', (req, res) => { const events = req.body.events; events.forEach(event => { if (event.type === 'follow') { handleFollowEvent(event); } }); res.sendStatus(200); }); // 友達追加イベントの処理 function handleFollowEvent(event) { const userId = event.source.userId; // LINE APIを使ってユーザー情報を取得 client.getProfile(userId) .then(profile => { // ユーザー情報をデータベースに保存 const query = 'INSERT INTO users (line_id, display_name) VALUES (?, ?)'; db.query(query, [profile.userId, profile.displayName], (err, results) => { if (err) { console.error(err); } else { console.log('User added:', profile.displayName); } }); }) .catch(err => { console.error('Error getting user profile:', err); }); } // サーバーを起動 app.listen(3000, () => { console.log('Server is running on port 3000'); });
2. LINEユーザー情報の取得
上記のコードでは、友達追加イベントが発生したときに、client.getProfile
を使ってユーザーのLINE IDと表示名を取得し、それをデータベースに保存しています。データベースに保存する際には、MySQLのINSERT INTO
文を使用しています。
データベースの準備
次に、MySQLデータベースを準備します。以下のSQL文を実行して、ユーザー情報を保存するテーブルを作成します。
CREATE DATABASE line_users; USE line_users; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, line_id VARCHAR(255) NOT NULL, display_name VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );
これで、ユーザー情報を保存するためのテーブルが準備できました。
実行結果
サーバーを実行した状態で、実際にLINEアカウントを友達追加してみると、以下のようにMySQLデータベースにユーザーのLINE IDと表示名が保存されます。
+----+------------------------+--------------+---------------------+ | id | line_id | display_name | created_at | +----+------------------------+--------------+---------------------+ | 1 | Uxxxxxxxxxxxxxxxxxxxxx | John Doe | 2024-10-07 12:34:56 | +----+------------------------+--------------+---------------------+
これで、友達追加時にLINE IDをデータベースに保存する処理が完成しました!
まとめ
今回は、公式LINEアカウントの友達追加イベントをトリガーにして、ユーザーのLINE IDや表示名をデータベースに保存する方法を紹介しました。この仕組みを使えば、LINEを使ったマーケティングやユーザー管理をより効率的に行うことができるようになります。
LINE Messaging APIは非常に強力で、さまざまな活用方法が考えられます。今回の基本的なデータ保存以外にも、ユーザーの行動に基づいたメッセージ送信や、リッチメニューのカスタマイズなど、幅広い機能を組み合わせて利用することができます。
次回も、実践的なLINE API活用術を紹介していきますので、どうぞお楽しみに!