个人微信机器人API的Golang源码用于对接ChatGPT-唯一客服系统文档中心

前面我们写的是对接企业微信客服、微信公众号、微信小程序
现在来对接一下个人微信机器人
效果如图:
基于唯一客服的机器人接口实现的
.env文件的配置就是机器人接口

API_BASE=https://{部署域名}/2/robotMessage
API_ENT_ID={商户ID}
REPLY_TYPE=GROUP

下面是微信个人机器人对接的Golang实现源码

package mainimport ("fmt""github.com/eatmoreapple/openwechat""github.com/joho/godotenv""github.com/tidwall/gjson""io/ioutil""log""net/http""net/url""os""regexp""strings"
)func main() {err := godotenv.Load(".env")myUID := ""myNicname := ""// 读取环境变量api := os.Getenv("API_BASE")entId := os.Getenv("API_ENT_ID")replyType := os.Getenv("REPLY_TYPE")bot := openwechat.DefaultBot(openwechat.Desktop) // 桌面模式// 注册消息处理函数bot.MessageHandler = func(msg *openwechat.Message) {if msg.IsText() {log.Printf("收到消息:%s\n", msg.Content)isSend := false//群聊if msg.IsSendByGroup() {sender, err := msg.SenderInGroup()if err == nil {log.Println("消息发送者:" + sender.NickName)}if strings.Contains(msg.Content, "@"+myNicname) {msg.Content = strings.TrimSpace(strings.ReplaceAll(msg.Content, "@"+myNicname, ""))isSend = true} else {isSend = false}} else {//单聊sender, err := msg.Sender()if err == nil {log.Println("消息发送者:" + sender.NickName)}if replyType != "GROUP" {isSend = true}}if isSend {data := url.Values{}data.Set("ent_id", entId)data.Set("visitor_id", msg.MsgId)data.Set("content", msg.Content)res, err := PostForm(api, data)if err == nil {r := gjson.Get(res, "result.content").String()r = TrimHtml(r)msg.ReplyText(r)}}}}// 注册登陆二维码回调bot.UUIDCallback = openwechat.PrintlnQrcodeUrl// 登陆if err := bot.Login(); err != nil {fmt.Println(err)return}// 获取登陆的用户self, err := bot.GetCurrentUser()if err != nil {fmt.Println(err)return}myUID = self.ID()myNicname = self.NickNamelog.Printf("当前登录用户:%s,uid:%s \n", myNicname, myUID)// 获取所有的好友//friends, err := self.Friends()//fmt.Println(friends, err)// 获取所有的群组//groups, err := self.Groups()//fmt.Println(groups, err)// 阻塞主goroutine, 直到发生异常或者用户主动退出bot.Block()
}//发送http post请求数据为form
func PostForm(url string, data url.Values) (string, error) {resp, err := http.PostForm(url, data)if err != nil {return "", err}defer resp.Body.Close()content, err := ioutil.ReadAll(resp.Body)if err != nil {return "", err}return string(content), nil
}/**
去除html标签,过滤html标签
*/
func TrimHtml(src string) string {//将HTML标签全转换成小写re, _ := regexp.Compile("\\<[\\S\\s]+?\\>")src = re.ReplaceAllStringFunc(src, strings.ToLower)//去除STYLEre, _ = regexp.Compile("\\<style[\\S\\s]+?\\</style\\>")src = re.ReplaceAllString(src, "")//去除SCRIPTre, _ = regexp.Compile("\\<script[\\S\\s]+?\\</script\\>")src = re.ReplaceAllString(src, "")//去除所有尖括号内的HTML代码,并换成换行符re, _ = regexp.Compile("\\<[\\S\\s]+?\\>")src = re.ReplaceAllString(src, "\n")//去除连续的换行符re, _ = regexp.Compile("\\s{2,}")src = re.ReplaceAllString(src, "\n")return strings.TrimSpace(src)
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/69597.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

世界杯的比赛可以换6个人?

世界杯小组赛&#xff0c;英格兰对阵伊朗的比赛中&#xff0c;可能有朋友关注到一个细节&#xff0c;整场比赛&#xff0c;英格兰换了5个人&#xff0c;伊朗换了6个人&#xff0c;常规认识上&#xff0c;足球比赛不是只能换3个人&#xff1f; 1. 换5人 新冠疫情爆发后&#xff…

1.认识华为数据通信

一、华为设备图标 当然看看认识一下就好 二、什么是数据通信 人与人之间的交流就是一种通信&#xff0c;动物和动物之间的交流也是一种通信&#xff0c;你使用微信给你的朋友发送信息就是也是通信。人与人之间传递信息的方式是声音或者动作&#xff0c;计算机的传递信息就是通…

html 加载转圈功能

方式一&#xff1a; <html> <body> <input type"button" value"开始" onclick"ShowLoading(assa)"> <div> <div idpaneloading styledisplay:none;position:fixed;top:0px;left:0px;z-index:999999;width:100%;heigh…

postman一直转圈打不开

postman一直转圈打不开&#xff0c;还有英文的报错提示&#xff0c;翻译过来的大概意思是&#xff0c;当前的版本已经失效&#xff0c;需要更新。点击确定后就一直在转圈更新&#xff0c;提示更新需要几分钟。考虑到重新下载安装需要去翻账号密码以及添加文件等&#xff0c;所以…

百度输入法词库异常的解决办法

阴山Discovery 2020-08-14 10:16:12 因为关注百度输入法词库BUG&#xff08;参阅《百度输入法重大BUG&#xff1a;内存占用随用户词库增大而暴涨》&#xff09;&#xff0c;所以最近逛百度输入法贴吧比较多一些。 发现与词库相关的问题还比较多&#xff0c;其中吐槽报错最多的…

PC端输入法双拼皮肤分享

目录 介绍效果图搜狗输入法自然码双拼小鹤双拼搜狗双拼国标双拼微软双拼拼音加加智能ABC紫光双拼 百度输入法自然码双拼 QQ输入法自然码双拼 手心输入法自然码双拼 下载链接补充说明修改码表图流程 介绍 为方便自然码双拼初学者&#xff08;当时的我&#xff09;熟悉键位使用&…

百度手机输入法自定义码表

此文讨论用百度手机输入法的自定义输入法方案挂接郑码码表的方法。 首先&#xff0c;码表一份&#xff08;以极点格式为例&#xff09;&#xff0c;去掉 ~^ 标记符。去表头。 百度手机输入法的txt码表的格式如下&#xff1a; 用多多码表编辑器将原始码表转换为多多格式。转换后…

ubuntu20.04安装百度输入法,亲测有效!

** ubuntu20.04安装百度输入法&#xff0c;亲测有效&#xff01; ** 百度输入法&#xff0c;本人已经在Ubuntu20.04版本上成功安装&#xff0c;有图有真相。 百度已经提供Ubuntu20.04版本的输入法了&#xff0c;到百度输入法官网下载百度Linux版本的输入法就可以进行安装和使…

chatgpt赋能python:Python自动化办公教程:提高效率,节省时间

Python自动化办公教程&#xff1a;提高效率&#xff0c;节省时间 Python是一种高级编程语言&#xff0c;其拥有简单易学、开发快速的特点。除了在数据分析、人工智能等领域得到广泛应用外&#xff0c;Python也能够被用于自动化办公中&#xff0c;提高办公效率&#xff0c;节省…

python数据分析软件0代码,python数据分析软件开发

大家好&#xff0c;小编为大家解答python数据分析软件0代码的问题。很多人还不知道python数据分析处理软件&#xff0c;现在让我们一起来看看吧&#xff01; 1、sas和python的区别 sas和python的区别&#xff1a; 1.成本 SAS是商业软件&#xff0c;对于大部分个体数据分析师而言…

chatgpt赋能Python-python_gui

Python与GUI的结合&#xff1a;优化用户界面的开发体验 Python是一种高级编程语言&#xff0c;它的应用范围涵盖数据分析、Web开发、自动化测试等多个领域。而GUI&#xff08;Graphical User Interface&#xff0c;图形用户界面&#xff09;则是我们与计算机交互的窗口&#x…

前端3D技术概述

操作系统、编译原理、计算机图形学被传为程序员的三大浪漫&#xff0c;每个方向都易懂难深&#xff0c;但作为程序员对每个方向还是要有基本的认识和判断&#xff0c;毕竟贯穿虚拟和现实生活的桥梁是搭建在抽象之上的&#xff0c;这三大浪漫是抽象化的课代表。本次我们认识下计…

chatgpt赋能Python-python_nurbs

Python NURBS: 一种高级的曲线建模工具 如果你是一名3D建模工程师或者是开发了设计软件的工程师&#xff0c;你一定会了解NURBS。NURBS是非均匀有理B样条曲线&#xff08;Non-Uniform Rational B-spline&#xff09;的简称&#xff0c;是3D建模中使用最广泛的曲线建模工具之一…

chatgpt赋能python:Python好玩的程序代码

Python好玩的程序代码 Python作为一种高级编程语言&#xff0c;以其简洁易懂的语法、丰富的库以及广泛的应用赢得了广大程序员的热爱。除了在日常代码开发中&#xff0c;Python还可以用来编写一些有趣的程序&#xff0c;下面就让我们来看看Python好玩的程序代码吧。 1. 用Pyt…

卡塔尔世界杯门线技术(GOAL LINE TECHNOLOGY)背后的黑科技

现代职业足球运动员踢球时足球的行进速度&#xff0c;据国际足联统计数据&#xff0c;平均速度可达 60 英里/小时。极少数爆发力超强的职业球员&#xff0c;可以将这个速度刷新到超过 100 英里/小时。比如里斯本竞技队的巴西左后卫罗尼赫伯森在 2006 年以 131.82 英里/小时的速…

使用 JavaScript 模拟光标随机移动端

1.效果预览 https://jsfiddle.net/0qmaytco/https://jsfiddle.net/0qmaytco/ 2.代码运行 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge&…

如何实现同一IP的不同端口访问不同的网站

一&#xff0c;要求 1&#xff0c; 基于同一IP的不同端口访问不同的网站(可以通过域名去访问) ipport1 -> 对应一个域名 ipport2 -> 对应一个域名 使用域名1我应该访问到 ipport1对应的内容 使用域名2我应该访问到 ipport2对应的内容 2. …

社交登陆成功回调

1. 点击跳转至第三方授权 2. 这是使用gitee作为第三方授权进行验证 3. 授权成功则跳转至 redirect_url 4. 社交登陆回调逻辑 一、根据第三方授权提供的方式获取token &#xff08;1&#xff09;发送请求获取code码&#xff08;每次发送请求&#xff0c;code码会改变&#xff…

GTK之信号和回调函数

GTK之信号和回调函数 在 2.0 版&#xff0c;信号系统已从 GTK 移到 GLib&#xff0c;因此在函数和类型的说明中有前缀 “g_” 而不是 “gtk_”。   GTK 是一个事件驱动的工具包&#xff0c;意味着它会等在gtk_main() 那里&#xff0c; 直到下一个事件发生&#xff0c; 才把控…

极智AI | AIGC时代中AI巨头之间的博弈

欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文来谈谈 AIGC时代AI巨头之间的博弈。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 下图是开复老师在 《AI 未来》演讲中一页…