Line Flex Message:讓回覆不再單調

給韜睿軟體五星好評

在很早之前,T編寫過當Line Bot 遇上 OCR(發票辨識/交通票辨識) – Line機器人設定篇當Line Bot 遇上 OCR(發票辨識/交通票辨識)– Django設定篇,不過可以看到之前的回覆都是以文字回覆為主,那可否讓他豐富一點更好看一點呢?本期將帶大家應用Line Flex Message讓你的回覆更加活潑!

未來也可以期待我們透過Line做更多的應用~在此先賣一個關子!

一、什麼是Line Flex Message

由於Line本身支援一些多格式的回覆,不過大家最常使用的大概就是文字格式或是貼圖,但當你想要跟你的使用者做更多的應用,就可以透過Line Flex Message回應可以自訂你的一些回應格式,加入圖片、按鈕…等,讓回應看起來更豐富.

如下展示Line Flex Message可以呈現的類型(取自 Line developers)

豐富的Line Flex Message

二、Line文字回覆與Line Flex Message差異

同樣是回覆,但傳達出來的訊息卻不同,可以看到:

文字回覆

Line 文字回覆祝賀2025
Line 文字回覆祝賀2025

Flex Message回覆:

Line Flex Message回覆祝賀2025
Line Flex Message回覆祝賀2025

三、來實作吧

這邊就略過一些之前的設定,若尚未了解的可以去參考當Line Bot 遇上 OCR(發票辨識/交通票辨識) – Line機器人設定篇當Line Bot 遇上 OCR(發票辨識/交通票辨識)– Django設定篇這兩篇文章.

純文字版本:

可以看到很簡單,就是把您要回覆的文字,寫在text中,然後透過TextSendMessage回傳即可.

text = '希望您2025一切美好平安!'
line_bot_api.reply_message(
  event.reply_token,
  TextSendMessage(text=text)
)

Flex Message版本:

A.本段是最主要的一個部分,主要要把您呈現的樣態透過巢狀格式構造,放入content變數中;每個樣態內容中都有不同的參數,詳細可以參考 Line developers,這邊僅就幾個參數說明:

type :呈現的樣式分成bubble/carousel依據你選用的佈局方式,有不同的內容設定.

body:就是你要呈現的內容,裡面還有許多參數可以設定.

footer:底部構造,通常放些action…等應用或說明(下面程式碼未用到).

url:設定中的url通常是可以插入圖片或是action的位置,記得要為https.

content={
   "type":"bubble",
   "body":{
      "type":"box",
      "layout":"vertical",
      "contents":[
         {
            "type":"image",
            "url":"https://www.shutterstock.com/zh-Hant/blog/wp-content/uploads/sites/11/2021/07/0716-cover.png?w=1250&h=960&crop=1",
            "size":"full",
            "aspectMode":"cover",
            "aspectRatio":"1:1",
            "gravity":"center"
         },
         {
            "type":"box",
            "layout":"vertical",
            "contents":[
               
            ],
            "position":"absolute",
            "background":{
               "type":"linearGradient",
               "angle":"0deg",
               "endColor":"#00000000",
               "startColor":"#00000099"
            },
            "width":"100%",
            "height":"40%",
            "offsetBottom":"0px",
            "offsetStart":"0px",
            "offsetEnd":"0px"
         },
         {
            "type":"box",
            "layout":"horizontal",
            "contents":[
               {
                  "type":"box",
                  "layout":"vertical",
                  "contents":[
                     {
                        "type":"box",
                        "layout":"horizontal",
                        "contents":[
                           {
                              "type":"text",
                              "text":"2025願您一年平安順利",
                              "size":"xl",
                              "color":"#ffffff"
                           }
                        ]
                     },
                     {
                        "type":"box",
                        "layout":"baseline",
                        "contents":[
                           {
                              "type":"text",
                              "text":"韜睿軟體 敬祝",
                              "color":"#a9a9a9"
                           }
                        ],
                        "spacing":"xs"
                     },
                     {
                        "type":"box",
                        "layout":"horizontal",
                        "contents":[
                           {
                              "type":"box",
                              "layout":"baseline",
                              "contents":[
                                 
                              ],
                              "flex":0,
                              "spacing":"lg"
                           }
                        ]
                     }
                  ],
                  "spacing":"xs"
               }
            ],
            "position":"absolute",
            "offsetBottom":"0px",
            "offsetStart":"0px",
            "offsetEnd":"0px",
            "paddingAll":"20px"
         }
      ],
      "paddingAll":"0px"
   }
}

