From 1bdee01a0a2418c769c17bf0a6e41b32c01cb8f0 Mon Sep 17 00:00:00 2001 From: Patrick Peng Sun Date: Wed, 31 May 2017 22:37:19 +1000 Subject: [PATCH] session incoming message redesigned. --- chatSession.go | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/chatSession.go b/chatSession.go index c78e337..f6a13bb 100644 --- a/chatSession.go +++ b/chatSession.go @@ -58,7 +58,7 @@ func (ss *openIDSessionData) writeSession() (err error) { } else { log.Println("write session to " + path) //save state - err = ss.state.Save(openID, ss.Procedure) + err = ss.state.Save() if err != nil { log.Printf("Error: cannot write session data %s", openID) log.Println(err) @@ -141,31 +141,17 @@ func (ss *openIDSessionData) incomingMsg(v InWechatMsg) { openID := v.header.FromUserName //kfSendTxtAs(openID, "信息收到"+v.header.MsgType, "孙鹏") //are we in an existing procedure - inProc, state := isInProc(openID) //if inside a procedure, resume last saved state - if inProc { - ss.state = serveProc(state, v) //transit to new state + proc, found := AllProc[ss.Procedure] + if found { + proc.serve(ss, v) //transit to new state } else { - state, processed := serveCommand(openID, v) //menu or txt command e.g. search - if !processed { // transfer to Customer Service (kf) - ss.state.response, _ = BuildTextMsg(openID, "已转接校友会理事会,稍后答复您") - } else { - ss.state = state - } - } - - if ss.state.response != "" { - v.instantResponse <- ss.state.response - } - - if !isEndingState(state) { - err := saveChatState(openID, state.Procedure, state) - if err != nil { - log.Println("Error Cannot Save chat sate") - log.Println(err) - log.Println(state) + processed := ss.serveCommand(v) //menu or txt command e.g. search + if !processed { // transfer to Customer Service (kf) + //start transfer + ss.state.response, _ = BuildKFTransferAnyOneMsg(openID) + v.immediateResponse(ss.state.response) + kfSendTxt(openID, "已转接校友会理事会,稍后答复您") } - } else { //state ending - cleanProcedure(openID, state.Procedure) } return }