最近公司有个小项目,关于总部人员每天都要读书,需要想个方案对每个人的读书的情况做统计。经过几次考虑,然后看了下钉钉的官方文档,感觉钉钉的outgoing机器人挺适合这个项目的,于是就开始了。
1.首先需要获得钉钉的管理员身份,这个需要自己企业群的总管理员进行设置。获取到管理员身份后,就可以登陆到开发者后台了:
钉钉开放平台地址:https://ding-doc.dingtalk.com/
登录后,就可以在应用开发-机器人 版块中添加新的机器人了:
这里面有很多项内容,挨个填写就好了,最重要的有这两个,出口IP和消息接收地址,消息接收地址就是钉钉将数据返回到的地址。
建好机器人后,可以进行调试,会进入一个钉钉测试群,不过我不建议进测试群,实测在测试群中,返回的数据中没有发送者userid和corpid,这个问题困扰了我很久,最后不得已寻找钉钉官方来寻求解决。还好钉钉官方很给力,反馈很迅速,及时解决了这个问题,解决方法就是机器人需要上线后,再创建一个新的内部群,然后将机器人添加进来就可以了,返回的数据中就会有这两项数据了。
目前来说,创建机器人的任务就完成了,接下来就是接收到数据进行下一步开发了。
2.上一步填写的消息接收地址派上用场了,当你@机器人并对他说话后,在你的后台就可以接收到钉钉返回的数据了,我的后台用的PHP,可以用
$file_contents = json_decode(file_get_contents('php://input'), true);来接收到http body中的数据。
然后通过:
$webhook = "https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
$data = array('msgtype' => 'text', 'text' => array('content' => $file_contents ));
$data_string = json_encode($data);
$result = request_by_curl($webhook, $data_string);
就可以看到机器人将返回的数据展示了出来,如下图:(access_token可以查看官方文档,里面有详细的方法获取)
这里我主要用到的是userid和text中的content,有了userid就可以通过钉钉服务端api获取到员工个人信息以及部门信息,然后我就将这些数据以及content通过后台存入数据库,这部分代码就不展示了,就是普通的php入库。目前任务已经完成了一大半了。
3.接下来的任务就是每天将统计结果发送到群里,我用的是link方式,具体方法在官方文档中都有,我只截一下图展示下:
//发送link消息
function sendLinkMsg($text, $title, $picUrl, $messageUrl)
{
$webhook = "https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
$data = array(
'msgtype' => 'link',
'link' => array(
'text' => $text,
'title' => $title,
'picUrl' => $picUrl,
'messageUrl' => $messageUrl,
)
);
$data_string = json_encode($data);
$result = request_by_curl($webhook, $data_string);
echo $result;
}
我单独写了一个方法发送消息,然后调用调用方法就可以在群里发送一个link类型的消息了;
sendLinkMsg("包含每个部门的已交数量、未交数量、提交比率","今日读书汇报","http://www.xxxxx.cn/ding_read/web/img/urlimg.jpg","http://www.xxxxx.cn/ding_read/web/main.html");
目前项目就完成了,不算很麻烦,只要将钉钉outgoing机器人的流程走通,开发起来会很顺手。目前钉钉机器人可能官方还在不断地完善中,以后很可能会更加方便。
ps:最后放几个效果图,大家可以参考一下,这个机器人用起来还是肥肠方便滴~~hia hia hia~