§ 00 · metaphor 一個比喻 — 「cc 給 bot」
想像你在公司寫 email 給某位主管,每次寫完按「寄出」 — 郵件系統不只把郵件寄給主管,還自動 cc 給秘書「主管收到了一封新郵件」。 秘書知道有新郵件、可以馬上處理、不用等主管轉發。
LINE webhook 就是這個 cc 機制。你在 LINE 傳訊息給 OA,LINE 的伺服器把訊息正常送到 OA, 順手再 cc 一份給 bot 的伺服器,bot 看到 cc 立刻處理、回應。即時、自動、雙方都同意過 — 你加 bot 為好友的那一刻,就等於授權它收這份 cc。
§ 01 · when it fires 什麼時候會觸發 webhook
會觸發 webhook 的事件大致分四類:訊息(文字、貼圖、語音、圖片、影片、檔案、地點)、 互動(按按鈕、選單、確認 / 取消)、關係變化(加好友、移除好友、被踢出群組), 以及群組事件(bot 被邀進群、被移出群、有人加入或退出群組)。
純 chat 內容(你打字 + 對方收到)不會觸發 webhook, 除非那個 chat 裡有 OA。沒有 bot 的 chat 是 LINE 內部的事,bot 不知道。
§ 02 · privacy 對你的隱私有什麼影響
bot 只看得到「跟它有關的 chat」
你加 site-translation 為好友、或邀它進工地韓組 — 它從那一刻起會收到那個 chat 的 webhook。 其他你的 chat(家人、朋友、其他工作群)bot 看不到。
所以「裝一支 bot」不等於「給它權限看你所有訊息」 — 它只看到它在的那個 chat 裡的訊息。
bot 看到訊息原文
webhook 的內容包含訊息本身(文字、語音的 URL 等)。這是必要的 — bot 要翻譯就要看到原文。 所以選 bot 要看它的隱私政策(hotline.tools 的在 /privacy): 它處理完有沒有刪除?有沒有拿去訓練模型?有沒有給第三方?
hotline.tools 的答案是:處理完即刪除暫存、不訓練模型、不給第三方(除了完成你要的事必要的服務商)。
§ 03 · speed 為什麼 bot 有時候慢一秒回 — webhook 的物理限制
bot 從你按下送出到回訊,中間其實有三段:LINE 把 webhook 送到 bot 伺服器(100–500 ms)、 bot 內部處理(短文字翻譯 200 ms、長語音轉文字 5 秒不等),最後 bot 透過 reply API 再走一趟 LINE 回到你手機(也是 100–500 ms)。
總計:短指令 0.5–1 秒、語音轉文字 5–10 秒、複雜處理 10–30 秒。 如果你覺得 bot「卡了」 — 多半是中間那一段(內容處理)在跑,不是 webhook 故障。
很慢時 bot 會自動傳「處理中…」訊息,避免你以為它死了。
§ 04 · what bot sees bot 收到的資料 — 不是訊息全文
每個 webhook 帶過去的欄位其實很單薄:一個經過雜湊的使用者 ID(不是名字、頭像或生日,是 LINE 給每個使用者的不可逆識別碼)、chat 類型(1:1、group、room)、訊息內容本身(文字/語音 URL/ 圖片 URL)、訊息時間戳,最後是一個 30 秒就過期的一次性 reply token,bot 用它回覆。
bot 沒有看到的:
- 你的真實姓名(除非你授權 displayName 存取)。
- 你的頭像。
- 你的好友列表。
- 你跟其他人的 chat。
- 你的付費資料(LINE Pay 餘額、信用卡)。
這個資料模型對使用者隱私是友善的 — bot 只能看到它在的 chat 裡的訊息, 看不到「你是誰」(除了 LINE 內部的 hash)。