iT邦幫忙

2025 iThome 鐵人賽

DAY 14
1
Odoo

站在巨人的肩膀上打造企業智慧助手:Make × AI × Odoo 的實踐之路系列 第 14

🚀 Day 14:Odoo × LINE Carousel:訂單明細視覺化呈現

  • 分享至 

  • xImage
  •  

一、前情提要:從單號到明細,互動再升級

在昨天的 Day13,我們已經完成第一個互動功能:
客戶傳「查訂單」 → 系統回傳 quickReply → 客戶點選單號

今天,我們要進一步做到:
👉 客戶點了某張訂單後,系統會自動顯示「這張單的產品明細」,並以 LINE 的 Carousel 形式漂亮呈現。

Carousel 是什麼?
簡單來說,就是一組可以左右滑動的卡片,每張卡片可以顯示圖片、文字、按鈕,非常適合多筆資料的視覺化展示!


我們今天的目標就是:
✅ 把 Odoo 單據中的產品明細,用 Carousel 的方式一次呈現給客戶!

但我們不會塞太多欄位,我們只顯示這四個資訊:

欄位名稱 說明
產品名稱 來自 product_id.display_name
訂購數量 來自 product_uom_qty
已出貨數量 來自 qty_delivered
價格(含稅) 來自 price_total,含稅總額

二、使用者情境:客戶點了單號 → 想看內容

延續 Day13 的場景:

1. 客戶輸入:「我要查訂單」  
2. 系統回傳 quickReply:「SO2025-0001、SO2025-0002…」  
3. 客戶點選「SO2025-0001」  
4. 系統自動查 Odoo 的 sale.order.line 明細  
5. 每一筆產品明細都用 Carousel 的卡片顯示  

這樣一來,客戶就不用自己輸入,也不用再回客服問「這張單到底買了什麼」—— 全部一滑就知道!


三、實際操作:從 quickReply 點擊 → Odoo 查明細 → Carousel 回傳

🔧 步驟 1:新增 Router 分流

我們不能每次接收到訊息都查一次歷史銷售單據,所以我們簡單設定分流:

  • 如果訊息包含「單據:」→ 回傳明細
    https://ithelp.ithome.com.tw/upload/images/20250814/20177665eJPWI6bHS9.png
  • 如果訊息沒有包含「單據:」 → 查詢銷售訂單單號
    https://ithelp.ithome.com.tw/upload/images/20250814/201776653g4LspzpIs.png
    這邊設定 fallback 是因為,除了包含「單據:」,其他的都屬於查詢銷售單號。

📌 Fallback 是什麼?
當主要的條件或規則都沒被觸發時,系統會自動走 fallback,確保資料或流程不會中斷。
可以把它想成:「其他路都沒走通,那就走這條安全的最後一條路。」


🔧 步驟 2:新增 Odoo 的 Make an API Call 模組

https://ithelp.ithome.com.tw/upload/images/20250814/20177665ZNr2Yw0Ksa.png
以下提供我的設定作為範例,大家可以根據自己的需求去做調整。

Search Parameters:
{"fields":["product_template_id","product_uom_qty","qty_delivered","price_total"],"limit":80}
Parameters:
[[["order_id","=","{{split(3.events[].message.text; "單據:")}}"]]]
  • 先將訊息「單據:XXXX」自動分割,只留下 XXXX(銷售單號)
  • 在 Odoo 的 sale.order 尋找該單據
  • 回傳對應的產品明細資訊

🔧 步驟 3:新增 LINE 的 Make an API Call 模組

