diff --git a/server.go b/server.go index cf374a5..480f31c 100644 --- a/server.go +++ b/server.go @@ -69,9 +69,8 @@ func answerWechatPost(w http.ResponseWriter, r *http.Request) { if !valid { log.Println("Error: Invalid Input ") } - - //are we in an existing procedure openID := in.header.FromUserName + //are we in an existing procedure inProc, state := isInProc(openID) //if inside a procedure, resume last saved state if inProc { state = serveProc(state, in) //transit to new state @@ -89,11 +88,15 @@ func answerWechatPost(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "text/xml; charset=utf-8") fmt.Fprint(w, reply) - err := saveChatState(openID, state.Procedure, state) - if err != nil { - log.Println("Error Cannot Save chat sate") - log.Println(err) - log.Println(state) + 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) + } + } else { //state ending + cleanProcedure(openID, state.Procedure) } return }