前言
最近ChatGPT异常火爆,本项目可以助你将GPT机器人集成到钉钉群聊中。

🥳 欢迎关注我的其他开源项目:

在钉钉开发者后台创建机器人,配置应用程序回调。
使用教程
第一步,先创建机器人
创建步骤参考文档:企业内部开发机器人,或者根据如下步骤进行配置。

创建机器人。 image_20221209_163616

📢 注意:可能现在创建机器人的时候名字为chatgpt会被钉钉限制,请用其他名字命名。

步骤比较简单,这里就不赘述了。

配置机器人回调接口。 image_20221209_163652

创建完毕之后,点击机器人开发管理,然后配置将要部署的服务所在服务器的出口IP,以及将要给服务配置的域名。

发布机器人。 image_20221209_163709

点击版本管理与发布,然后点击上线,这个时候就能在钉钉的群里中添加这个机器人了。

群聊添加机器人。

image_20221209_163724

第二步,部署应用
你可以使用docker快速运行本项目。

第一种:基于环境变量运行

运行项目

$ docker run -itd –name chatgpt -p 8090:8090 -e APIKEY=换成你的key -e SESSION_TIMEOUT=600 –restart=always dockerproxy.com/eryajf/chatgpt-dingtalk:latest
运行命令中映射的配置文件参考下边的配置文件说明。

第二种:基于配置文件挂载运行

复制配置文件,根据自己实际情况,调整配置里的内容

$ cp config.dev.json config.json # 其中 config.dev.json 从项目的根目录获取

运行项目

$ docker run -itd –name chatgpt -p 8090:8090 -v pwd/config.json:/app/config.json –restart=always dockerproxy.com/eryajf/chatgpt-dingtalk:latest
其中配置文件参考下边的配置文件说明。

注意,不论通过上边哪种docker方式部署,都需要配置Nginx代理,当然你直接通过服务器外网IP也可以。

部署完成之后,通过Nginx代理本服务:

server {
listen 80;
server_name chat.eryajf.net;

client_header_timeout 120s;
client_body_timeout 120s;

location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://localhost:8090;
}

}
部署完成之后,就可以在群里艾特机器人进行体验了。

Nginx配置完毕之后,可以先手动请求一下,通过服务日志输出判断服务是否正常可用:

$ curl –location –request POST ‘http://chat.eryajf.net/'
–header ‘Content-type: application/json’
–data-raw ‘{
“conversationId”: “xxx”,
“atUsers”: [
{
“dingtalkId”: “xxx”,
“staffId”:”xxx”
}
],
“chatbotCorpId”: “dinge8a565xxxx”,
“chatbotUserId”: “$:LWCP_v1:$Cxxxxx”,
“msgId”: “msg0xxxxx”,
“senderNick”: “eryajf”,
“isAdmin”: true,
“senderStaffId”: “user123”,
“sessionWebhookExpiredTime”: 1613635652738,
“createAt”: 1613630252678,
“senderCorpId”: “dinge8a565xxxx”,
“conversationType”: “2”,
“senderId”: “$:LWCP_v1:$Ff09GIxxxxx”,
“conversationTitle”: “机器人测试-TEST”,
“isInAtList”: true,
“sessionWebhook”: “https://oapi.dingtalk.com/robot/sendBySession?session=xxxxx",
“text”: {
“content”: “ 你好”
},
“msgtype”: “text”
}’
如果手动请求没有问题,那么就可以在钉钉群里与机器人进行对话了。

帮助列表

艾特机器人发送空内容或者帮助,会返回帮助列表。

image_20230215_184402

切换模式

发送指定关键字,可以切换不同的模式。

image_20230215_184655

注意默认对话模式为单聊,因此不必发送单聊即可进入单聊模式,而要进入串聊,则需要发送串聊关键字进行切换,当串聊内容超过最大限制的时候,你可以发送重置,然后再次进入串聊模式。

实际聊天效果如下

image_20221209_163739

如果你想通过命令行直接部署,可以直接下载release中的压缩包 ,请根据自己系统以及架构选择合适的压缩包,下载之后直接解压运行。

下载之后,在本地解压,即可看到可执行程序,与配置文件:

$ tar xf chatgpt-dingtalk-v0.0.4-darwin-arm64.tar.gz
$ cd chatgpt-dingtalk-v0.0.4-darwin-arm64
$ cp config.dev.json # 根据情况调整配置文件内容
$ ./chatgpt-dingtalk # 直接运行

如果要守护在后台运行

$ nohup ./chatgpt-dingtalk &> run.log &
$ tail -f run.log
本地开发

获取项目

$ git clone https://github.com/eryajf/chatgpt-dingtalk.git

进入项目目录

$ cd chatgpt-dingtalk

复制配置文件,根据个人实际情况进行配置

$ cp config.dev.json config.json

启动项目

$ go run main.go
配置文件说明
{
“api_key”: “xxxxxxxxx”, // openai api_key
“session_timeout”: 600 // 会话超时时间,默认600秒,在会话时间内所有发送给机器人的信息会作为上下文
}

作者:Jeebiz  创建时间:2023-04-22 01:00
最后编辑:Jeebiz  更新时间:2023-12-28 16:43