~/blog/ai-sales-coach-crm-conversation-analysis.md
企業系統與 CRM · 2026 / 01 / 08

業務主管不再聽錄音聽到耳聾!用 AI 分析 CRM 對話紀錄,打造 24H 自動化「銷售教練」系統

Eric — 浪花科技創辦人 / AI 架構師
Eric
浪花科技創辦人 · AI 架構師
業務主管不再聽錄音聽到耳聾!用 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 欄位(例如 strengthsweaknessessuggested_scriptsentiment),等於替後端定好了一份穩定的資料契約(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,硬塞只會被截斷。常見的處理策略有兩種:

  1. 分段摘要(Map-Reduce):先把長逐字稿切成數段,各自摘要重點,再把這些摘要彙整成一份濃縮版,最後才送進「教練」分析。
  2. 分段標記再合併:對每一段分別產出局部觀察(例如哪一段在做需求挖掘、哪一段出現異議),最後合併成整通電話的評估。

另外,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 驗證和除錯,歡迎隨時找我們聊聊。

延伸閱讀

// FAQ

常見問題

AI 銷售教練和 AI 客服有什麼不同?
兩者方向相反。AI 客服是對外的,面向客戶,目的是即時回應與減少人力負擔;AI 銷售教練是對內的,面向自己的業務團隊,透過分析通話紀錄產出含優點、缺點與話術建議的指導報告,目的是武裝業務、提升成交能力。
為什麼 AI 銷售教練要強制 LLM 以 JSON 格式輸出分析結果?
因為下游要把結果寫進資料庫、塞進儀表板。若讓 AI 自由發揮散文,每次都得用脆弱的字串切割解析,格式一變就壞。要求固定的 JSON 欄位(如 strengths、weaknesses、suggested_script、sentiment)等於替後端定好穩定的資料契約,搭配模型的 JSON 模式或結構化輸出更能降低格式跑掉的機率。
一通超過模型 context window 的長會議逐字稿該如何處理?
硬塞會被截斷,常見策略有兩種:一是分段摘要(Map-Reduce),先把逐字稿切段各自摘要重點,再彙整成濃縮版送進分析;二是分段標記再合併,對每段產出局部觀察後合併成整通電話的評估。也可選用支援較大 context window 的模型來容納長文本。
WP-Cron 和 Action Scheduler 在排程觸發上有什麼差別?
WP-Cron 是「有人造訪網站才會被喚起」的偽排程,流量低的後台可能延遲。若需要穩定、可重試、能處理大量任務的佇列,WooCommerce 內建的 Action Scheduler 更可靠,它能把每筆對話分析當成獨立任務排入佇列,失敗時自動重試,也方便監控進度。
做對話分析時 temperature 該怎麼設定?
分析評估這類需要穩定、可重現結果的任務,把 temperature 調低(更接近 0)通常比預設值更可靠。溫度高雖然語句更有創意,但也更容易產生不一致的判斷,因此銷售對話評估建議採用較低的溫度設定。
~/roamer-tech/newsletter // FREE
// newsletter

訂閱免費電子報

把 AI 自動化、企業系統設計與 WordPress / Laravel 開發的真實案例和可直接照做的技巧,整理成電子報寄給你。只寄精選內容、不灌垃圾信,一鍵就能退訂。

$
// final.exec()

準備好讓你的網站開始為你工作了嗎?