package main //procedure 000 //available state var statesGetBasicUserInfo = map[string]chatState{ "Intro": chatState{}, "AskName": chatState{}, "AskEnglishName": chatState{}, "AskEmail": chatState{}, "AskMobileNumber": chatState{}, "AskProfilePhoto": chatState{}, "Done": chatState{}, } var validateGetBasicUserInfo = map[string]Validator{ "validateChineseName": validateChineseName, } func proc000AskName(openid string) { s := chatState{} s.Name = "AskName" s.Expire = 300 //5 minutes s.Save = map[string]string{} //clear s.Send.Message["q"] = "请输入您的真实中文名,没有请填写 ”无“ " s.Receive.Validator = "validateChineseName" } func validateChineseName(s chatState) (r ValidationResult) { r.accept = true r.Error = "" input := s.Receive.Message["name"] r.Hint = "通常中文名只有三个字或者四个字,比如 王更新,诸葛亮,司马相如,慕容白雪" if len(input) >= 10 { r.accept = false r.Error = "您的名字过长" } if len(input) <= 1 { r.accept = false r.Error = "您的名字很萌,就是有点太短了" } if len(input) >= 5 { r.Warning = "您的名字有点长,可以勉强接收" } return } func initGetBasicUserInfo(openid string) (initState chatState) { return }