透過 Narrowcast API 在 LINE Chatbot 上發送”精準”且”討喜”的訊息

本篇文章為翻譯文章: 原文(泰文)

“我們不是不喜歡廣告……我們只是不喜歡與我們無關的廣告。”(泰文)

大家好,透過這耳熟能詳的句子來開始本篇文章的介紹。如果我們能深入了解客戶,通過我們自己數據中的各種資訊或來自平台的訊息。使我們能夠更有效,更深入地了解每一位客戶,將可以提供更個人化的產品或正確的服務。

什麼是 Narrowcast?

Narrowcast 這個詞與 Broadcast 相反,Broad 表示 “廣發”,Narrow 表示 “ 狹窄”。相比之下,我們 Broadcast 是為了向大量受眾(所有的好友)發送訊息。至於使用 Narrowcast,它將發送訊息給特定的群體(目標受眾)。

因此,使用 Narrowcast 幫助我們的業務找到真正感興趣或想要使用我們的產品或服務的用戶。使用 Narrowcasrt 的特點如下:

  • 特定受眾
  • 量身定制的訊息,與用戶更相關並且更具個人化。
  • 預算更小,價格實惠 (非常適合使用 LINE 官方帳號,能夠更有效的花費在有興趣的用戶上)

使用 Narrowcast API 發送訊息

了解 Narrowcast 的概念後,讓我們看一下 LINE 的 Narrowcast API。之前,當我們從Chatbot發送訊息時,我們能夠使用Messaging API通過以下三種方式將訊息發送給關注者:(了解更多信息在此處發送訊息。)

  • Push API : 發送 1:1 訊息
  • Multicast AP I: 一次發送訊息給多個好友(指定)。
  • Broadcast AP I: 一次發送訊息給所有的好友。

借助 Narrowcast API,我們可以選擇發送給特定用戶,感興趣的目標或要求,例如查看過我們的某個廣播訊息 (Broadcast) 的用戶,點擊查看我們的產品鏈結的用戶,選擇按受眾特徵(性別,年齡,基於 LINE 的操作系統)進行發送等,這很酷此外,我們可以與 And,Or,Not 自由混合和匹配!

Narrowcast API 的結構

// LINE HTTP Request
POST https://api.line.me/v2/bot/audienceGroup/imp

// Headers
Content-Type: application/json
Authorization: Bearer{CHANNEL ACCESS TOKEN}

// Request Body
messages:(訊息最多可以包含5個)

filter.demographic:選擇按性別,年齡,操作系統等發送給用戶。

recipient:選擇發送給我們通過選擇用戶 ID(點擊了以下訊息的用戶)創建的受眾群體

Limit.max:制定發送訊息的最大數量

因為此 API 的 JSON 結構非常複雜 (很容易在裡面迷路!)與發送到特定用戶組有關的部分分為3個主要部分:

  1. 人口統計 (Demographic)
  2. 受眾 (Recipient)
  3. 限制 (Limit)

讓我通過Mindmap圖表解釋結構,以便於理解。每個部分都會有樣本 如果您準備好了,請深呼吸,然後開始!

1. 人口資料挑選方法

filter.demographic 有一些我們可以選擇使用的條件,如下

  • 性別:選擇是否malefemale
  • 年齡:年齡可以選擇 gte(Great Than Equal 大於等於)還是 lt( Less Than 小於),範圍有:
    • age_15 
    • age_20 
    • age_25 
    • age_30 
    • age_35 
    • age_40 
    • age_45 
    • age_50
  • appType:使用LINE iosandroid
  • area:
    • 根據泰國用戶位置 (country code=764) ,可以區分為:
      • th_01:曼谷
      • th_02:芭堤雅
      • th_03:北部
      • th_04:中部
      • th_05:南部
      • th_06:東部
      • th_07:東北部
      • th_08:西部
    • (譯者註解) 台灣用戶位置 (country code=158)
      • tw_01:台北市
      • tw_02:新北市
      • tw_03:桃園市
      • tw_04:台中市
      • tw_05:台南市
      • tw_06:高雄市
      • tw_07:基隆市
      • tw_08:新竹市
      • tw_09:嘉義市
      • tw_10:新竹縣
      • tw_11:苗栗縣
      • tw_12:彰化縣
      • tw_13:南投縣
      • tw_14:雲林縣
      • tw_15:嘉義縣
      • tw_16:屏東縣
      • tw_17:宜蘭縣
      • tw_18:花蓮縣
      • tw_19:台東縣
      • tw_20:澎湖縣
      • tw_21:金門縣
      • tw_22:連江縣
  • subscriptionPeriod:成為關注者的時間。可以從以下選項中選擇 gte(大於等於)或 lt(小於)
    • day_7 
    • day_30 
    • day_90 
    • day_180 
    • day_365
  • operators:可以使用或根據我們感興趣的條件選擇混合(也可以堆疊成多層)or, and, not
幫助大家複習高中知識

下面的 JSON 範例為:想將訊息發送給使用 iOS 且 20 歲以上但不超過 25 歲的男性和女性(使用運算子 And 來指定的方式)。

“ filter”:{ 
“ demographic”:{
“ type”:“ operator”,
“ and”:[
{
“ type”:“ gender”,
“ oneOf”:[
“ male”,
“ female”
]
},
{
“ type “:” age“,
” gte“:” age_20“,
” lt“:” age_25“
},
{
” type“:” appType“,
” oneOf“:[
“ ios”
]
}
]
}
}

