|
|
|
@@ -72,23 +72,29 @@ func answerWechatPost(w http.ResponseWriter, r *http.Request) { |
|
|
|
|
|
|
|
//are we in an existing procedure |
|
|
|
openID := in.header.FromUserName |
|
|
|
yes, state := isInProc(openID) |
|
|
|
if yes { |
|
|
|
state := serveProc(openID, in) |
|
|
|
reply = state.response |
|
|
|
inProc, state := isInProc(openID) //if inside a procedure, resume last saved state |
|
|
|
if inProc { |
|
|
|
state = serveProc(state, in) //transit to new state |
|
|
|
reply = state.response //xml response |
|
|
|
} else { |
|
|
|
state, processed := serveCommand(openID, in) //search or other command |
|
|
|
state, processed := serveCommand(openID, in) //menu or txt command e.g. search |
|
|
|
if !processed { // transfer to Customer Service (kf) |
|
|
|
reply = buildKfForwardMsg(openID, "") |
|
|
|
kfSendTxt(openID, "未识别的命令,已转接校友会理事会,稍后答复您") |
|
|
|
} else { |
|
|
|
reply = state.response |
|
|
|
} |
|
|
|
} |
|
|
|
log.Println(reply) |
|
|
|
log.Println(reply) //instant reply, answering user's request |
|
|
|
w.Header().Set("Content-Type", "text/xml; charset=utf-8") |
|
|
|
fmt.Fprint(w, reply) |
|
|
|
|
|
|
|
saveChatState(state) |
|
|
|
err := saveChatState(openID, state.Procedure, state) |
|
|
|
if err != nil { |
|
|
|
log.Println("Error Cannot Save chat sate") |
|
|
|
log.Println(err) |
|
|
|
log.Println(state) |
|
|
|
} |
|
|
|
return |
|
|
|
} |
|
|
|
|