Просмотр исходного кода

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

master
Patrick Peng Sun 8 лет назад
Родитель
Сommit
34fec8bfcb
4 измененных файлов: 11 добавлений и 4 удалений
  1. +4
    -1
      chatSession.go
  2. +0
    -1
      procEcho.go
  3. +4
    -1
      serveCommand.go
  4. +3
    -1
      sessionManager.go

+ 4
- 1
chatSession.go Просмотреть файл

func (ss *openIDSessionData) Save() { func (ss *openIDSessionData) Save() {
//invalid procedure //invalid procedure
if isExpired(ss.Expire) || ss.Procedure == "" { if isExpired(ss.Expire) || ss.Procedure == "" {
log.Printf("delete session [%s], %d, now=%d", ss.Procedure, ss.Expire, time.Now().Unix())
ss.Delete() ss.Delete()
} else { } else {
ss.writeSession() ss.writeSession()
openID := v.header.FromUserName openID := v.header.FromUserName
//kfSendTxtAs(openID, "信息收到"+v.header.MsgType, "孙鹏") //kfSendTxtAs(openID, "信息收到"+v.header.MsgType, "孙鹏")
//are we in an existing procedure //are we in an existing procedure
log.Printf("current procedure = %s", ss.Procedure)
proc, found := AllProc[ss.Procedure] proc, found := AllProc[ss.Procedure]
if found { if found {
proc.serve(ss, v) //transit to new state proc.serve(ss, v) //transit to new state
} else { } else {
processed := ss.serveCommand(v) //menu or txt command e.g. search 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 //start transfer
ss.state.response, _ = BuildKFTransferAnyOneMsg(openID) ss.state.response, _ = BuildKFTransferAnyOneMsg(openID)
v.replyXML(ss.state.response) v.replyXML(ss.state.response)

+ 0
- 1
procEcho.go Просмотреть файл

if in.header.MsgType == "text" { if in.header.MsgType == "text" {
if in.body.(TextMsg).Content == "结束Echo" || in.body.(TextMsg).Content == "结束echo" { if in.body.(TextMsg).Content == "结束Echo" || in.body.(TextMsg).Content == "结束echo" {
stopEcho = true stopEcho = true
return
} }
} }
if in.header.MsgType == "voice" { if in.header.MsgType == "voice" {

+ 4
- 1
serveCommand.go Просмотреть файл



import ( import (
"fmt" "fmt"
"log"
"strings" "strings"
"time" "time"
) )
} }
if cmd != "" { if cmd != "" {
if f, hasFunction := commandMap[cmd]; hasFunction { 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" { if cmd == "所有命令" || cmd == "all command" {
return allCommand(ss, in) return allCommand(ss, in)

+ 3
- 1
sessionManager.go Просмотреть файл

//save session data to disk //save session data to disk
data := m.sessions[openID].data data := m.sessions[openID].data
data.Save() data.Save()
log.Printf("procedure name when saving =%s", data.Procedure)
//close job channels //close job channels
s := m.sessions[openID] s := m.sessions[openID]
close(s.jobs) close(s.jobs)
m.checkOpenID(openID, v) m.checkOpenID(openID, v)
s := m.sessions[openID] s := m.sessions[openID]
s.data.incomingMsg(v) //<=== main logic for processing each incoming message 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++ jobFinished.consumed++
default: default:
hasJob = false hasJob = false

Загрузка…
Отмена
Сохранить