https://ithelp.ithome.com.tw/upload/images/20250814/201776654QTYIAn2P5.png
得到回傳的銷售單明細log後,使用 Carousel 的方式回傳!
所以新增一個 LINE 的 Make an API Call 模組

  • 並設定 URL、Method 與 Body
  • Body 需符合 LINE 官方 Carousel API 的格式(官方文件
  • 你也可以自訂字體大小、顏色等樣式,讓畫面更符合品牌風格

https://ithelp.ithome.com.tw/upload/images/20250814/20177665O3l4MwQIVb.png
這邊也提供我的程式碼為範例

Body:
{"replyToken":"{{3.events[].replyToken}}","messages":[{"type":"text","text":"請確認單據:","quickReply":{"items":[{"type":"action","action":{"type":"message","label":"{{10.body[1].name}}","text":"單據:{{10.body[1].name}}"}},{"type":"action","action":{"type":"message","label":"{{10.body[2].name}}","text":"單據:{{10.body[2].name}}"}},{"type":"action","action":{"type":"message","label":"{{10.body[3].name}}","text":"單據:{{10.body[3].name}}"}},{"type":"action","action":{"type":"message","label":"{{10.body[4].name}}","text":"單據:{{10.body[4].name}}"}},{"type":"action","action":{"type":"message","label":"{{10.body[5].name}}","text":"單據:{{10.body[5].name}}"}}]}}]}{"replyToken":"{{3.events[].replyToken}}","messages":[{"type":"flex","altText":"產品明細","contents":{"type":"carousel","contents":[{"type":"bubble","body":{"type":"box","layout":"vertical","contents":[{"type":"text","text":"{{18.body[1].product_template_id.value}}","weight":"bold","size":"lg","wrap":true},{"type":"text","text":"數量:{{18.body[1].product_uom_qty}}","color":"#000000"},{"type":"text","text":"已出貨數量:{{18.body[1].qty_delivered}}","color":"#000000"},{"type":"text","text":"價格(含稅):{{18.body[1].price_total}}","color":"#000000"}]}},{"type":"bubble","body":{"type":"box","layout":"vertical","contents":[{"type":"text","text":"{{18.body[2].product_template_id.value}}","weight":"bold","size":"lg","wrap":true},{"type":"text","text":"數量:{{18.body[2].product_uom_qty}}","color":"#000000"},{"type":"text","text":"已出貨數量:{{18.body[2].qty_delivered}}","color":"#000000"},{"type":"text","text":"價格(含稅):{{18.body[2].price_total}}","color":"#000000"}]}}]}}]}

這個步驟完成後,其實就已經大功告成了🎉


四、測試成果:一滑看明細

現在來實測我們從 Day11~Day13 累積的成果吧!

  1. 客戶傳:「我要查訂單」 → 回傳 quickReply
  2. 點選 quickReply 單號
  3. 使用 Carousel 回傳訂單明細
    gif1

使用者只需在第一次說明來意,後續全程只要點按鈕、滑卡片,就能完成查詢,體驗感💯!
看到這如果你也覺得這個自動化流程就是你要的!
那趕快回去從Day11Day12Day13開始跟著我一步一步完成吧~


五、結語:查單查到商品級別,客服只剩喝茶

今天我們做的事,看起來不多,但其實完成了一個質變:

  • 📦 不只查到「哪張單」
  • 🔍 還能看到「每張單裡有什麼產品」
  • 🎨 用 Carousel 呈現,比文字更直觀好懂

客服不用花時間截圖,也不用打字報價單內容,系統就會自動幫你秀給客戶看。


📌 不過,互動客服功能會先暫停!

因為在明天的 Day15,我們要來切換一下題目,進入信件自動化的世界
所以會講解如何與 Gmail 串接、設定、以及 Gmail 標籤化技巧

如果你每天被 300 封信炸到心煩,那千萬不能錯過後面幾天的內容!

我們明天見 👋


🎁 小彩蛋

今天的文章裡,也藏了幾個小彩蛋喔!
眼尖、細心的你有發現嗎?
如果還沒找到,就再回去多看幾次吧 😉
如果很想知道是什麼小彩蛋的話,就關注明天的文章吧~
答案會公布在明天的文章喔~~~


上一篇
🚀 Day 13: Odoo × Line :打造互動式訂單客服
下一篇
🚀 Day 15:工具使用說明:Make × Gmail 實作教學
系列文
站在巨人的肩膀上打造企業智慧助手:Make × AI × Odoo 的實踐之路30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言