クイックリプライでtextプロパティを設定すると、ポストバックイベントとメッセージイベントが発生する

この記事について

環境Python + line-bot-sdk-python
目的クイックリプライのpostbackで、メッセージイベントを発生させずにテキストを表示する
結果textをdisplayTextに変えたらポストバックイベントのみになった

つまずきポイント要約

  • textプロパティはメッセージ送信を伴うので、両方のイベントが発生する
  • displayTextなら表示のみでメッセージイベントは発生しない
  • textプロパティは廃止予定

事象

クイックリプライのポストバックイベントにtextプロパティを設定すると、ポストバックイベントとメッセージイベントの両方が発生する問題が発生。

views.py

quick_reply=QuickReply(
    items=[
        QuickReplyButton(
            action=PostbackAction(
                label="りんご", data="fruits", text="りんご",
            )
        )
    ]
),

原因

postbackアクションのtextプロパティは、postbackデータの送信と同時にテキストをメッセージとして送信する仕様のため、ポストバックイベントとメッセージイベントの両方が発生する。

対処

textプロパティを displayTextプロパティに変更するとメッセージイベントは発生しなくなる。

quick_reply=QuickReply(
    items=[
        QuickReplyButton(
            action=PostbackAction(
                label="りんご", data="fruits", displayText="りんご",
            )
        )
    ]
),

なお、ポストバックイベント内の textプロパティは廃止予定。

Messaging APIリファレンス | LINE Developers

タイトルとURLをコピーしました