2. 受眾的建立方式

接下來,我們將訊息傳遞的目標受眾稱為“ 受眾群體”,我們需要audienceGroupId在發送之前創建一個受眾群體。可以選擇創建以下三種類型

2.1 通過用戶 ID 創建受眾

這很簡單,當我們從 Webhook event 中獲取用戶 ID 時,可以將其放入資料庫中,然後選擇要創建組的用戶 ID,例如作為商店的常規客戶的用戶組。以下為規格與範例程式碼

// LINE HTTP Request
POST https://api.line.me/v2/bot/audienceGroup/imp

// Headers
Content-Type: application/json
Authorization: Bearer{CHANNEL ACCESS TOKEN}

// Request Body
description:受眾名稱組的名稱不能與已創建的名稱相同,且不得超過120個字元

IsIfaAudience:如果我們使用用戶ID,請選擇false 
uploadDescription:描述創建此組的詳細信息的訊息(可選),
audiences:數組用戶 ID 最多可容納 10,000 個
audiences[].id:如果我們使用用戶 ID ,請輸入“用戶ID”

此 API 調用的結果將返回 audienceGroupId 回來,以便我們可以繼續在受眾中使用它

{ 
“ audienceGroupId”:1111111111111,
“ type”:“ UPLOAD”,
“ description”:“ regularCustomerGroup”,
“ created”:1579143542,
“ isIfaAudience”:false
}

你可以選擇搭配,我們感興趣的是使用對象或與此相同的例子。or and not

"recipient": {
        "type": "operator",
        "and": [
            {
                "type": "audience",
                "audienceGroupId": "1111111111111"
            },
            {
                "type": "operator",
                "not": {
                    "type": "audience",
                    "audienceGroupId": "2222222222222"
                }
            }
     ]
}

注意1:實際上,我們也可以使用 IFA 值創建受眾。但如果有興趣使用,請聯繫此表格以啟用它

注意2:我們可以通過此 API 調用增加已經創建的組中的用戶 ID 數量。

2.2 從點擊過 Broadcast / Narrowcast 訊息中的 URL 來建立受眾

以前點擊過我們先前發送到 Broadcast t或 Narrowcast 的訊息中的URL的人創建受眾例如,我已經發送了含有 LINE Developers Podcast EP.1 鏈結 (URL) 的 Broadcast 訊息,並且我只想將訊息發送給其他人。剛剛點擊即可收聽此播客。我們稱此方法為 “Click re-targeting”。

別忘了訂閱 LINE Developers podcast (語音為泰文)
//// LINE HTTP Request
POST https://api.line.me/v2/bot/audienceGroup/imp

// Headers
Content-Type: application/json
Authorization: Bearer{CHANNEL ACCESS TOKEN}

// Request Body
description:受眾名稱在群組中,與以前一樣,且不得超過120個字符
RequestId:以下位置獲取此值 當我們發送 Broadcast 或 Narrowcast 的訊息(發送後的60天內)時,response header 中的 x-line-request-id

clickurl:用戶點擊的URL 如果未指定,則表示用戶點擊該訊息中的任何URL(可選)。

2.3 從看過訊息 (Broadcast 與 Narrowcast) 的人中創建受眾

建立曾經收過某則訊息的目標對象群組。僅此文字(需被記錄為讀取過),我們稱此方法為 “Impression re-targeting” 。

// LINE HTTP Request
POST https://api.line.me/v2/bot/audienceGroup/imp

// Headers
Content-Type: application/json
Authorization: Bearer{CHANNEL ACCESS TOKEN}

// Request Body
description:受眾名稱組的名稱不能與已創建的名稱相同,且不得超過120個字元

RequestId:以下位置獲取此值 當我們發送 Broadcast 或 Narrowcast 消息(發送後全部60天)時, response headers 中的 x-line-request-id

3.如何設置限制

最後,我們也可以設置要在 Narrowcast 中發送的最大郵件數,limit.max系統會隨機選擇自動發送信息的人,例如,在我們實際希望發送的條件下的總人數為10,000,但我們將其設置為 1,000 人,系統將從總數中隨機選擇最多 1,000 人。

“ limit”:{ 
“ max”:1000
}

一個完整範例

讓我們看一下 Narrowcast API 中的一個有效傳送範例,其中包含人口統計資訊和受眾資訊。

檢查 Narrowcast 發送的狀態

與推送或廣播時相比,Narrowcast API的不同之處在於,將收到伺服器回覆為“ 202 Accepted”(接受),這意味著伺服器已收到請求,但當前正在處理。想要知道最新狀況的開發者,您也可以檢查 Narrowcast 交付的狀態

// LINE HTTP Request 
GET https://api.line.me/v2/bot/message/progress/narrowcast?RequestId = {request_id} 

// Path param
requestId:發送 Narrowcast 時,response headers 裡面的 x-line-request-id

// Headers
Authorization: 記錄著 {CHANNEL ACCESS TOKEN}

狀態檢查結果示例

{ 
“ failureCount”:0,
“ phase”:“ succeeded”,
“ successCount”:1000,
“ targetCount”:1000
}

總結

比起不得不發送過多的訊息給使用者(並且經常被用戶封鎖),我認為我們應該考慮更詳細的與使用者的互動。尋找出對我們的產品或服務真正感興趣的人,發送給“精準”的受眾,並且讓用戶都”喜歡”收到這樣的訊息才是。

Reference

Related Post