package main import ( "fmt" "log" "strings" ) type procSearchMemberDef struct { chatProcedureID } var procSearchMember = procSearchMemberDef{} func (m *procSearchMemberDef) init(ss *openIDSessionData) { ss.Procedure = m.getID() ss.refreshExpire(600) } func (m *procSearchMemberDef) clean(ss *openIDSessionData) { ss.Procedure = "" } func (m *procSearchMemberDef) start(ss *openIDSessionData, in *InWechatMsg) { } func (m *procSearchMemberDef) serve(ss *openIDSessionData, in *InWechatMsg) (processed bool) { switch msg := in.body.(type) { case TextMsg: if m.endingCommand(ss, msg.Content) { return } str, _ := BuildTextMsg(ss.OpenID, "搜索 "+msg.Content+"... ...") in.replyXML(str) m.displayUserInfo(ss, msg.Content) processed = true case PicMsg: //str := buildPicMsg(ss.OpenID, msg.MediaId) xml, _ := BuildKFTransferAnyOneMsg(ss.OpenID) in.replyXML(xml) kfSendPicByMediaID(ss.OpenID, msg.MediaId) kfSendTxt(ss.OpenID, "已转接校友会理事会,稍后答复您") processed = true case VoiceMsg: name := strings.TrimSuffix(msg.Recognition, "。") str, _ := BuildTextMsg(ss.OpenID, "搜索 "+name+"... ...") in.replyXML(str) m.displayUserInfo(ss, name) processed = true case EventMsg: if msg.Event == "LOCATION" { onLocation(in) processed = true } default: str := fmt.Sprintf("搜索功能结束") kfSendTxtAs(ss.OpenID, str, "孙鹏") processed = false } return } func (m *procSearchMemberDef) summary(ss *openIDSessionData) { } func (m *procSearchMemberDef) intro(ss *openIDSessionData, in *InWechatMsg) { msg := "请输入(读出)他/她的姓名或者照片" in.replyText("") kfSendTxtAs(ss.OpenID, msg, "孙鹏") } func (m *procSearchMemberDef) displayUserInfo(ss *openIDSessionData, name string) { total, list, err := crmFindEntityByAttr("Lead", "lastName", name) if total <= 0 || err != nil { kfSendTxtAs(ss.OpenID, "很抱歉,没有找到相关信息", "孙鹏") return } search, ok := list.([]crmdLead) if !ok { log.Printf("ERROR: 搜索 %s 结果异常, total=%d, ", name, total) kfSendTxt(ss.OpenID, "很抱歉,没有找到相关信息") return } for _, v := range search { articles := []sendNewsArticle{} //main photo articles = append(articles, v.getBasicUserInfoPhoto()) //email articles = append(articles, v.getBasicUserInfoEmail()) //phone articles = append(articles, v.getBasicUserInfoPhone()) kfSendNews(ss.OpenID, "总标题", "总描述", articles) if v.Description != "" { msg := fmt.Sprintf("%s简介:%s\n", name, v.Description) kfSendTxtAs(ss.OpenID, msg, "孙鹏") } } ss.refreshExpire(600) } func (m *procSearchMemberDef) endingCommand(ss *openIDSessionData, cmd string) (stop bool) { stop = false if cmd == "结束" || cmd == "." || cmd == "。" { stop = true m.clean(ss) str := fmt.Sprintf("搜索功能结束") kfSendTxtAs(ss.OpenID, str, "孙鹏") } return }