PythonでLINE操作 LINE Messege API

Python

LINE Messaging API(LINEメッセージAPI)とは、LINEアプリを通じてメッセージの送受信を自動化できるAPI です

企業や開発者がこのAPIを利用することで、チャットボットの開発、通知の自動送信、ユーザーとの対話型サービス などを実装できます

今回は入門編として、Pythonファイルを実行するとLINEでメッセージを送れるコードを紹介します

LINE Messege APIの主な機能

  1. メッセージ送信
    • テキストメッセージ
    • 画像、動画、音声
    • スタンプ
    • ボタンやカルーセル(リッチメニュー)
  2. メッセージ受信
    • ユーザーからのメッセージをWebhookで受け取る
  3. 応答メッセージ
    • ユーザーからのメッセージに自動で返信する
  4. プッシュメッセージ
    • 特定のユーザーにメッセージを送信する(例:リマインダーや通知)
  5. リッチメニュー
    • ユーザーがタップできるカスタムメニューを作成
  6. 友だち追加イベント
    • ユーザーがLINE公式アカウントを友だち追加した際のアクションを設定可能

利用例

  • カスタマーサポートの自動化(FAQボット)
  • キャンペーン通知やクーポン配布
  • 予約システムの構築(例:レストラン、病院)
  • IoT機器との連携(例:LINEからエアコン操作)

LINE 公式アカウントを作成して Messaging API を有効化する方法

1. LINE 公式アカウントを作成

  1. LINE公式アカウント作成のページにアクセス
LINE Business ID
  1. 「LINE公式アカウントをはじめる」 をクリック
  2. LINEビジネスアカウント にログイン(個人のLINEアカウントでOK)
  3. 必要な情報(アカウント名、業種など)を入力し、公式アカウントを作成

2. Messaging API を有効化

  1. LINE Official Account Managerにログイン
  2. 作成した LINE 公式アカウントを開く
  3. 「設定」→「Messaging API」 を選択
  4. 「Messaging APIを利用する」ボタンをクリックして有効化

3. LINE Developers でチャネルアクセストークンを取得

  1. LINE Developersコンソールにログイン
LINE Developers
LINE Developersサイトは開発者向けのポータルサイトです。LINEプラットフォームのさまざまな開発者向けプロダクトを利用するための、管理ツールやドキュメントを利用できます。LINEログインやMessaging APIを活用して、...
  1. 「プロバイダー」 の一覧から、作成した LINE 公式アカウントに紐づいたプロバイダー を選択
  2. 「Messaging API設定」タブ を開く
  3. 「チャネルアクセストークン(長期)」を発行し、コピー

これでPythonファイルを実行するために必要な、チャネルアクセストークンを取得することができました


4.Pythonファイル作成

まずは.必要なライブラリをインストールします

pip install python-dotenv requests

つぎにenvファイルを作成して、環境変数に入力します

.envファイルの使い方は過去の記事で紹介していますので参考にしてください

LINE_ACCESS_TOKEN="チャネルアクセストークン"

実行するPythonファイルを作成します

今回は自分が毎朝やっているトレーニング動画を送信するプログラムを書きました

import requests
import os
from dotenv import load_dotenv

# .envファイルを読み込む
load_dotenv()

LINE_ACCESS_TOKEN = os.getenv("LINE_ACCESS_TOKEN")

# 送信するYouTube動画リスト
YOUTUBE_VIDEOS = [
    "https://youtu.be/xg74DLTw7ts",
    "https://youtu.be/RALLbdunkCQ",
]

def send_line_message():
    """LINEにYouTube動画のリンクを送信"""
    message = "📢 今日のトレーニング動画 🎥\n" + "\n".join(YOUTUBE_VIDEOS)

    url = "https://api.line.me/v2/bot/message/broadcast"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {LINE_ACCESS_TOKEN}"
    }
    data = {
        "messages": [{"type": "text", "text": message}]
    }

    response = requests.post(url, json=data, headers=headers)

    if response.status_code == 200:
        print("メッセージ送信成功")
    else:
        print(f"送信失敗: {response.text}")

if __name__ == "__main__":
    send_line_message()

5.コードの解説

必要なライブラリのインポート

import requests
import os
from dotenv import load_dotenv
  • requests:HTTPリクエストを送るためのライブラリ(LINE APIにリクエストを送るのに使用)
  • os:環境変数を取得するための標準ライブラリ
  • dotenv.load_dotenv():.envファイルから環境変数を読み込むための関数

.env ファイルの読み込み

load_dotenv()
  • .envファイルに保存された環境変数を読み込み、os.getenv() で取得できるようにする

LINEのアクセストークンを取得

LINE_ACCESS_TOKEN = os.getenv("LINE_ACCESS_TOKEN")
  • .envファイルから LINE_ACCESS_TOKEN を取得
  • LINE_ACCESS_TOKEN は、LINE APIにリクエストを送るための認証情報(トークン)

送信するYouTube動画のリスト

YOUTUBE_VIDEOS = [
    "https://youtu.be/xg74DLTw7ts",
    "https://youtu.be/RALLbdunkCQ",
]
  • YOUTUBE_VIDEOS に送信したいYouTube動画のURLをリストとして格納

LINEメッセージを送る関数

def send_line_message():
    """LINEにYouTube動画のリンクを送信"""
    message = "📢 今日のトレーニング動画 🎥\n" + "\n".join(YOUTUBE_VIDEOS)

    url = "https://api.line.me/v2/bot/message/broadcast"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {LINE_ACCESS_TOKEN}"
    }
    data = {
        "messages": [{"type": "text", "text": message}]
    }

    response = requests.post(url, json=data, headers=headers)

    if response.status_code == 200:
        print("メッセージ送信成功")
    else:
        print(f"送信失敗: {response.text}")

send_line_message() 関数を定義し、LINEにメッセージを送信する処理

  • “\n”.join(YOUTUBE_VIDEOS) でリスト内のYouTubeリンクを改行でつなげる
  • "📢 今日のトレーニング動画 🎥" を追加し、フォーマットを整える

LINEのMessaging APIにリクエストを送る

  • url: LINE APIの**ブロードキャスト(broadcast)**用エンドポイント
    • この公式アカウントに登録しているすべてのユーザーに一斉送信するAPI
  • headers: HTTPリクエストのヘッダー情報
    • “Authorization”: f”Bearer {LINE_ACCESS_TOKEN}” で認証情報を送る
  • data: 送信するメッセージのデータ

APIリクエストを送信

  • requests.post() を使い、LINE API に POST リクエストを送信

送信結果の確認

  • response.status_code == 200 の場合、送信成功メッセージを表示
  • それ以外の場合、response.text を表示し、エラーメッセージを確認

メイン処理の実行

if __name__ == "__main__":
    send_line_message()
  • if __name__ == “__main__”: でスクリプトが直接実行された場合のみ send_line_message() を実行
  • これにより、他のモジュールからインポートしたときに send_line_message() が勝手に実行されるのを防ぐ

これでPython実行してLINEでメッセージを送ることができました

ショップのメールマガジンのような使い方もできますし、すべてのユーザーの他に、特定のユーザーのみに、画像、動画、スタンプなども送ることができます

さらに次回以降の記事でこれを定期実行するようなシステムを紹介する予定です

コメント