版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ahlxt123/article/details/53366075
感恩节来啦,把自己这个开源框架的挖的坑填一下好了~
之前在第一章的时候就给大家展示过我自己写的一个智能聊天机器人,同时具有菜谱查询、智能翻译之类的功能,在这里我把这个机器人的代码开源啦:gochat机器人
这样大家就可以直接在我代码的基础上进行改进~
核心逻辑代码位于 /controllers/pub.go中,核心思路是提取用户发送的关键词,然后调用对应的函数完成相关功能,比如下面这样的:
else if(strings.HasPrefix(msgIn.Content,"查询") == true){
sentence := strings.Replace(msgIn.Content,"查询","",1)
sentence = strings.TrimSpace(sentence)
msgback := utils.RobotApi(sentence + "的做法")
msgOut := models.PubTextOut{
ToUserName:msgIn.FromUserName,
FromUserName:msgIn.ToUserName,
CreateTime:time.Now().Unix(),
MsgType:"text",
Content:fmt.Sprint(msgback),
}
xmlData ,err := msgOut.ToXml()
if err != nil {
c.Abort("500")
}
这里就是提取用户查询的菜谱名称,然后调用utils下面的RobotApi函数,利用菜谱拼接url请求,去获取相应菜谱api的回应,下面是RobotApi的函数:
func CreateTransString(appid string,query string,salt string,key string,)string{
material := appid + query + salt + key
hasher := md5.New()
hasher.Write([]byte(material))
return hex.EncodeToString(hasher.Sum(nil))
}
func RobotApi(keymsg string)string{
url := "http://api.douqq.com/?key=PUVLKzdjeDduTWNHUFVXQUU3PWhRTytOekFrQUFBPT0&msg=" + keymsg
resp,err :=http.Get(url)
if err!=nil{
fmt.Print(err)
}
fetchrs,err :=ioutil.ReadAll(resp.Body)
defer resp.Body.Close()
return string(fetchrs)
}
想要直接使用这个机器人模版的话,请先下载Github对应的代码,然后把代码和里面编译好的二进制文件gochat上传到服务器上的GOPATH目录下,如果不知道什么是gopath目录,请参考前几篇文章
然后找到根目录下/conf/id_relative.yaml 这个文件,请把该文件的pubid 、pubsecret 、 token一栏后面对应的值换成自己公共号上的AppID、 AppSecret以及开发者配置的token
这样运行程序后,就会自动读取配置文件中需要的数据啦~
关于运行程序的方法:
进入项目根目录,直接在后台运行编译项目即可:
nohup ./gochat &
然后在公共号/企业号的开发者配置中启用”服务器配置/回调模式“
token随意设置,将url 设置为: 域名/pub即可:
example: www.myhost.com/pub
接下来启动”服务器配置/回调模式“,即可成功运行一个智能机器人啦~