iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
Modern Web

Line Bot × NestJS:30 天開發日記系列 第 25

Day 25:優惠券設定與 Coupon Message 實作

  • 分享至 

  • xImage
  •  

2025 鐵人賽背景圖

前言

LINE Official Account 的「優惠券」是提升顧客互動與忠誠度的重要功能。透過獎勵機制,不僅能吸引新客,更能有效促進回購。

本篇分為兩部分:前半部介紹優惠券後台設定與三種優惠券發放類型(No conditions applied、LotteryFriend referral),後半部實作如何在 NestJS 中使用 Coupon Message 的方式發送優惠券給用戶。

本日程式碼的範例連結

優惠卷(Coupon)設定說明

優惠卷官方說明

登入 LINE Official Account 後台後,可以在左側導航欄的 Outreach 區塊中找到 Coupons 功能選項。

LINE OA 後台點擊 Coupons 畫面

點擊進入優惠券管理頁面後,系統會將優惠券按照狀態分為三個類別:

  • 即將生效/有效:正在使用中的優惠券
  • 過期/已結束:已失效或過期的優惠券
  • 草稿:尚未發布的草稿優惠券

僅有草稿狀態的優惠券才可以「編輯」、「刪除」。

建立新的優惠券,只需點擊頁面上的 「Create new」 按鈕即可開始設定。

LINE OA 後台 Coupons 清單

優惠券的發放條件主要可分為以下三種類型:

  • No conditions applied:任何用戶都能直接領取,適合一般性促銷活動
  • Lottery:僅限通過抽獎機制選中的用戶才能領取,適用於限量優惠或增加互動趣味性的活動
  • Friend referral:採用雙向獎勵機制,推薦者與被推薦者雙方都能獲得優惠券,有效促進用戶推廣

本篇將以 No conditions applied(無條件領取) 為主要示範。

No conditions applied 無條件優惠券

優惠卷可以設置以下的資訊:

  1. 標題:優惠券名稱
  2. 起迄時間和時區:有效期間與適用時區
  3. 照片:優惠券封面圖片
  4. 使用說明:兌換方式、使用限制及注意事項。系統會自動帶入預設條款,包含結帳時需出示畫面、僅限使用一次,以及效期可能變更等說明
  5. 是否刊登至LY服務:可選擇是否顯示於 LINE 主頁等相關服務
  6. 使用次數:可選擇單次或不限次數使用
  7. 折扣類型:固定金額、百分比或免費贈品等折扣方式
  8. 使用條件:設定最低消費門檻或其他限制

LINE 優惠卷

優惠卷儲存之後可以選擇分享的方式:

  • 設定成招呼語:新好友加入官方帳號時自動發送優惠券
  • 以訊息的方式傳送給用戶:透過廣播功能指定特定族群或全部用戶接收優惠券
  • 公布在 LINE VOOM:公開分享到動態消息區域
  • 當作關鍵字的回覆:設定多組關鍵字,用戶輸入符合內容時自動回覆優惠券

LINE 優惠卷分享方式

分享追蹤設定

透過設定 URL 參數,可在不同社群平台(如 Facebook、Instagram、X 等)分享優惠券,並於後台 Insights 追蹤各管道的領取與使用成效。

LINE 優惠券追蹤設定

Lottery 抽獎優惠券

基本設定項目與 No conditions applied 相同,以下僅說明其差異之處。

抽獎流程
LINE Lottery 優惠券抽獎流程

設定時,需要額外配置以下兩個參數:

  • 抽獎機率:設定中獎的百分比機率
  • 中獎者人數:限制可中獎的總人數上限

LINE 抽獎優惠卷

抽獎規則

  • 只有中獎者才能獲得優惠券
  • 每位用戶僅能參與一次抽獎,無論中獎與否都不可重複抽取

Friend referral 好友推薦優惠券

基本設定項目與 No conditions applied 相同,以下僅說明其差異之處。

抽獎流程
LINE Friend referral 優惠券流程

運作流程:

  • 官方帳號設定:建立推薦優惠券並發布推薦頁面
  • 推薦者分享:現有用戶分享推薦頁面給潛在用戶
  • 被推薦者加入:新用戶透過推薦頁面加入官方帳號並獲得優惠券
  • 推薦者獲得獎勵:系統自動通知推薦者並發放優惠券

Friend referral 優惠券 = 推薦頁面 (Referral page) + 優惠券

1. 推薦頁面

