Python転職初心者向けエンジニアリングブログ

Pythonに魅了されたあなたへ。エンジニアリングの扉を開く転職初心者向けのブログへようこそ。このブログでは、Pythonの奥深さに迫りながら、エンジニアリングへの転職に役立つ情報を提供しています。未経験者から始めるPythonエンジニアリングの世界への一歩を踏み出すためのガイダンス、ベストプラクティス、そして成功事例など、初心者の方でもわかりやすいコンテンツをお届けします。

公式LINEアカウントを友達追加した際に、ユーザーのLINE IDをデータベースに保存する方法

LYPプレミアム会員 python

こんにちは、皆さん!今回は、公式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活用術を紹介していきますので、どうぞお楽しみに!