iT邦幫忙

2026 iThome 鐵人賽

DAY 27
0
AI Engineering

30 天從資料處理、分析到生成式 AI 的整合應用與實作學習系列 第 27 篇

LINE 收到訊息後,怎麼串接原本的 Gemini 分析?

  • 分享至 

  • xImage
  •  

目前回覆的內容還只是把收到的文字重新傳回去,並沒有連到前面的睡眠分析功能。那如果要把 LINE、Java Server、Gemini 和前面的分析功能全部串起來,資料將會是如何一路傳遞的?

Data Flow Diagram

就是資料在系統中,從一個元件傳到另一個元件的過程圖。以使用者從 LINE 輸入「我最近的睡眠時數是多少?」為例,這個問題不會直接交給 Gemini,而是會經過好幾個步驟:
https://ithelp.ithome.com.tw/upload/images/20261010/20184235IGEHZaBc0v.png
有了這個圖,可以方便我們清楚各個元件負責的部分以利續寫程式和協助除錯。

LINE、Server和 Gemini 分別負責什麼?

在這個睡眠分析助手裡,LINE 主要為使用者操作的介面,負責讓使用者輸入問題以及顯示最後的回答;Java Server 負責接收 LINE 的 Webhook Event、呼叫原本的分析流程,最後再透過 Reply Message API 將結果傳回 LINE。而 Gemini 則是理解使用者想問什麼、判斷要使用哪一項分析,並將 Java 計算出的結果整理成合理的回答。

串接原本的分析流程

https://ithelp.ithome.com.tw/upload/images/20261010/201842350eAR6DcIMq.png
在 Web 中的取得問題的變數叫做 userQuery,而 LINE Webhook 中取得的問題叫做 userMessage,但在 Java Server 裡它們基本上其實都只是 String。因此對後面的分析功能來說,其實不需要知道問題是從 Web 還是 LINE 傳進來的。只要最後都整理成 Java 可以處理的文字,就能交給同一個分析流程。從這裡也可以發現,使用者輸入的介面和真正的分析邏輯是可以分開處理的。

為什麼不要直接用 LINE Handler 分析?

如果直接把 Gemini 和睡眠資料分析全部寫進 WebhookHandler,這些功能就會和 LINE 綁在一起。當 Web 也需要相同的分析功能時,就可能需要重複撰寫或維護相似的程式碼。所以讓 WebhookHandler 只需要取得 LINE 傳來的資料,再把問題交給原本的 GeminiService 和 SleepAnalyzer,就能讓 Web 和 LINE 共用同一套分析流程。

實作結果

最後重新從 LINE 輸入:
「我的平均睡眠時數是多少?」和「我需要注意什麼?」
https://ithelp.ithome.com.tw/upload/images/20261010/20184235JJG85A2LoB.png
這次 Java Backend 不再只是把原本的問題傳回來,而是會進入前面完成的睡眠分析流程,再將分析結果透過 Reply Message API 回覆到 LINE。
https://ithelp.ithome.com.tw/upload/images/20261010/20184235ioLyigopGS.png


上一篇
如何讓 LINE Bot 自動回覆訊息?
下一篇
認識 Deployment:如何將 Backend 部署成 Public Server?
系列文
30 天從資料處理、分析到生成式 AI 的整合應用與實作學習 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言