Python, LINE BOT에서 일제 전송
16340 단어 LINEmessagingAPI경 6파이썬Python3
개요
전회 작성한 LINEbot을 바탕으로 일제히 송신 붙여 정리하고 싶습니다
일제히 송신 (브로드 캐스트 메시지)
이번은 이쪽 사이트를 참고로 했습니다.
htps : // 코 m / 히로 0236 / ms / 649d90654d7807b2d55
사이트에 있는 브로드캐스트 메시지의 소스 코드를 끌어왔습니다.
from linebot import LineBotApi
from linebot.models import TextSendMessage
CHANNEL_ACCESS_TOKEN = "チャネルアクセストークンを設定"
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
def main():
messages = TextSendMessage(text="ブロードキャストテスト")
line_bot_api.broadcast(messages=messages)
if __name__ == "__main__":
main()
위의 소스 코드
1. 채널 액세스 토큰 설정
2. 「main」이라고 하는 곳을 Webhook URL(간단하게 말하면 LINE으로부터 불려 가는 URL)
로 설정되어 있는 callback( 이전 기사 를 참조해 주세요)로 변경
그런 다음 Heroku에 설치하면 친구 등록 된 모든 사람에게 "브로드 캐스트 테스트"라는 메시지가 전송됩니다.
기능 추가
전회까지 작성한, LINE BOT에 이 브로드캐스트 기능을 추가해 가고 싶습니다.
main.pyfrom flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
import os
app = Flask(__name__)
#環境変数取得
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)
# 新商品をpromotion_contentに入れる
promotion_content = "話題の新商品"
@app.route("/")
def promotion():
# 宣伝があればPromotionに入力して一斉送信
if promotion_content != "":
messages = TextSendMessage(text=promotion_content)
line_bot_api.broadcast(messages=messages)
return "宣伝完了"
@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
# "赤ちゃん"というメッセージが送られてきた場合
# 指定のリンクを送信する。
if event.message.text == "赤ちゃん":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="https://akachan.omni7.jp/top"))
# "ママ"というメッセージが送られてきた場合
# 指定のリンクを送信する。
elif event.message.text == "ママ":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="https://akachan.omni7.jp/basic/A01?intpr=ah_frmng_top_headnav_cate"))
# "ベビー"というメッセージが送られてきた場合
# 指定のリンクを送信する。
elif event.message.text == "ベビー":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="https://akachan.omni7.jp/basic/A02?intpr=ah_frmng_top_headnav_cate"))
# "新商品"というメッセージが送られてきた場合
# 新商品テキストを送信する。
elif event.message.text == "新商品":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=promotion_content))
# 特定の文字列以外はオウム返しする。
else:
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
if __name__ == "__main__":
# app.run()
port = int(os.getenv("PORT"))
app.run(host="0.0.0.0", port=port)
어디에 추가했는지 알기 어려울지도 모르지만 아래 부분이 변경되었습니다.
# 新商品をpromotion_contentに入れる
promotion_content = "話題の新商品"
@app.route("/")
def promotion():
# 宣伝があればPromotionに入力して一斉送信
if promotion_content != "":
messages = TextSendMessage(text=promotion_content)
line_bot_api.broadcast(messages=messages)
return "宣伝完了"
이 「@app.route("/")」라고 하는 것은 커멘드로 「heroku open」이라고 불려지는 메소드로, 내용은 promotion_content에 신상품(특히 이유는 없습니다만 이번은 텍스트의 회신)의 이름을 넣어 , 'heroku open'을 하면 친구가 등록된 계정으로 신제품이 전송되고 브라우저에 '홍보 완료'가 표시됩니다.
또, 지정 메세지 「신상품」에 대해 「promotion_content」를 회신하도록(듯이) 하는 것으로, 손님으로부터도 신상품을 조사할 수 있도록(듯이)도 할 수 있습니다.
# "新商品"というメッセージが送られてきた場合
# 新商品テキストを送信する。
elif event.message.text == "新商品":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=promotion_content))
요약
이번에는 신상품마다 Heroku에 배포해야 하기 때문에 숨겨진 코드 등을 사용하여 자신의 스마트 폰에서 신상품의 메시지를 보내고 거기에서 일제히 보내도 좋을까 생각했습니다! (보안상 수상하지만,,, 웃음)
참고문헌
Reference
이 문제에 관하여(Python, LINE BOT에서 일제 전송), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/adgjmptw0/items/fa7bd0d039eb6b2e4bfe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번은 이쪽 사이트를 참고로 했습니다.
htps : // 코 m / 히로 0236 / ms / 649d90654d7807b2d55
사이트에 있는 브로드캐스트 메시지의 소스 코드를 끌어왔습니다.
from linebot import LineBotApi
from linebot.models import TextSendMessage
CHANNEL_ACCESS_TOKEN = "チャネルアクセストークンを設定"
line_bot_api = LineBotApi(CHANNEL_ACCESS_TOKEN)
def main():
messages = TextSendMessage(text="ブロードキャストテスト")
line_bot_api.broadcast(messages=messages)
if __name__ == "__main__":
main()
위의 소스 코드
1. 채널 액세스 토큰 설정
2. 「main」이라고 하는 곳을 Webhook URL(간단하게 말하면 LINE으로부터 불려 가는 URL)
로 설정되어 있는 callback( 이전 기사 를 참조해 주세요)로 변경
그런 다음 Heroku에 설치하면 친구 등록 된 모든 사람에게 "브로드 캐스트 테스트"라는 메시지가 전송됩니다.
기능 추가
전회까지 작성한, LINE BOT에 이 브로드캐스트 기능을 추가해 가고 싶습니다.
main.pyfrom flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
import os
app = Flask(__name__)
#環境変数取得
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)
# 新商品をpromotion_contentに入れる
promotion_content = "話題の新商品"
@app.route("/")
def promotion():
# 宣伝があればPromotionに入力して一斉送信
if promotion_content != "":
messages = TextSendMessage(text=promotion_content)
line_bot_api.broadcast(messages=messages)
return "宣伝完了"
@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
# "赤ちゃん"というメッセージが送られてきた場合
# 指定のリンクを送信する。
if event.message.text == "赤ちゃん":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="https://akachan.omni7.jp/top"))
# "ママ"というメッセージが送られてきた場合
# 指定のリンクを送信する。
elif event.message.text == "ママ":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="https://akachan.omni7.jp/basic/A01?intpr=ah_frmng_top_headnav_cate"))
# "ベビー"というメッセージが送られてきた場合
# 指定のリンクを送信する。
elif event.message.text == "ベビー":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="https://akachan.omni7.jp/basic/A02?intpr=ah_frmng_top_headnav_cate"))
# "新商品"というメッセージが送られてきた場合
# 新商品テキストを送信する。
elif event.message.text == "新商品":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=promotion_content))
# 特定の文字列以外はオウム返しする。
else:
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
if __name__ == "__main__":
# app.run()
port = int(os.getenv("PORT"))
app.run(host="0.0.0.0", port=port)
어디에 추가했는지 알기 어려울지도 모르지만 아래 부분이 변경되었습니다.
# 新商品をpromotion_contentに入れる
promotion_content = "話題の新商品"
@app.route("/")
def promotion():
# 宣伝があればPromotionに入力して一斉送信
if promotion_content != "":
messages = TextSendMessage(text=promotion_content)
line_bot_api.broadcast(messages=messages)
return "宣伝完了"
이 「@app.route("/")」라고 하는 것은 커멘드로 「heroku open」이라고 불려지는 메소드로, 내용은 promotion_content에 신상품(특히 이유는 없습니다만 이번은 텍스트의 회신)의 이름을 넣어 , 'heroku open'을 하면 친구가 등록된 계정으로 신제품이 전송되고 브라우저에 '홍보 완료'가 표시됩니다.
또, 지정 메세지 「신상품」에 대해 「promotion_content」를 회신하도록(듯이) 하는 것으로, 손님으로부터도 신상품을 조사할 수 있도록(듯이)도 할 수 있습니다.
# "新商品"というメッセージが送られてきた場合
# 新商品テキストを送信する。
elif event.message.text == "新商品":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=promotion_content))
요약
이번에는 신상품마다 Heroku에 배포해야 하기 때문에 숨겨진 코드 등을 사용하여 자신의 스마트 폰에서 신상품의 메시지를 보내고 거기에서 일제히 보내도 좋을까 생각했습니다! (보안상 수상하지만,,, 웃음)
참고문헌
Reference
이 문제에 관하여(Python, LINE BOT에서 일제 전송), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/adgjmptw0/items/fa7bd0d039eb6b2e4bfe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, TextMessage, TextSendMessage,
)
import os
app = Flask(__name__)
#環境変数取得
YOUR_CHANNEL_ACCESS_TOKEN = os.environ["YOUR_CHANNEL_ACCESS_TOKEN"]
YOUR_CHANNEL_SECRET = os.environ["YOUR_CHANNEL_SECRET"]
line_bot_api = LineBotApi(YOUR_CHANNEL_ACCESS_TOKEN)
handler = WebhookHandler(YOUR_CHANNEL_SECRET)
# 新商品をpromotion_contentに入れる
promotion_content = "話題の新商品"
@app.route("/")
def promotion():
# 宣伝があればPromotionに入力して一斉送信
if promotion_content != "":
messages = TextSendMessage(text=promotion_content)
line_bot_api.broadcast(messages=messages)
return "宣伝完了"
@app.route("/callback", methods=['POST'])
def callback():
# get X-Line-Signature header value
signature = request.headers['X-Line-Signature']
# get request body as text
body = request.get_data(as_text=True)
app.logger.info("Request body: " + body)
# handle webhook body
try:
handler.handle(body, signature)
except InvalidSignatureError:
abort(400)
return 'OK'
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
# "赤ちゃん"というメッセージが送られてきた場合
# 指定のリンクを送信する。
if event.message.text == "赤ちゃん":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="https://akachan.omni7.jp/top"))
# "ママ"というメッセージが送られてきた場合
# 指定のリンクを送信する。
elif event.message.text == "ママ":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="https://akachan.omni7.jp/basic/A01?intpr=ah_frmng_top_headnav_cate"))
# "ベビー"というメッセージが送られてきた場合
# 指定のリンクを送信する。
elif event.message.text == "ベビー":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="https://akachan.omni7.jp/basic/A02?intpr=ah_frmng_top_headnav_cate"))
# "新商品"というメッセージが送られてきた場合
# 新商品テキストを送信する。
elif event.message.text == "新商品":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=promotion_content))
# 特定の文字列以外はオウム返しする。
else:
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=event.message.text))
if __name__ == "__main__":
# app.run()
port = int(os.getenv("PORT"))
app.run(host="0.0.0.0", port=port)
# 新商品をpromotion_contentに入れる
promotion_content = "話題の新商品"
@app.route("/")
def promotion():
# 宣伝があればPromotionに入力して一斉送信
if promotion_content != "":
messages = TextSendMessage(text=promotion_content)
line_bot_api.broadcast(messages=messages)
return "宣伝完了"
# "新商品"というメッセージが送られてきた場合
# 新商品テキストを送信する。
elif event.message.text == "新商品":
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=promotion_content))
이번에는 신상품마다 Heroku에 배포해야 하기 때문에 숨겨진 코드 등을 사용하여 자신의 스마트 폰에서 신상품의 메시지를 보내고 거기에서 일제히 보내도 좋을까 생각했습니다! (보안상 수상하지만,,, 웃음)
참고문헌
Reference
이 문제에 관하여(Python, LINE BOT에서 일제 전송), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/adgjmptw0/items/fa7bd0d039eb6b2e4bfe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Python, LINE BOT에서 일제 전송), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/adgjmptw0/items/fa7bd0d039eb6b2e4bfe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)