MJ直连服务配置(PHP版)

简介

目前midjourney没有提供对外开放的接口,只能在discord平台上体验。但是我们可以通过模拟discord接口提交,配合discord机器人监听频道上的消息实现一个接口调用生图的效果。码多多AI聊天系统PHP版3.3.2以上版本,自带该服务。

MJ监听服务器配置

  • 步骤1:
    浏览器打开discordopen in new window

  • 步骤2:
    添加discord服务器。

  • 步骤3:
    添加discord频道(用默认的【常规】频道也可以)。

  • 步骤4:
    添加discord机器人。浏览器打开浏览器打开地址open in new window

  • 步骤5:
    这里token的就是机器人token,要复制下来保存好,后面需要用到。

  • 步骤6:
    设置一下机器人的一些配置。

  • 步骤7:
    设置完配置后复制一下最下方的地址,浏览器打开,添加机器人到discord服务器(即前面增加的discord服务器)。

  • 步骤8:
    开启一下机器人的【MESSAGE CONTENT INTENT】配置。

  • 步骤9:
    触发生图还需要将midjourney机器人加入到我们的服务器
    首先,浏览器打开midjourney邀请地址open in new window 接受邀请。

  • 步骤10:
    接受midjourney邀请后可以在discord页面看到midjourney的图标。选择其中一个midjourney频道,找到midjourney机器人,点击midjourney机器人的头像,将其加入到前面增加的discord服务器。

  • 步骤11:
    在discord服务器页面按F12打开调试窗口,然后在输入框内输入/imagine cat,查看调试框内接口请求信息,把接口请求中的guild_id,channel_id,session_id保存下来,后面会用到。(例图中的账号没有付费midjourney,所以输入/imagine后没有生图。)

  • 步骤12:

警告

注意WSS域名必须是wss协议,非https协议。

①填写MJ图片域名,方便境内访问显示,代理域名设置可参考此文档
②填写discord代理域名,境外服务器默认不需要代理即可访问,代理域名设置可参考此文档
③填写discord WSS代理域名,境外服务器默认不需要代理即可访问。代理域名设置可参考此文档
④填写步骤11的guild_id。
⑤填写步骤11的channel_id。
⑥填写步骤11的session_id。
⑦填写步骤5的机器人token。

MJ绘图配置

使用前提

  • 拥有discord账号并且已在discord中付费midjourney绘图服务。
  • 知道如何访问外境站点,部分配置操作需要魔法。以下内容默认你已解决网络访问问题。

配置流程

  • 1:登录discord账号,获取discord的用户token(需要魔法)。
  • 2:后台系统填写获取到的token和图片代理域名。图片代理域名需自行处理,用于替换discord图片域名,替换后可在没有魔法的情况下图片显示不受影响。如果你的服务器在香港或海外,则无需填写图片代理域名。

discord

  • 1: 浏览器打开discordopen in new window
  • 2:登录discord账号后,浏览器按F12,查看network中接口请求中authorization的值。复制并保存这个token值。 此token值后续将填写在ChatAl聊天系统后台AI绘画配置处。

ChatAl聊天系统

后台添加discord的token

登录后台系统,进入【AI设置/key池管理】页面。选择AI绘画点击【新增密钥】,接口类型选择码多多MJ ApiKey填入discord中获取到的token值。

小程序图片下载需配置下载域名

下载域名即为图片代理域名。无需图片代理域名情况下,则填写站点域名。如ChatAl聊天系统后台开启模型计费,支持多个绘画模型的情况,则填写多个图片域名。 (例:码多多MJ图片代理域名假设为xxx.com,知数云MJ图片域名为https://midjourney.cdn.zhishuyun.com,则downloadFile合法域名填写xxx.com;https://midjourney.cdn.zhishuyun.com;)

错误排查

1.MJ可以发起指令,可以画图,图片未返回或者超过10分钟更久时间才返回,openssl版本过低,导致机器人监控出问题。

终端运行一下命令域名加443端口号:

openssl s_client -connect (自己配置的wss的域名,不带协议头,不含括号):443

如果最后返回内容code不是等于0,说明openssl版本过低。

Start Time: 1703497628
Timeout   : 300 (sec)
Verify return code: 0 (ok)

终端运行一下命令更新openssl。

yum update
yum update openssl

或者

apt update
apt update openssl

2.未按文档配置两个守护进程。

配置好参数以后,设置好守护进程。

3.参数配置不正确。

MJ绘画本身不提供接口,依靠程序模拟人的行为去绘图,MJ账号登录以后,不要去退出登录或者其他地方登录,参数可能会改变,参数不对可能导致无法绘画。重新按文档设置参数以后,再重启两个守护进程。

4.某种原因系统权限不足,守护进程无法写入日志。

重新给server/runtime目录www 用户权限。

5.MJ封号

无法绘图的原因可能是MJ封号,可以在MJ网站直接绘画测试。不行则需要更换账号。

6.代理地址不通

使用ping命令在部署系统的服务器测试和代理服务器是否可以通讯。

ping 域名1
ping 域名2
ping 域名3

7.代理站点SSL证书过期或者证书的域名和使用域名不完全匹配。

重新申请正确的SSL证书。