Django ✕ LINE Messaging APIでメッセージを送信する関数を作成する
LINE Bot開発でリプライメッセージは必須というくらい多用しますが、いちいちメッセージを送信する部分を作成するのは面倒なので、今回は関数をどう定義するかを紹介します。
一例ですので、参考にとどめてもらえると幸いです。
目次
前提
この記事では以下の技術を使います:
- 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担当として様々システム構築などを行っています。今回、スタンプラリー作成でかなり大変だったということから、開発秘話…

コメント