現有用戶分享給新用戶,新用戶加入後也能繼續分享,形成連鎖推薦效應

可設定項目:

  • Top image(頂部圖片):選擇使用預設圖片或上傳自訂圖片
  • Referral period(推薦期間):設定活動起始與結束日期時間,並指定時區
  • Important(注意事項):填寫優惠券使用條款與聲明

LINE OA  後台設定 Referral page

2. 優惠券

透過 Number available 可設定每位推薦者可獲得的優惠券數量上限

LINE OA  後台設定好友推薦後取得的優惠券

分享方式只存在兩種方式:

  • Set as rich menu:將推薦頁面設定為圖文選單,方便用戶隨時存取分享
  • Send as message:透過訊息推播方式將推薦頁面廣播給指定用戶

系統僅提供單一推薦 URL,無法針對不同社群平台生成專屬追蹤連結

Coupon Message 訊息類型

本系列文章原先使用的 @line/bot-sdk 版本為 10.1.0,但該版本尚未包含 Coupon Message 功能。因此需要升級至 10.3.0 版本才能使用。

在 LINE Bot 的訊息系統中,除了我們先前介紹的:

  • 六種基礎訊息(Text、Image、Video、Audio、Location、Sticker)
  • Template Message
  • ImageMap Message
  • Flex Message

還有一種專門用於發送優惠券的訊息類型:Coupon Message。這讓開發者能在對話流程中靈活發送優惠券,實現更多元的行銷應用場景。

參數說明

  • couponId(必填):優惠券的唯一識別碼,可從建立優惠券的 API 回應中取得,或透過優惠券列表 API 查詢
  • deliveryTag(選填):優惠券發送路徑的標籤名稱,用於在後台 Insights 追蹤不同發送情境的成效分析

line-message/types/coupon-message

import { MessageCommon } from './message-common';
import { CouponMessage } from '@line/bot-sdk/lib/messaging-api/model/models';

export type CouponMessageReq = MessageCommon & Omit<CouponMessage, 'type'>;

實作流程

在使用 Coupon Message 前,需要先取得優惠券的 couponId,有以下兩種方式:

  1. 透過 API 建立優惠券:建立時會在回應中直接返回 couponId,可參考官方 API 說明
  2. 透過 LINE OA 後台建立:先在後台建立優惠券,再使用「查詢優惠券列表 API」取得 couponId,可參考官方 API 說明

本範例採用第二種方式,透過查詢優惠券列表 API 取得先前在後台建立的優惠券編號:
取得優惠券編號清單 API

line-message/line-message.service.ts

  createCouponMessage(couponMessageReq: CouponMessageReq): CouponMessage {
    const { couponId, deliveryTag, sender, quickReplyItems } = couponMessageReq;
    const couponMessage: CouponMessage = {
      type: 'coupon',
      couponId,
      ...(deliveryTag && { deliveryTag }), // 處理 deliveryTag 可選參數
      ...this.buildCommonMessageProps(sender, quickReplyItems),
    };
    return couponMessage;
  }

成果展現

使用一開始創建的咖啡優惠券,我有換咖啡照片 ヽ(●´∀`●)ノ

LINE 傳送 Coupon Message 呈現畫面

如何查看已領取的優惠卷

Step 1:進入 LINE 服務選單

在 LINE 首頁點選「服務」區塊的「顯示全部」按鈕,顯示完整的服務列表。

LINE 首頁

Step 2:選擇「官方帳號」服務

在服務列表中找到並點選「官方帳號」項目。

LINE 官方帳號服務

Step 3:查看我的優惠券

進入官方帳號頁面後,點選「我的優惠券」即可查看所有已領取的優惠券。

LINE 官方帳號內我的優惠券

本日結語

今天和大家分享生活中隨處可見的優惠券功能。身為容易被優惠券吸引而消費的人,這次我完整地探索了一遍相關機制,正好可以結合 Coupon Message 來說明實際應用。

我自己設想的使用情境是:當用戶登入會員後,系統自動發送一張「會員禮優惠券」作為歡迎禮。雖然後台本身提供關鍵字觸發優惠券的功能,但透過 Coupon Message,我們能更靈活地根據不同場景客製化發送優惠券,讓行銷策略可以更加精準有效。


上一篇
Day 24:LIFF 刮刮樂實戰體驗
下一篇
Day 26:LINE Pay 線上付款
系列文
Line Bot × NestJS:30 天開發日記26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言