滴滴客服解決方案平臺建設實踐

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"前言"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"客服是連接用戶與事業部的橋樑。從用戶角度,用戶通過智能渠道如C端自助或者人工客服渠道反饋問題和表達訴求,渠道識別和記錄用戶問題後,給出問題對應的解決方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在過去,問題對應的解決方案散落在渠道及各相關模塊中,導致很多問題的解法(包括體驗和邏輯)不一致,解決方案質量難以保證,影響解決能力和用戶體驗,而且難以管理和運維。另一方面,這些解決方案很大程度依賴事業部提供的服務能力,以往的編程式接入成本高迭代週期長,而且缺乏統一管理會導致相同場景下服務能力使用的一致性難以保證,影響解決方案的質量和用戶體驗。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了保證解決方案質量,提升用戶體驗和管理效率,我們需要統一管理這些解決方案:建設解決方案平臺,整合各事業部提供的"},{"type":"text","marks":[{"type":"strong"}],"text":"業務信息"},{"type":"text","text":"和"},{"type":"text","marks":[{"type":"strong"}],"text":"服務能力"},{"type":"text","text":",爲人工和智能渠道統一提供"},{"type":"text","marks":[{"type":"strong"}],"text":"標準化解決方案"},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"解決方案平臺"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"分析散落各處的解決方案,一般是基於事業部輸入的業務邏輯和服務能力封裝的處理能力,大體可以分爲兩類:回答諮詢使用的話術和解決問題的處理流程。爲此我們目前提供了靜態知識和動態流程兩類標準解決方案,加上方案匹配層,組成整個解決方案平臺:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"動態解決方案"},{"type":"text","text":":主要指流程,簡稱爲SOP,應用場景比較廣泛,例如用戶自助處理單車關鎖失敗的流程,或者人工客服解決用戶費用投訴的流程等,主要支持需要按標準流程處理和解決用戶問題的場景;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"靜態解決方案"},{"type":"text","text":":主要指知識,相關產品在業內通常稱爲知識庫,在諮詢類和指導類場景中很常見,例如用戶進線諮詢某個活動的規則,又例如客服熟悉新業務知識等,主要應用於規則介紹、問題解釋和指導等場景;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"方案匹配"},{"type":"text","text":":主要負責管理問題到答案的關係;"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/f6\/f6607d4eaebc9aa6f7ac6d1b09ef7fad.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"動態解決方案"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"針對需要通過標準化流程引導以及解決用戶問題的場景,我們提供了流程管理平臺,負責生產、執行和管理動態流程。用戶(C端用戶、客服等)通過表單界面進行信息交互,背後則是處理該問題的業務流程向前驅動和處理,下圖是對這個鏈路的一個簡單示意:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":"br"}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/6d\/6d79fdd4ccefbc4a3a74068df5152f0f.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在這個鏈路中需要解決幾個問題:1). 如何支持不同渠道的交互方式;2). 如何支持處理流程標準化;3). 業務信息和服務能力如何規範且高效地接入。爲此,我們在設計上從幾方面進行了拆分:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"交互方式"},{"type":"text","text":":通過不同的表單類型支持各渠道不同的交互方式。同時通過多樣化的組件能力、交互方式實現表單的可擴展性,支持不同業務在不同場景的各種訴求,爲用戶提供標準化的交互能力和一致的交互體驗。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"流程管理"},{"type":"text","text":":流程是業務處理邏輯的核心部份,它負責根據用戶和業務的輸入數據,驅動處理步驟按業務規定的邏輯執行,起到引導和規範的作用。我們基於流程引擎提供了核心的流程執行和管理能力,支持業務針對不同場景自定義處理流程,實現從流程接入到執行的線上化和標準化。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"資源管理"},{"type":"text","text":":表單和流程的設計支持了業務信息的標準化接入,而對於服務能力的接入,我們從使用的角度定義了資源的概念,主要包括了api以及api返回的字段field。爲了管理資源,我們基於資源引擎搭建了資源配置化接入和使用的能力,支持事業部服務能力的標準化接入,同時對業務運營使用服務能力更加友好。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"整體功能架構"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/3f\/3f99bdc459f7d1494d149ebabe98a2bd.png","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目前,基於流程的整套配置管理能力,一個流程從設計到測試到上線實現了全流程線上化,很大程度地縮短了業務迭代週期,提升產研效率。同時,基於這條鏈路實現了業務可視化管理,爲業務在業務梳理、質量把控、風險控制等方面提供了有力支持。在今年年中,我們打通了C端自助鏈路,意味着一個用戶問題對應的處理自助流程上線可以完全配置化上線,迭代效率平均提升60%。在此基礎上也同時打通了端-解決方案-工單的數據鏈路,爲業務精細化運營提供數據支撐,助力業務綜合提升解決能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"靜態解決方案"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"針對大量業務信息要透傳給用戶或者輔助客服解決用戶問題的這些場景,我們提供了標準的靜態知識解決方案,從產品層上提供客服知識點、用戶Q&A對、相似問題列表等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"整體功能架構"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/08\/08b7facf6818321bd8e7cbfe5d6c3a19.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在客服業務中,對靜態知識有兩個核心訴求:1. 知識的結構化\/非結構化存儲;2. 適用各場景的檢索能力。當前產品在這兩方面的能力受限於關係型數據庫的存儲,接下來將進行一系列升級建設,同時也包括產品層面知識檢索、運營和反饋等功能的進一步加強。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"方案匹配"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"方案匹配是指根據用戶問題找到相應的解決方案,處理多渠道的問題與同一方案的匹配關係。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一般說來對於匹配過程,一個問題能找到唯一的解決方案,一個解決方案可以對應多個問題。那麼理想情況下,我們分別爲用戶的每個問題和每個解決方案設計唯一的編號,方案匹配層只需要維護問題到答案的一對多的關係即可。但在落地過程中我們發現:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"用戶問題的描述方式不是唯一編號,而是多維度的排列組合;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"每次想匹配的不一定是一個標準解決方案,也可以是一組,比如一個靜態知識方案和一個動態流程方案打包成最終的解決方案;"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因此方案匹配層的設計思路是維護問題組到答案組的關係,目前這一層的能力比較單薄,未來計劃升級底層能力,支持異構的問題組和答案組匹配,提升可擴展性以適應業務及產品層的快速迭代。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"技術沉澱"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"前面我們從業務視角介紹瞭解決方案平臺如何支持客服業務,其實在平臺建設過程也遇到了一些技術上的挑戰,下面主要結合解決方案平臺建設過程中遇到的問題介紹一些技術沉澱:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"流程引擎"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"背景"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在介紹動態解決方案的時候,我們提到它底層依賴的"},{"type":"text","marks":[{"type":"strong"}],"text":"核心基礎能力"},{"type":"text","text":"——流程引擎。在方案選型的時候我們調研了Activiti等方案,作爲比較成熟的工作流引擎,activiti功能強大且有比較完整的生態,但在我們的場景中優勢並不明顯,主要體現在幾方面:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"從定位上,我們建設的是流程引擎產品化後的產品,對流程引擎只依賴流程驅動的核心能力;從功能上,在流程定義和執行過程中對部署校驗、數據交互、分支選擇等方面有activiti不滿足或不易擴展的需求;從性能上,Activiti的通用性和靈活性決定了實現的複雜度,如頻繁的存儲層操作等導致其性能表現不佳,不能很好地滿足我們的C端場景對性能的需求;此外考慮上手成本及維護成本等綜合因素,最終我們決定針對我們的場景自研。作爲輕量級的流程引擎,自研流程引擎主要負責提供穩定而高效的能力:驅動流程執行,告訴上層下一個節點是什麼。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"關鍵模型"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/79\/79c393d8f456fe00fe6d95cfb487cf5c.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"以上圖爲例,簡單介紹下我們如何描述一個流程(*考慮到兼容性,我們在設計如何描述流程時參考了bpmn的相關規範):"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"流程"},{"type":"text","text":":定義了起點、終點以及起點到終點需要執行的活動、執行路徑、執行策略;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"流程元素"},{"type":"text","text":":構成流程中的各種元素,分爲節點和順序流兩大類,其中節點又分了事件節點(如開始和結束節點)、任務節點、網關節點(如排他網關節點);"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"流程模型"},{"type":"text","text":":每個元素中描述了它從哪來可以向哪去,於是用流程元素列表可以完整描述一個流程;"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"整體設計"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"要使用一個流程分兩步:1. 設計一個流程;2. 執行這個流程;好比定義一個類與創建一個對象的關係。因此流程引擎的架構基本也是按照這樣的思路來設計,分爲兩大部份:流程定義和流程執行:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/f3\/f38d93c580e6585e36d882dab8d426ac.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"1. 流程定義"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了保證流程在執行過程中,不受流程模型更新的影響,以及考慮運維場景的需求,我們在流程定義時對流程模型採用了近似快照的處理,在流程執行時直接使用快照模型:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/43\/4359aacefae5288117bac871e77e54f3.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"2. 流程執行"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"流程執行其實是從開始節點開始,處理當前節點,完成處理後根據當前狀態及配置規則找到下一個節點,並繼續處理節點,直到結束節點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":"br"}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/b7\/b763d2d4bf8e6f0b3136fcf203b429e7.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"RuntimeProcessor"},{"type":"text","text":":在流程執行過程中,上游主動與引擎交互的時機爲開始執行流程和執行流程中的一些任務節點,流程引擎爲流程執行開放了三個核心接口:開始執行、提交任務、回滾任務(提交的逆向操作);"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"FlowExecutor"},{"type":"text","text":":負責根據流程定義不斷驅動節點的處理,同時管理流程實例的狀態;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"ElementExecutor"},{"type":"text","text":":負責單個節點的處理,包括下一個節點的選擇,同時管理節點實例的狀態;"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"經過數月驗證與遷移,現在我們的流程引擎已支撐動態解決方案90%的流量,其中包括面向C端的鏈路。在性能和穩定性表現比較好,上線至今未發生過任何一起相關故障。除了解決方案平臺的使用場景以外,流程引擎也在進一步探索開放化,目前已在工單相關場景中落地。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"資源引擎"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"背景"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"前文提到,解決方案平臺爲了解決各種用戶問題,會整合的業務輸入中還有一部份是服務能力(目前主要是由各事業部通過API提供)。不僅解決方案平臺,整個客服業務在其他場景也有類似對接大量業務API的需求。基於使用和管理這些API以及高效接入和迭代的各種需求與痛點,我們參考解決方案平臺的API接入&管理模式,將其沉澱抽象出資源引擎,收斂管理客服體系內接入的事業部API,提供使用資源的工具,支持配置化接入及統一管理。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"整體設計"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在這裏我們將事業部提供的服務能力稱爲“資源”,並根據使用場景將資源分爲兩大類:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"API"},{"type":"text","text":":主要指事業部提供的接口能力,eg. 查詢訂單詳情api;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Field"},{"type":"text","text":":通常爲一個字段,eg. 訂單詳情接口返回的“總金額”字段。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"使用資源分爲定義資源和獲取資源兩部份,資源引擎提供的能力也以這兩部份爲核心,輔以相關的配套管理能力,於是我們設計了相關的模塊:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"客服端:SDK,使用方自行集成該SDK,根據資源引協議,查詢資源定義,並獲取及解析資源;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"服務端:服務端,支持資源定義的查詢;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"管理平臺:配置化接入資源及資源列表的統一管理;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"*質量數據:產出離線數據,包括接入的資源的使用情況、錯誤率、耗時等質量數據,幫助使用方及事業部發現問題,迭代方案;"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"交互模式:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/c0\/c0ecad1b39a4f9010562c237d45b69c2.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"系統架構:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/51\/51ceeda9027bd17b318a21d417963e1f.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Manage"},{"type":"text","text":"r:資源管理後臺,是資源及相關的配置管理入口;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Server"},{"type":"text","text":":服務端,需要高性能且穩定地支持客戶端的查詢,儘量做到輕量,因此server只做兩件事:訪問控制和高效查詢;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Client"},{"type":"text","text":":客戶端SDK,負責獲取資源;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"*Resource"},{"type":"text","text":":事業部提供的服務能力,目前主要支持API,未來根據需求考慮擴展;"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"資源計算"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"可以看到,其中Client即SDK負責最核心的獲取資源的邏輯,層次設計:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Protocol"},{"type":"text","text":":協議層,描述sdk使用方如何使用資源,例如可擴展GQL等;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Processor"},{"type":"text","text":":核心邏輯,a. 與server交互獲取資源相關定義;b. 根據定義計算執行計劃;c. 通用executor調用事業部API;d. 解析和加工API返回的數據,得到最終結果;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Executor"},{"type":"text","text":":根據資源定義,調用事業部能力獲取直接結果;"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"舉個例子,已知:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"field f1來自api a1(對應返回結果的apiField1字段);"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"api a1的參數爲field f4;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"field f4不是api數據,只是對field f3的再加工;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"field f3的值爲v3;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"field f2描述省略..."}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"求:f1、f2的值;"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/38\/38f7b08d9a14219cbbf336ac2bd60502.png","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Interpret"},{"type":"text","text":":協議解析,解析出參數列表以及需要獲取的資源列表;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Preprocess"},{"type":"text","text":":這裏包括要獲取的資源以及它們依賴的所有資源的配置;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Allocate"},{"type":"text","text":":將2得到的資源列表分成組,分組原則是組內的每個資源至少與組內的另一個資源有依賴關係,且不依賴任何組外的資源,抽象來說類似有向聯通圖的意思;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"Process"},{"type":"text","text":":將每個組內的資源列表提交給處理任務,遍歷進行原子處理:"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"遞歸獲取該資源依賴的資源列表;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"執行API,得到原始結果;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"根據transformer,對原始結果進行加工,得到最終結果;"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"資源引擎除了支持解決方案平臺,目前還在特徵、工單等場景落地。此外,除了支持事業部服務能力接入,資源引擎也適用於客服能力輸出給事業部的場景中,目前這套標準化方案也在建設中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"結語"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"解決方案平臺通過標準化的思路,整合業務提供的業務信息和服務能力,拉齊不同渠道的答案和處置方案,提供可視化的方案管理平臺。在打磨標準化能力的同時,下一步將會向着自動化與智能化的方向探索,以期在提升解決能力,支持精細化運營等方面發掘更大價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"horizontalrule"},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"頭圖:Unsplash"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:滴滴智能中臺"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文:https:\/\/mp.weixin.qq.com\/s\/O3XD2wFRtU8LB5X3kMFVXA"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文:滴滴客服解決方案平臺建設實踐"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"來源:滴滴技術 - 微信公衆號 [ID:didi_tech]"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"轉載:著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章