讓 AI 聊天機器人把對話即時轉接給我本人
· 中文 · Claude Sonnet 5 代筆
這個網站上的 AI 助理(她叫樂樂)確實很擅長回答關於我的履歷、專案作品、和證照這類事實性問題。但偶爾會遇到訪客真正想問的不是「跟我說說喬伊」,而是「我有一個真正的機會,想直接跟喬伊本人談」。再好的 AI 回覆,都不等於真的跟我對話,我不希望這些訪客走到這裡就撞牆。
最直覺的解法——直接把 email 印在頁面上——有自己的問題:容易被爬蟲抓走、招來毫無上下文的陌生開發信,而真正有意願的訪客也完全不知道自己寄出去的訊息有沒有人會看。所以我做了一個更好的版本:AI 助理可以在對話當下,把一段有潛力的對話升級成跟我本人的即時文字對話,透過 Telegram 進行,訪客完全不需要離開聊天視窗。
架構
技術堆疊
- Astro Actions(伺服器端請求處理,跟聊天小工具原本用的是同一套管線)
- Redis(記錄一段對話目前是在等我回覆,還是已經是即時對話中)
- Telegram Bot API(我實際會看到、也會回覆的管道——我的手機)
- Anthropic Claude 工具呼叫(AI 助理在對話進行中,自己判斷要不要提供這個選項)
- React 聊天元件(訪客原本就在用的同一個聊天視窗,加上一個安靜在背景輪詢的機制)
對話的完整流程
這不是另一個獨立的應用程式,也不是另一個頁面——就是同一個聊天視窗,背景默默進行輪詢,一有變化畫面就會自動更新。
從訪客的角度,這是怎麼運作的
- 你只需要正常聊天。樂樂絕不會主動提起這個功能,也絕不會列出「商業合作」「工作機會」這類選項讓你照樣造句——如果你描述的內容聽起來可能值得升級,她會用開放式提問多了解一些。
- 如果內容真的值得我直接關注,她會問你要不要她幫忙確認我現在是否方便直接聊——並且會老實告訴你這不保證一定成功。
- 如果你說要試試看,我的手機就會收到訊息。我大約有一分鐘的時間可以回覆;這段時間你不用乾等——可以照常跟 AI 繼續聊其他事,如果你直接問她還要等多久,她會誠實告訴你,不會亂猜或顧左右而言他。
- 如果我當下有空,對話就會變成即時轉發:你打的字會直接送到我這邊,我的回覆也會出現在同一個聊天視窗裡。對話結束時我可以隨時結束這段即時對話,之後就會自動交還給 AI 繼續服務。
- 如果我當下沒空,或是你的需求後來發現不需要即時對話,樂樂會提供備援方案:留下你的名字、聯絡方式、和想談的內容,我自己會主動跟你聯繫——或者,如果情境合適,她也可能會提議把 Cal.com 頁面給你,讓你直接挑一個時間,不用等我回覆。不管走哪一條路,她都已經記得你在對話裡講過的內容,不用再重講一次。
幾個值得一提的設計決策
沒有「上線」開關。 我不需要手動切換一個「我現在有空」的狀態——每一次請求都是當下獨立判斷。一個忘記關掉的「上線中」標記,比每次都重新問一次還糟。
誠實,而不是打假的安心針。 如果我當下已經在跟其他幾位訪客洽談,AI 助理會老實說明,而不是假裝我一定會馬上回覆。她偶爾會提議的 Cal.com 連結也是同樣的原則——她會講清楚那只是一個連結,不是她真的去查過我的行事曆。我寧可先講清楚期待,也不要承諾一個我沒辦法穩定做到的事。
聯絡資訊只會單向流動。 AI 助理絕對不會代替我把我的個人聯絡方式交給訪客——資訊只會從訪客流向我,不會反過來。這一點也寫在這個網站的隱私權政策裡。
等待的同時,AI 不會停下來。 等我瞄一下手機的這段時間,聊天並不會被鎖住——訪客跟 AI 助理還是可以繼續聊任何其他話題。
她會記得,你不用重講一次。 早期版本的 AI 只記得同一次對話裡最近幾輪交換——你在第一輪講了名字,到第八輪可能就已經被後面的內容擠掉、完全消失了。現在,任何真正值得記住的資訊(你的名字、聯絡方式、想談的事)都會被寫進一份跟你這次造訪綁定的小型結構化紀錄,跟那個會不斷輪替的對話記憶是分開的,而且會保留大約一週。過幾天再回來,她也不會從零開始。
不會反覆打擾。 如果同一位訪客最近才被我拒絕過、或是我沒能及時回應,AI 助理不會在一小時內又問我一次——她會直接走備援方案,如果情境自然,還會誠實提一句「剛剛才試過」。我寧可她主動退一步,也不希望同一個人的請求在二十分鐘內讓我的手機響兩次。
歡迎親自體驗
如果你有真正想直接跟我討論的事情,直接在下面的聊天視窗自然地說出來就好——沒有任何特定關鍵字可以觸發這個功能,我寧可讓樂樂真的理解你的情況,也不希望你去猜一句魔法咒語。如果真的合適,她會主動提議幫你確認我是否方便。