Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChatGPT Dingtalk

Auth Go Version GitHub Pull Requests GitHub Pull Requests HitCount Docker Image Size (latest by date) Docker Pulls GitHub license

🌉 在钉钉群聊中添加ChatGPT机器人 🌉


前言

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

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

功能简介

  • 支持在钉钉群聊中添加机器人,通过@机器人进行聊天交互。
  • 提问支持单聊与串聊两种模式,通过@机器人发关键字切换。

使用前提

  • 有Openai账号,并且创建好api_key,注册相关事项可以参考此文章 。访问这里,申请个人秘钥。
  • 在钉钉开发者后台创建机器人,配置应用程序回调。

使用教程

第一步,先创建机器人

创建步骤参考文档:企业内部开发机器人,或者根据如下步骤进行配置。

  1. 创建机器人。 image_20221209_163616

    📢 注意1:可能现在创建机器人的时候名字为chatgpt会被钉钉限制,请用其他名字命名。 📢 注意2:第四步骤点击创建应用的时候,务必选择使用旧版,从而创建旧版机器人。

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

  2. 配置机器人回调接口。 image_20221209_163652

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

  3. 发布机器人。 image_20221209_163709

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

  4. 群聊添加机器人。

    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_20230216_221253

切换模式

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

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秒,在会话时间内所有发送给机器人的信息会作为上下文
}

常见问题

一些常见的问题,我单独开issue放在这里:点我,可以查看这里辅助你解决问题,如果里边没有,请对历史issue进行搜索(不要提交重复的issue),也欢迎大家补充。

高光时刻

本项目曾在2022-12-12,2022-12-18,2022-12-19,2022-12-20,2023-02-09,2023-02-10,2023-02-11,2023-02-12,这些天里,登上GitHub Trending。而且还在持续登榜中,可见最近openai的热度。 image_20230215_094034

About

ChatGPT机器人在钉钉群聊中交互

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages