天天看点

laravel使用自定义SDK 免登录,扫码登录,服务订阅,机器人

基于:

laravel

https://gitee.com/chinakaiyuan/laravelgrid

下载

laravelgrid

代码配置一下。安装完毕,登录后如图:

laravel使用自定义SDK 免登录,扫码登录,服务订阅,机器人

如图填写必要的信息,保存。子表会出现对应的访问地址

laravel使用自定义SDK 免登录,扫码登录,服务订阅,机器人

子表的地址是自动创建的接口,其中免登录必须在钉钉中打开。

2、https://域名/+地址 就是访问的接口。访问会出现钉钉扫码的二维码如:

laravel使用自定义SDK 免登录,扫码登录,服务订阅,机器人

主要 函数算法说明:

3、想使用机器人主动发消息 需要配置机器人

laravel使用自定义SDK 免登录,扫码登录,服务订阅,机器人

关于新增机器人这点,没得办法,目前必须自己新增。群添加机器人事件目前还没有开放。另外自定义群机器人不支持发送单聊消息。

注意,自定义机器人,不用选群聊机器人名称。如果选了加签,加签值就必须填

laravel使用自定义SDK 免登录,扫码登录,服务订阅,机器人

机器人填完后,可发送消息。下拉选项中已经定义好了支持的消息类型。消息内容中修改对应值,点击发送就完成消息发送

laravel使用自定义SDK 免登录,扫码登录,服务订阅,机器人

当然如果发送单人消息,必须在钉钉人员中同步钉钉用户。

laravel使用自定义SDK 免登录,扫码登录,服务订阅,机器人

4,订阅消息。完成钉钉配置后,子表会产生订阅消息地址。钉钉触发订阅的消息,都会出现在这个界面。多应用都设置了同样的订阅消息,每个应用都会触发。例如:截图是一次打卡消息,应用namenode2和namenode 都触发了一次。这里保存的是解密后的消息

laravel使用自定义SDK 免登录,扫码登录,服务订阅,机器人

5、日志。保存了接受消息内容,发送消息内容

laravel使用自定义SDK 免登录,扫码登录,服务订阅,机器人

是数据的原始消息。加密消息,可用postman等工具调试。

主要算法说明

使用

https://gitee.com/chinakaiyuan/dingtalk

SDK。

主程序源码

1、文件 App\Providers\DingTalkServiceProvider

//从数据库中读取保存好的配置信息

    $this->app->singleton('DT', function ($app) {

            return function ($userid, $name) {

//主要配置

                $config = DingTalkSetting::where("creator_id", $userid)->first();

//App 配置

                $ServerApp = DingTalkApp::where("creator_id", $userid)->where("name", $name)->first();

                $appconfig = $config->toArray();

                if ($ServerApp) {

//保存日志时,保存下是哪个用户的,哪个应用的日志

                    $appconfig['app_id'] = $ServerApp->id;

                    $appconfig['creator_id'] = $userid;

//设置跳转地址

                    $appconfig['redirect'] = Request::url();

                    $appconfig = array_merge($ServerApp->toArray(), $appconfig);

                }

                $ddApp = new Application($appconfig);

//设置access_token 保存接口,实现set 和get 方法

                $ddApp->access_token->setCache($config);

                //设置日志驱动 实现debug方法

                $ddApp->logger->set($config);

                return $ddApp;

            };

        });

内部使用方法:

app("DT")(用户ID, 应用名称) 例如

我的ID 是1,机器人名叫robot。那么这个机器人调用方式是

app("DT")(1,'robot')->robot;

开放测试网站

https://namenode.cn/

可以自己直接注册一个用户账户在其中测试一下。网站水管小。可能加载下载文件可能会慢点