Selaa lähdekoodia

echo command test formally passed, bug fix update session data (sessionmanager.startJob)

master
Patrick Peng Sun 8 vuotta sitten
vanhempi
commit
34fec8bfcb
4 muutettua tiedostoa jossa 11 lisäystä ja 4 poistoa
  1. +4
    -1
      chatSession.go
  2. +0
    -1
      procEcho.go
  3. +4
    -1
      serveCommand.go
  4. +3
    -1
      sessionManager.go

+ 4
- 1
chatSession.go Näytä tiedosto

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

+ 0
- 1
procEcho.go Näytä tiedosto

@@ -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" {

+ 4
- 1
serveCommand.go Näytä tiedosto

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

+ 3
- 1
sessionManager.go Näytä tiedosto

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

Loading…
Peruuta
Tallenna