前提・実現したいこと
・ユーザーが「よろしくお願いします」を入力 → テキストメッセージを返信(これはできた)
・ユーザーが「わかりました」を入力 → カルーセルメッセージを返信(これができない)
・どなたかカルーセルメッセージが返信されるようにご教示お願いします
発生している問題・エラーメッセージ
・エラーメッセージはありません
・実際の公式LINE上で「わかりました」を入力しても、カルーセルメッセージが送信されません
該当のソースコード
# ライブラリのインポート
from flask import Flask, request, abort
from linebot import (
LineBotApi, WebhookHandler
)
from linebot.exceptions import (
InvalidSignatureError
)
from linebot.models import (
MessageEvent, FollowEvent, TextMessage, TextSendMessage,
TemplateSendMessage, CarouselTemplate, CarouselColumn, MessageAction
)
app = Flask(__name__)
# アクセストークンとWebHookHandlerの設定
line_bot_api = LineBotApi('****')
handler = WebhookHandler('****')
# アプリケーション側の設定
@app.route("/")
def test():
return "OK"
@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:
print("Invalid signature. Please check your channel access token/ \
channel secret.")
abort(400)
return "OK"
# LINE Messanger API側の設定
@handler.add(FollowEvent)
def handle_follow(event):
profile = line_bot_api.get_profile(event.source.user_id)
nickname = profile.display_name
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text="****")
)
@handler.add(MessageEvent, message=TextMessage)
def handle_message(event):
if event.message.text == "よろしくお願いします":
reply_message = "****"
line_bot_api.reply_message(
event.reply_token,
TextSendMessage(text=reply_message))
def handle_text_message(event):
if event.message.text == "わかりました":
carousel_template = CarouselTemplate(columns=[CarouselColumn(
thumbnail_image_url="****",
title="****",
text="****",
actions=[MessageAction(type="message", label="****", text="****")]),
CarouselColumn(thumbnail_image_url="****",
title="****",
text="****",
actions=[MessageAction(type="message", label="****", text="****")]),
CarouselColumn(thumbnail_image_url="****",
title="****",
text="****",
actions=[MessageAction(type="message", label="****", text="****")]),
])
messages = TemplateSendMessage(
alt_text="carousel_template",
template=carousel_template)
line_bot_api.reply_message(
event.reply_token,
messages)
if __name__ == "__main__":
app.run()
試したこと
・「def handle_text_message(event):」の前に「@handler.add(MessageEvent, message=ImageMessage)」」で実行 → ユーザーが「わかりました」を入力しても、カルーセルメッセージが返信されません
・他にも色々と試しましたが、全てだめでした。。。エラーが表示される場合もあれば、LINE上で「わかりました」と送信しても、カルーセルメッセージが表示されません
補足情報(FW/ツールのバージョンなど)
・画像に関しては、指定しているURLのパスは通っており、テキストの文字上限も超えていません
・アプリケーションサーバーはFlask、サーバーはHerokuを利用しています