業務主管不再聽錄音聽到耳聾!用 AI 分析 CRM 對話紀錄,打造 24H 自動化「銷售教練」系統
☰ 目錄 table-of-contents.md
結論先講:別再用人耳聽完每通錄音
銷售檢討會上,主管往往只憑抽聽的兩三通錄音,就得對整個團隊的話術下判斷——CRM 裡其餘堆積如山的通話錄音、會議逐字稿與 Email 往來,根本沒人有時間聽完。這篇要解決的,就是讓 AI 自動把這些對話轉成可執行的銷售指導,當一個 24 小時不喊累、不下班的銷售教練。
答案是:用 WordPress(或任何能跑排程與呼叫 API 的中樞)串接你既有的 CRM,把對話逐字稿丟給大型語言模型(LLM),透過設計良好的提示詞(Prompt)讓它扮演「資深銷售教練」,自動產出含優點、缺點、話術建議的結構化報告,再回寫 CRM 或發給業務本人。整套流程的關鍵不在於模型多強,而在於三件事:提示詞的精準度、長對話的分段策略、以及把資料送出前的 PII 去識別化。
以下我會帶你走完從架構設計、API 串接、提示詞工程到資安處理的完整實作脈絡。
嗨,我是 Eric,浪花科技的資深工程師。說實話,身為工程師,我看到業務團隊還在用「人耳」去聽每一通 Call,就覺得這是對算力的極大浪費。2025 年了,AI 不應該只是拿來寫寫文案或生成圖片。真正的「營收智慧(Revenue Intelligence)」在於如何把堆積如山的 CRM 對話數據,轉化為具體的銷售建議。今天,我要帶大家實作一套「AI 銷售教練」系統,讓你的 WordPress 與 CRM 變成自動化的業務培訓基地。
AI 銷售教練跟 AI 客服有什麼不同?
很多人搞混了「AI 客服」和「AI 銷售教練」,兩者方向完全相反:
- AI 客服是對外的:面向客戶,目的是即時回應、減少人力負擔。
- AI 銷售教練是對內的:面向你自己的業務團隊,目的是武裝他們、提升成交能力。
試想一下這個場景:你的頂尖業務員小陳,每次遇到客戶殺價都能完美化解;而剛來的新人小王,一聽到「太貴了」就只會沈默或直接打折。身為主管,你沒辦法陪小王去跑每一個客戶。這時候,如果有一個 AI 能自動分析小王的通話紀錄,並告訴他:「在客戶提到價格異議時,你應該嘗試用價值錨定法,而不是直接降價。」這就是 AI 銷售教練的價值。
為什麼不直接買現成的國外大廠工具?
Gong.io 或 Chorus.ai 這些國外大廠雖然好用,但價格昂貴,且對中文語境(尤其是台灣在地的商務對話)支援度有時不盡人意。透過 WordPress 強大的整合能力,配合 OpenAI 或 Anthropic 的 API,我們完全可以自幹一套符合在地需求的輕量級系統——而且資料流向、去識別化規則、報告格式全都掌握在自己手裡。
系統架構:如何讓 WordPress 聽懂 CRM 的話?
這套系統的核心邏輯其實不複雜,我們工程師常說:「Input 決定 Output」。這裡的 Input 就是 CRM 中的對話紀錄(Transcripts)或 Email 往來。整體可以拆成四個角色:
| 角色 | 負責什麼 | 常見選項 |
|---|---|---|
| 資料源(Data Source) | 提供對話原始素材 | CRM 系統(如 HubSpot、Salesforce),或 WooCommerce 的對話外掛 |
| 大腦(Processing Unit) | 理解對話、產出建議 | LLM,推薦使用 GPT-4o 或 Claude 3.5 Sonnet,因為它們對長文本的理解能力較強 |
| 中樞(Orchestrator) | 定時觸發、串接、清洗、回寫 | WordPress + 排程系統(WP-Cron 或 Action Scheduler) |
| 輸出(Output) | 把建議送到對的人手上 | 自動生成的「教練建議報告」,回寫至 CRM 或發送給業務本人 |
這裡有個常被忽略的設計重點:觸發時機。WP-Cron 是「有人造訪網站才會被喚起」的偽排程,流量低的後台可能延遲;如果你需要穩定、可重試、能處理大量任務的佇列,Action Scheduler(WooCommerce 內建的背景任務框架)會是更可靠的選擇,它能把每一筆對話分析當成獨立任務排入佇列,失敗時自動重試,也方便監控進度。
實戰開發:從 API 串接到 Prompt Engineering
這裡我會秀一些簡單的程式碼片段。我知道大家用的是經典編輯器,所以我會盡量保持格式乾淨。我們要做的是一個 PHP Function,它會去抓取對話紀錄,然後丟給 AI 分析。
步驟一:獲取對話紀錄
假設你的 CRM 提供了 API 讓你獲取某筆 Deal 的 Note 或 Call Log。這裡以偽代碼(Pseudo-code)示意:
function get_crm_conversation_log( $deal_id ) {
// 這裡通常會使用 cURL 或 wp_remote_get 來呼叫 CRM API
$api_url = 'https://api.your-crm.com/v1/deals/' . $deal_id . '/timeline';
$response = wp_remote_get( $api_url, array(
'headers' => array(
'Authorization' => 'Bearer ' . YOUR_CRM_API_KEY
)
));
if ( is_wp_error( $response ) ) {
return false;
}
// 假設回傳的是 JSON 格式的對話文字
$body = wp_remote_retrieve_body( $response );
$data = json_decode( $body, true );
return $data['transcript']; // 取出對話逐字稿
}
實務上這一步別忘了三件事:檢查 HTTP 狀態碼(不是只看 is_wp_error,API 可能回 401/429 但仍是「成功的 HTTP 回應」)、處理速率限制(Rate Limit),以及把 API Key 放進 wp-config.php 或環境變數而非寫死在程式裡。
步驟二:設計「教練」的 Prompt(提示詞)
這一步是成敗關鍵。你不能只叫 AI「分析這段話」,那樣它只會給你摘要。你需要賦予它「資深銷售總監」的人設。這是我經過多次測試後,覺得效果不錯的 Prompt 架構:
工程師的小囉嗦:Prompt 就像寫程式的 Spec,寫得越模糊,AI 吐出來的 Bug(幻覺)就越多。
- Role(角色):你是一位擁有 20 年 B2B 銷售經驗的王牌銷售教練,擅長 SPIN 銷售法。
- Task(任務):分析以下的銷售對話紀錄。
- Constraints(限制):請不要只給讚美,必須指出具體的改進點。
- Output Format(格式):請以 JSON 格式輸出,包含「優點」、「致命缺點」、「話術建議」、「客戶潛在情緒」。
$system_prompt = "你是一位資深銷售教練。請分析對話紀錄,並針對業務員的表現進行評分。"
. "重點分析:1. 開場白是否吸引人 2. 需求挖掘是否深入 3. 異議處理是否恰當。"
. "最後,請給出一段『如果重來一次,這句話該怎麼說』的具體範例。";
為什麼要強制 JSON 輸出?
因為下游要把結果寫進資料庫、塞進儀表板。如果讓 AI 自由發揮散文,你每次都得用脆弱的字串切割去解析,格式一變就壞。要求固定的 JSON 欄位(例如 strengths、weaknesses、suggested_script、sentiment),等於替後端定好了一份穩定的資料契約(Schema)。許多模型也提供「JSON 模式/結構化輸出」的開關,搭配使用能大幅降低格式跑掉的機率。
步驟三:呼叫 AI 並處理回傳
接著我們把資料丟給 OpenAI API。這裡要注意 Token 的限制,如果對話太長(例如一小時的會議),可能需要先進行分段摘要,或是使用支援 128k context window 的模型。
function generate_sales_coaching_advice( $transcript ) {
$api_key = 'YOUR_OPENAI_API_KEY';
$endpoint = 'https://api.openai.com/v1/chat/completions';
$payload = array(
'model' => 'gpt-4o', // 建議使用較聰明的模型
'messages' => array(
array('role' => 'system', 'content' => $system_prompt),
array('role' => 'user', 'content' => $transcript)
),
'temperature' => 0.7
);
// 發送請求 (略過詳細 cURL 設定...)
// 處理回傳...
return $ai_advice;
}
長對話該怎麼塞進模型?
當一通會議逐字稿超過模型的 context window,硬塞只會被截斷。常見的處理策略有兩種:
- 分段摘要(Map-Reduce):先把長逐字稿切成數段,各自摘要重點,再把這些摘要彙整成一份濃縮版,最後才送進「教練」分析。
- 分段標記再合併:對每一段分別產出局部觀察(例如哪一段在做需求挖掘、哪一段出現異議),最後合併成整通電話的評估。
另外,temperature 設定也值得斟酌:分析評估這類需要穩定、可重現結果的任務,把溫度調低(更接近 0)通常比預設值更可靠;溫度高雖然語句更有「創意」,但也更容易產生不一致的判斷。
進階應用:情感分析與成交機率預測
除了給出話術建議,我們還可以利用 AI 進行「情感分析(Sentiment Analysis)」。很多時候,客戶嘴巴說「我再考慮看看」,但語意中其實充滿了興趣,只是在等待一個推力;或者客戶說「還不錯」,但 AI 可以分析出其用詞極度敷衍。
透過將這些「非結構化數據」轉化為「結構化標籤」(例如:客戶興趣度:高/中/低),我們可以回寫到 WordPress 或 CRM 的資料庫中。這樣一來,業務主管不需要打開錄音,只要看後台的儀表板,就知道今天哪個業務跟客戶談崩了,哪個客戶其實快成交了。
這套「把對話訊號變成結構化標籤」的能力,正是銷售預測模型的優質燃料:當每通電話都被打上興趣度、異議類型、跟進建議等欄位後,這些資料就能進一步餵給預測模型,估算每筆 Deal 的成交機率。對話分析與業績預測,本質上是同一條數據管線的上下游。
資安與隱私:工程師的堅持
在把資料送給 AI 之前,我要嚴肅地提醒一件事:PII(個人識別資訊)的處理。客戶的電話、信用卡號、住址,這些絕對不能直接裸奔傳輸給公有的 LLM。
在我們的程式碼中,必須加入一層「資料清洗(Sanitization)」的中介層。可以使用 Regex 正規表示法,將手機號碼或 Email 替換成 [REDACTED]。這不僅是為了合規(GDPR/個資法),也是保護公司的商業機密。
去識別化的實務原則
- 傳出前遮蔽、入庫前還原(必要時):去識別化應發生在資料「離開你的伺服器、送進外部 LLM」之前;分析結果回來後,若報告需要對應到具體客戶,再於內部安全環境關聯回去。
- Regex 只是第一道防線:固定格式的電話、Email、信用卡號適合用 Regex 攔截;但人名、公司名這類沒有固定格式的資訊,Regex 不一定抓得乾淨,重要場景需要再加一層人工抽查或命名實體辨識。
- 選擇不拿你資料訓練的方案:面向企業的 API 方案通常會承諾不將你的資料用於模型訓練,正式導入前務必確認服務條款與資料保存政策。
結語:從「管理」到「賦能」
導入 AI 銷售教練系統,目的不是為了監控業務員,而是為了賦能(Enablement)。當你的業務員發現,每次通話結束後沒多久,手機就能收到一條精準的建議,告訴他下次如何改進,他會把這個系統當成夥伴,而不是監視器。
這套系統的搭建並不難,難的是如何將它無縫整合進你們現有的工作流。如果你對這套架構感興趣,但不想自己碰那些煩人的 API 驗證和除錯,歡迎隨時找我們聊聊。
延伸閱讀
常見問題
AI 銷售教練和 AI 客服有什麼不同?
為什麼 AI 銷售教練要強制 LLM 以 JSON 格式輸出分析結果?
一通超過模型 context window 的長會議逐字稿該如何處理?
WP-Cron 和 Action Scheduler 在排程觸發上有什麼差別?
做對話分析時 temperature 該怎麼設定?
訂閱免費電子報
把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。