| @@ -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 | |||
| } | |||