From 34fec8bfcb8e1bbd94e8ad6bd434aec372ea7ad9 Mon Sep 17 00:00:00 2001 From: Patrick Peng Sun Date: Mon, 10 Jul 2017 15:23:33 +1000 Subject: [PATCH] echo command test formally passed, bug fix update session data (sessionmanager.startJob) --- chatSession.go | 5 ++++- procEcho.go | 1 - serveCommand.go | 5 ++++- sessionManager.go | 4 +++- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/chatSession.go b/chatSession.go index 924e930..0e71d02 100644 --- a/chatSession.go +++ b/chatSession.go @@ -95,6 +95,7 @@ func (ss *openIDSessionData) Delete() { func (ss *openIDSessionData) Save() { //invalid procedure if isExpired(ss.Expire) || ss.Procedure == "" { + log.Printf("delete session [%s], %d, now=%d", ss.Procedure, ss.Expire, time.Now().Unix()) ss.Delete() } else { ss.writeSession() @@ -154,12 +155,14 @@ func (ss *openIDSessionData) incomingMsg(v InWechatMsg) { openID := v.header.FromUserName //kfSendTxtAs(openID, "信息收到"+v.header.MsgType, "孙鹏") //are we in an existing procedure + log.Printf("current procedure = %s", ss.Procedure) proc, found := AllProc[ss.Procedure] if found { proc.serve(ss, v) //transit to new state } else { processed := ss.serveCommand(v) //menu or txt command e.g. search - if !processed { // transfer to Customer Service (kf) + log.Printf("current procedure after command = %s", ss.Procedure) + if !processed { // transfer to Customer Service (kf) //start transfer ss.state.response, _ = BuildKFTransferAnyOneMsg(openID) v.replyXML(ss.state.response) diff --git a/procEcho.go b/procEcho.go index c1fb8f5..2420d56 100644 --- a/procEcho.go +++ b/procEcho.go @@ -37,7 +37,6 @@ func echoServe(ss *openIDSessionData, in InWechatMsg) { if in.header.MsgType == "text" { if in.body.(TextMsg).Content == "结束Echo" || in.body.(TextMsg).Content == "结束echo" { stopEcho = true - return } } if in.header.MsgType == "voice" { diff --git a/serveCommand.go b/serveCommand.go index 2aa9404..e5e1d80 100644 --- a/serveCommand.go +++ b/serveCommand.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "log" "strings" "time" ) @@ -47,7 +48,9 @@ func (ss *openIDSessionData) serveTextCommand(in InWechatMsg) (processed bool) { } if cmd != "" { if f, hasFunction := commandMap[cmd]; hasFunction { - return f(ss, in) + processed = f(ss, in) + log.Printf("cmd...%s", ss.Procedure) + return } if cmd == "所有命令" || cmd == "all command" { return allCommand(ss, in) diff --git a/sessionManager.go b/sessionManager.go index 5722e08..2d2428e 100644 --- a/sessionManager.go +++ b/sessionManager.go @@ -114,7 +114,7 @@ func (m *SessionManager) destroySession(openID string) { //save session data to disk data := m.sessions[openID].data data.Save() - + log.Printf("procedure name when saving =%s", data.Procedure) //close job channels s := m.sessions[openID] close(s.jobs) @@ -135,6 +135,8 @@ func (m *SessionManager) startJob(openID string) { m.checkOpenID(openID, v) s := m.sessions[openID] s.data.incomingMsg(v) //<=== main logic for processing each incoming message + log.Printf("after incoming message %s", s.data.Procedure) + m.sessions[openID] = s jobFinished.consumed++ default: hasJob = false