即时通讯接入
# 即时通讯接入
企业GPT目前支持微信、Line等即时通讯的接入。
# 1. 微信公众号
设置微信公众号的大语言模型服务,需要先设置微信公众号的开发信息。开发的公众号要求为经过微信认证的微信公众号,认证类型为服务号,需使用到客服接口。
# 1.1. 获取开发者密钥
进入微信公众号的后台管理界面,点击菜单栏的设置与开发-基本配置
。可以看到有公众号的开发信息,请点击 重置
以重置开发者密码,并记录好开发者ID (AppID) 与 开发者密码(AppSecret),在后续项目中会使用到。
# 1.2. 设置IP白名单
获取服务端本机的公网IP地址,添加至公众号开发信息的IP白名单中。
# 1.3. 本地部署服务需注意的事项
如果需要本地部署服务的,需要注意的事项如下:
- 微信公众号服务仅支持访问带有开放80端口的服务器,所以本地部署的需要使用反向代理服务(Nginx)将本地的服务端口通过Nginx实现转发。
- 微信公众号token获取的指令仅支持白名单IP的访问,所以本地服务在运行时,需使用代理服务将发送的IP地址转为白名单中的服务器IP地址。
# 1.4. 修改本机配置文件
修改本机配置文件 config.ini
中 [WeChat_Server]
的WECHAT_REMOTE_SERVER
,修改为预设的外网服务地址。
[WeChat_MP]
中先修改 APP_ID
、APP_SECRET
,同时在微信公众号后台修改服务器配置(位于基本配置页面中),修改服务器地址为 WECHAT_REMOTE_SERVER
中设置的URL,在服务器配置中设置好令牌(Token)与消息加解密密钥(EncodingAESKey),设置消息加解密方式为安全模式,同步修改本机配置文件 [WeChat_MP]
项目中的 TOKEN
、ENCODING_AES_KEY
,与服务器配置中的令牌与消息加解密密钥保持一致。先保持微信公众号后台的设置界面不动,首先使用 python wechat_service.py
运行服务。
# 1.5. 反向代理服务设置
本机的环境访问外部网络时,使用的是带有公网IP的网络,使用云服务器的反向代理服务,实现微信公众号的公网服务访问功能。Nginx的反向代理设置如下:
location /robot {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# 以下项目请修改为本机动态域名解析可访问的地址
proxy_pass http://xxxxx:8080/robot;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
保存设置并重启nginx /etc/init.d/nginx restart
,可打开公网域名的地址测试一下是否能正常访问。
# 1.6. 保存服务器配置
返回至微信公众号后台,点击保存服务器配置以验证服务器是否可以访问,如服务器配置保存成功,则说明服务器已经可以访问。点击服务器配置的 启用
按钮以启用服务器配置。
# 1.7. FastWeb管理
在本机的命令行后台停止现有的服务,然后在FastWeb中就可以使用通讯服务来管理微信公众号服务的启动与停止
# 2. Line
Line 服务需创建一个机器人,将相关的设置填写到其中。
# 2.1. 取得 Line Token
- 登录 Line Developer (opens new window)
- 创建机器人:
- 创建 Provider -> 按下 Create
- 创建 Channel -> 选择 Create a Messaging API channel
- 输入完必填的基本数据
- 输入完成后,在 Basic Settings 下方,有一个 Channel Secret -> 按下 Issue,生成後即为
CHANNEL_SECRET
(同时修改项目文件config.ini
中[Line_Bot]
CHANNEL_SECRET
) - 在 Messaging API 下方,有一个 Channel access token -> 按下 Issue,生成後即为
CHANNEL_ACCESS_TOKEN
(同时修改项目文件config.ini
中[Line_Bot]
CHANNEL_ACCESS_TOKEN
)
# 2.2. 添加Webhook URL
在Line网页设置 Webhook settings
中,先设置 Webhook URL
,与 config.ini
中 [Line_Bot]
的 LINE_REMOTE_SERVER
保持一致。同时设置 Use Webhook
为勾选状态。
# 2.3. 设置反向代理
本机的环境访问外部网络时,使用的是带有公网IP的网络,使用云服务器的反向代理服务,实现Line的公网服务访问功能。在命令行中首先运行 python line_service.py
,在远端服务器中设置反向代理信息。以下以nginx为例:
location /callback {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# 以下项目请修改为本机动态域名解析可访问的地址
proxy_pass http://xxxxx:5000/callback;
proxy_redirect default;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
proxy_busy_buffers_size 256k;
proxy_max_temp_file_size 256k;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
保存设置并重启nginx /etc/init.d/nginx restart
,可打开公网域名的地址测试一下是否能正常访问。然后在 Line 控制台的 Messaging API 中点击 Webhook URL 中的 Verify
按钮,如果出现Success 的提示按钮,则说明运行正常。可开展后续的服务。