缘起:因为很多公司上班使用钉钉发送消息,钉钉群交流,钉钉文档,以及有必要的钉钉模板消息提醒特定的钉钉用户。所以钉钉消息与公司系统对接作为工作业务通知何尝不可。
本公司因为已经彻底放弃了微信聊天,所有线上及公司活动通知,全部放到了电脑端的钉钉上,而且老板强制使用。对于一些紧急业务的通知显得迫切。例如:
以上就是钉钉接收到的模版消息。开过发微信公众号和小程序模板消息的应该很清楚是怎么一回事,点击这个消息会跳到一个具体的详情页。
根据钉钉规则,首先需要登录管理后台创建一个小程序,https://open-dev.dingtalk.com/#/corpeapp
获取以下三个参数:
综合钉钉的各种消息:
文本消息(text)
图片消息
语音消息
文件消息
链接消息
OA消息
markdown消息
卡片消息
笔者觉得钉钉的OA消息值得一试,而且提示信息明确充分、展示位绝佳,其他则不考虑。
例如:
发送OA消息详细接口:
public static function sendDingMessage($order_info, $one_time)
{
$order_goods_inf = db('order_goods')
->where(['order_id' => $order_info['id']])
->field('goods_id,goods_name,spec_key,goods_price')
->select();
$url = db('goods_imgs')
->where(['goods_id' => $order_goods_inf[0]['goods_id'], 'main_figure' => 1])
->value('path');
$ding = new Dingtalk();
$SendToUser_data = [
'userid_list' => '191902624820360246,'
. db('ding_users')->getfieldbymerchant_users_id($order_info['merchants_user_id'], 'userid')
,#发送给谁,钉钉给定的内部企业专属Id,这里我已经存到数据库里面了,下面接口有,可以自己获取
'agent_id' => '1122238532232266',#这个是注册小程序的那个agent_id
'msg' => [
"msgtype" => 'oa',#类型 OA
'oa' => [
'message_url' => 'http://www.baidu.com/user/#/order-management',#详情地址
'head' => [
'bgcolor' => 'FFBBBBBB',#此处默认
'text' => '头部标题'#此处默认
],
'body' => [
'title' => '订单物流异常',#消息的标题
'form' => [ #以下为具体的条目,详情参考上面的图片
[
"key" => "商品:",
"value" => $order_goods_inf[0]['goods_name'] . ' ' . $order_goods_inf[0]['spec_key']
],
[
"key" => "件数:",
"value" => count($order_goods_inf)
],
[
"key" => "订单:",
"value" => $order_info['order_sn']
],
[
"key" => "运单:",
"value" => $order_info['tracking_num']
],
[
"key" => "所属:",
"value" => db("store")->getfieldbyid($order_info['store_id'], 'store_name')
],
[
"key" => "物流公司:",
"value" => $order_info['shipping_name']
],
[
"key" => "订单处理时间:",
"value" => date('Y-m-d', $order_info['create_at'])
],
[
"key" => "最后更新时间:",
"value" => date('Y-m-d', $one_time)
],
[
"key" => "备注:",
"value" => "若完结,请忽略。"
],
],
'rich' => [
"num" => $order_goods_inf[0]['goods_price'],
"unit" => "美元"
],
"content" => "你的订单{
$order_info['order_sn']}的物流信息超过" . config('queue.msg_time2') . "天未更新,可能存在异常,单号:{
$order_info['tracking_num']}",#具体内容
"image" => $ding->uploadDingFile($url . '?x-oss-process=image/resize,m_fixed,h_350,w_600'), #这里的图片需要先获取媒体id,看下面的接口
"file_count" => "0",#附件个数
"author" => "321design订单消息" #发送主题
],
]
]
];
$result = $ding->sendOaMsg($SendToUser_data);
return $result;
}
钉钉通用接口:Dingtalk.php
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2021/3/18
* Time: 15:42
*/
namespace app\dingtalk;
/**
* 钉钉APi 开发接口
* 参考 https://developers.dingtalk.com/document/app/obtain-a-sub-department-id-list
* Class Dingtalk
* @package app\dingtalk
*/
class Dingtalk
{
/**
* @var string
*/
protected $AgentId;
/**
* @var string
*/
protected $AppKey;
/**
* @var string
*/
protected $AppSecret;
/**
* 构造函数
* Dingtalk constructor.
*/
public function __construct()
{
$this->AgentId = '1122859266';
$this->AppKey = 'dingiijc0aafnnudvaek';
$this->AppSecret = 'zBzFLrEmpWhYGnXD3TgO4J53ihrQupvglZ1oq9IHHOtkclqKvVuDBBYIV667CCev';
}
/**
* 获得query 参数access_token
* @return bool|mixed|string
*/
protected function getAccessToken()
{
$gettoken_config = 'https://oapi.dingtalk.com/gettoken' . '?corpid=' . $this->AppKey . '&corpsecret=' . $this->AppSecret;
$access_token = $this