微信API接口實(shí)戰(zhàn):如何打造一個(gè)支持多場景回復(fù)的智能機(jī)器人?)
一個(gè)機(jī)器人要應(yīng)付多種場景答常見問題、查訂單、預(yù)約、轉(zhuǎn)人工。如果每種場景寫一套 if-else代碼很快失控。我們用場景路由把這幾類拆開機(jī)器人只負(fù)責(zé)識別場景和分發(fā)每個(gè)場景自己處理自己的邏輯。接口層用的是Eyun 平臺開放的企微 API接收走 Webhook回發(fā)走 message 模塊。場景路由表先把場景列出來每個(gè)場景給一組觸發(fā)特征關(guān)鍵詞、消息類型、是否要參數(shù)。路由表做成配置加場景不用改代碼。SCENE_ROUTES [ {scene: faq, keywords: [價(jià)格, 地址, 營業(yè)時(shí)間]}, {scene: order, keywords: [訂單, 物流, 發(fā)貨], need_param: order_no}, {scene: booking, keywords: [預(yù)約, 登記], need_param: date}, {scene: human, keywords: [人工, 客服, 投訴]}, ]場景內(nèi)上下文同一場景往往要聊幾輪。比如預(yù)約機(jī)器人問日期、問人數(shù)客戶分幾條回。給每個(gè)會話存一個(gè)當(dāng)前場景和已收集的參數(shù)下一輪消息進(jìn)來先看當(dāng)前場景是否還缺參數(shù)缺就繼續(xù)收集不重新識別。場景切換客戶可能聊到一半換話題——預(yù)約到一半突然問價(jià)格。要能識別出切換清掉當(dāng)前場景的槽位再路由到新場景。判定規(guī)則新消息命中其他場景的關(guān)鍵詞且當(dāng)前場景沒有正在等待的參數(shù)就允許切換。參數(shù)拿不到怎么辦場景需要參數(shù)但客戶沒給時(shí)明確告訴他缺什么別硬猜。缺參數(shù)超過兩輪還是沒給轉(zhuǎn)人工?;卣{(diào)消息體字段在開發(fā)文檔里有完整說明。結(jié)尾多場景機(jī)器人不難在場景本身難在場景之間的邊界——怎么識別、怎么切換、切換時(shí)舊上下文怎么清。路由表加會話上下文這兩樣做對了加場景就是往表里加一行。