B.本段就是把上述content的內容包進FlexSendMessage中,讓他可以呈現.

flex_message = FlexSendMessage(
               alt_text='建立完成',
               contents= content
)

C.最後一個看起來有沒有很像剛剛純文字的樣子,其實是類同,只是這次改由將Flex_message的內容發送出去.

line_bot_api.reply_message(
  event.reply_token,
  messages=[flex_message]
)

D.驗證成果,如同剛剛看到的,就可以呈現完美的回覆.

Line Flex Message回覆祝賀2025
Line Flex Message回覆祝賀2025

四、一些補充

  • 什麼是bubble:您可以把它想像成一張圖卡,但這個圖卡可以有很多樣式,稍後會提到.
Line Flex Message bubble
Line Flex Message bubble
  • 什麼是carousel:您可以把它想像它結合了很多張圖卡.
Line Flex Message carousel
Line Flex Message carousel
  • 示範一個具備按鈕的範例
content={
   "type":"bubble",
   "hero":{
      "type":"image",
      "url":"https://developers-resource.landpress.line.me/fx/img/01_1_cafe.png",
      "size":"full",
      "aspectRatio":"20:13",
      "aspectMode":"cover",
      "action":{
         "type":"uri",
         "uri":"https://www.ignsw.com"
      }
   },
   "body":{
      "type":"box",
      "layout":"vertical",
      "contents":[
         {
            "type":"text",
            "text":"給韜睿軟體五星好評!",
            "weight":"bold",
            "size":"xl"
         },
         {
            "type":"box",
            "layout":"baseline",
            "margin":"md",
            "contents":[
               {
                  "type":"icon",
                  "size":"sm",
                  "url":"https://developers-resource.landpress.line.me/fx/img/review_gold_star_28.png"
               },
               {
                  "type":"icon",
                  "size":"sm",
                  "url":"https://developers-resource.landpress.line.me/fx/img/review_gold_star_28.png"
               },
               {
                  "type":"icon",
                  "size":"sm",
                  "url":"https://developers-resource.landpress.line.me/fx/img/review_gold_star_28.png"
               },
               {
                  "type":"icon",
                  "size":"sm",
                  "url":"https://developers-resource.landpress.line.me/fx/img/review_gold_star_28.png"
               },
               {
                  "type":"icon",
                  "size":"sm",
                  "url":"https://developers-resource.landpress.line.me/fx/img/review_gold_star_28.png"
               },
               {
                  "type":"text",
                  "text":"5.0",
                  "size":"sm",
                  "color":"#999999",
                  "margin":"md",
                  "flex":0
               }
            ]
         },
         {
            "type":"box",
            "layout":"vertical",
            "margin":"lg",
            "spacing":"sm",
            "contents":[
               {
                  "type":"box",
                  "layout":"baseline",
                  "spacing":"sm",
                  "contents":[
                     
                  ]
               }
            ]
         }
      ]
   },
   "footer":{
      "type":"box",
      "layout":"vertical",
      "spacing":"sm",
      "contents":[
         {
            "type":"button",
            "style":"link",
            "height":"sm",
            "action":{
               "type":"uri",
               "label":"參觀 韜睿軟體",
               "uri":"https://www.ignsw.com"
            }
         },
         {
            "type":"box",
            "layout":"vertical",
            "contents":[
               
            ],
            "margin":"sm"
         }
      ],
      "flex":0
   }
}

結果會呈現如下

給韜睿軟體五星好評
給韜睿軟體五星好評
  • 注意事項
    • 若是您採用的是python django 請注意,如果參數中有true請改為True大寫,避免錯誤.
    • 可以看到程式碼有個地方是action通常是定義點上去要做什麼事情.
    • Line有提供一個FLEX MESSAGE SIMULATOR 模擬器,可以透過模擬器先產出你需要的樣貌,再加入程式碼中.

五、總結

透過Flexe Message 可以創造具備圖片、連結的回覆,讓回覆更加多元與互動性.

最後T編說在2024尾聲,也祝福大家2025平安順心,來年繼續支持韜睿軟體.

六、聲明

以上範例結合T編本身應用與Flex Message Simulator範例,圖片中有部分採用Flex Message或是shutterstock.

Loading

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *