MENU
  • ホーム
  • サービス
  • 記事一覧
  • お問い合わせ
プログラミングやサーバー設定など様々な内容を紹介しています。
HIROTRONの部屋
  • ホーム
  • サービス
  • 記事一覧
  • お問い合わせ
HIROTRONの部屋
  • ホーム
  • サービス
  • 記事一覧
  • お問い合わせ
  1. ホーム
  2. Django
  3. Django ✕ LINE Messaging APIでメッセージを送信する関数を作成する

Django ✕ LINE Messaging APIでメッセージを送信する関数を作成する

2025 11/30
Django LINE_Messaging_API
2025年12月1日

Django ✕ LINE Messaging APIでメッセージを送信する関数を作成する

LINE Bot開発でリプライメッセージは必須というくらい多用しますが、いちいちメッセージを送信する部分を作成するのは面倒なので、今回は関数をどう定義するかを紹介します。
一例ですので、参考にとどめてもらえると幸いです。

あわせて読みたい
Messaging APIリファレンス

目次

  前提

この記事では以下の技術を使います:

  • Django
  • LINE Messaging API

  メッセージの定義の一例

リプライメッセージを1つ送る

関数の定義

# リプライメッセージを送信する関数
def reply_message(reply_token, message):
    url = "https://api.line.me/v2/bot/message/reply"
    headers = {"Content-Type": "application/json", "Authorization": f"Bearer {LINE_CHANNEL_ACCESS_TOKEN}"}
    
    data = {
        "replyToken": reply_token,
        "messages": [{"type": "text", "text": message}]
    }
    response = requests.post(url, headers=headers, json=data)
    if response.status_code != 200:
        print(response.status_code, response.text)
    return response

関数の使用

reply_message(reply_token, f"{user.name}さん、こんにちは!スタンプを探しに行きましょう🎵")

表示例:

リプライメッセージを複数送る

関数の定義

# リプライメッセージを複数送信する関数
def reply_multi_message(reply_token, messages):
    url = "https://api.line.me/v2/bot/message/reply"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {LINE_CHANNEL_ACCESS_TOKEN}"
    }

    # 複数テキストメッセージを生成
    text_messages = [{"type": "text", "text": msg} for msg in messages]

    data = {
        "replyToken": reply_token,
        "messages": text_messages
    }

    response = requests.post(url, headers=headers, json=data)
    if response.status_code != 200:
        print(response.status_code, response.text)
    return response

関数の使用

messages = ["1つ目のメッセージ",
            "2つ目のメッセージ",
            "3つ目のメッセージ"]

reply_multi_message(reply_token, messages)

表示例:

Flex Messageを1つ送る

関数の定義

# Flex_Messageを送信する関数
def reply_flex_message(reply_token, alt_text, flex_message):
    url = "https://api.line.me/v2/bot/message/reply"
    headers = {"Content-Type": "application/json", "Authorization": f"Bearer {LINE_CHANNEL_ACCESS_TOKEN}"}
    
    data = {
        "replyToken": reply_token,
        "messages": [{
            "type": "flex",
            "altText": alt_text,
            "contents": flex_message
        }]
    }
    response = requests.post(url, headers=headers, json=data)
    if response.status_code != 200:
        print(response.status_code, response.text)
    return response

関数の使用

privacy_policy_message = {
    "type": "bubble",
    "body": {
        "type": "box",
        "layout": "vertical",
        "contents": [
            {
                "type": "text",
                "weight": "bold",
                "size": "xl",
                "text": "利用規約"
            },
            {
                "type": "text",
                "text": "プライバシーポリシーと利用規約への同意確認",
                "wrap": True
            },
            {
                "type": "box",
                "layout": "vertical",
                "spacing": "md",
                "contents": [
                    {
                        "type": "button",
                        "style": "secondary",
                        "action": {
                            "type": "uri",
                            "label": "利用規約を読む",
                            "uri": f"{settings.BASE_URL}/stamp/terms-of-service/"
                        }
                    },
                    {
                        "type": "button",
                        "style": "secondary",
                        "action": {
                            "type": "uri",
                            "label": "プライバシーポリシーを読む",
                            "uri": f"{settings.BASE_URL}/stamp/privacy-policy/"
                        }
                    },
                    {
                        "type": "button",
                        "style": "primary",
                        "color": "#4CAF50",
                        "action": {
                            "type": "message",
                            "label": "利用規約に同意して進む",
                            "text": "利用規約に同意して進む"
                        }
                    }
                ],
                "offsetTop": "md"
            }
        ]
    }
}
reply_flex_message(reply_token, "利用規約の確認", privacy_policy_message)

使用例:

1つのメッセージとFlex Messageを送る

関数の定義

# メッセージとFlex Messageを送信する関数
def reply_two_message(reply_token, first_message, alt_text, flex_message):
    url = "https://api.line.me/v2/bot/message/reply"
    headers = {"Content-Type": "application/json", "Authorization": f"Bearer {LINE_CHANNEL_ACCESS_TOKEN}"}
    
    data = {
        "replyToken": reply_token,
        "messages": [
            {
                "type": "text", 
                "text": first_message
            },
            {
                "type": "flex",
                "altText": alt_text,
                "contents": flex_message
            }
        ]
    }
    response = requests.post(url, headers=headers, json=data)
    if response.status_code != 200:
        print(response.status_code, response.text)
    return response

関数の使用(Flex Message部分は省略)

first_message = "はじめまして!\n友だち追加ありがとうございます"
name_message = {Flex MessageのJSON}

reply_two_message(reply_token, first_message, "ニックネームを教えて下さい", name_message)
あわせて読みたい
第1話:WordPressじゃ物足りない!?LINE✕鬼太鼓スタンプラリー開発のはじまり 私は、友達の紹介でさどんでこプロジェクトのIT担当として様々システム構築などを行っています。今回、スタンプラリー作成でかなり大変だったということから、開発秘話…
Django LINE_Messaging_API
Django LINE LINE Messaging API
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • Django ✕ LINE Messaging APIで簡易的なユーザー登録を作成する②
  • Django ✕ LINE Messaging APIで画像やマップを送信する関数を作成する

この記事を書いた人

hiroto121022のアバター hiroto121022

医学生でありながら、さどんでこプロジェクトのITリーダーを務めるフルスタック開発者。LINE BotやGPS連携スタンプラリー、NFT販売サイトなどをすべて独学で開発。使用言語はPython、Typescript、Javascript。Django、Next.js、Reactなどのフレームワークを駆使し、サーバー構築・デプロイ・SSL対応まで一貫して担当。AIによるアートのアニメーション化にも取り組み、伝統文化とテクノロジーを融合させた新しい地域体験の創出に挑戦している。

関連記事

  • Django ✕ LINE Messaging APIでWebhookの設定の方法を解説
    2025年12月4日
  • Django ✕ LINE Messaging APIでPush送信とBroadcast送信の関数を作成する
    2025年12月3日
  • Django ✕ LINE Messaging APIで画像やマップを送信する関数を作成する
    2025年12月1日
  • Django ✕ LINE Messaging APIで簡易的なユーザー登録を作成する②
    2025年11月30日
  • Django ✕ LINE Messaging APIで簡易的なユーザー登録を作成する①
    2025年11月30日
  • Django ✕ LINE Messaging APIでローディングアニメーションを出す方法
    2025年6月25日
  • 第4話:位置情報でスタンプ獲得!LIFFとLINE Botの連携の裏側
    2025年6月22日
  • 第3話:地図の中にスタンプ!?Google Maps × Django管理画面の作成
    2025年6月22日

コメント

コメントする コメントをキャンセル


hiroto121022
医学生でありながら、さどんでこプロジェクトのITリーダーを務めるフルスタック開発者。LINE BotやGPS連携スタンプラリー、NFT販売サイトなどをすべて独学で開発。使用言語はPython、Typescript、Javascript。Django、Next.js、Reactなどのフレームワークを駆使し、サーバー構築・デプロイ・SSL対応まで一貫して担当。
GitHub
新着記事
  • ISDBScannerをCATVに対応させてみた 録画鯖
  • Dockerで構築したWordPressの最大アップロードサイズを変更する。一時しのぎと永久的な対処を紹介
  • Docker Composeで依存関係に関係なく、コンテナを再構築する方法
  • VMwareのvdmkファイルを分割する方法
  • 例のRTX3080 20Gを中国から購入してみた。AI生成に最適だった!

© HIROTRONの部屋.

目次