php--api发送钉钉消息

php--api发送钉钉消息

一、钉钉开发者配置

  1. 登录钉钉开发管理后台

https://open-dev.dingtalk.com/#/corpeapp

进入应用开发,根据需求选择应用创建类型,此处以企业内部开发为例,选择小程序==》创建应用;(注意:服务接口api使用不区分创建的是小程序还是H5微应用,均可使用。二者区别参考:https://ding-doc.dingtalk.com/doc#/bgb96b/ok9au2)

 

  1. 开发者在调用发送消息接口前,需在开发者后台添加“企业会话”接口权限,申请流程参考https://ding-doc.dingtalk.com/doc#/serverapi2/rnomdt

我们这里只是需要发送工作通知,保险起见登录、消息、通讯录权限我全部勾选了。

3、发送工作通知消息需要注意以下事项:

a.同一个应用相同消息的内容同一个用户一天只能接收一次。

b.同一个应用给同一个用户发送消息,企业内部开发方式一天不得超过500次。

c.通过设置to_all_user参数全员推送消息,一天最多3次。

d.超出以上限制次数后,接口返回成功,但用户无法接收到。详细的限制说明,请参考“工作通知消息的限制”。

e.该接口是异步发送消息,接口返回成功并不表示用户一定会收到消息,需要通过“查询工作通知消息的发送结果”接口查询是否给用户发送成功。

   f.消息类型和样例可参考

https://ding-doc.dingtalk.com/doc#/serverapi2/ye8tup

二、PHP接口实现

1、工作通知为例:发送消息接口地址如下:

https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=ACCESS_TOKEN

参数说明

参数

类型

必须

示例值

说明

agent_id

Number

1234

应用agentId

userid_list

String

否(userid_list,dept_id_list, to_all_user必须有一个不能为空)

zhangsan,lisi

接收者的企业内部用户的userid列表,最大用户列表长度:100

dept_id_list

String

否(可不传,若传不能为空)

123,456

接收者的部门id列表,最大列表长度:20,  接收者是部门id下(包括子部门下)的所有用户

to_all_user

Boolean

false

是否发送给企业全部用户

msg

json对象

{"msgtype":"text","text":{"content":"消息内容"}}

消息内容,消息类型和样例参考“消息类型与数据格式”。最长不超过2048个字节

 

2、在线调试地址:

https://open-dev.dingtalk.com/apiExplorer#/?devType=org&api=/message/corpconversation/asyncsend_v2

  1. PHP接口实现部分代码如下;
function request_by_curl($remote_server, $post_string)
    {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $remote_server);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json;charset=utf-8'));
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_string);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        $data = curl_exec($ch);
      
        curl_close($ch);
        return $data;
    }
    $webhook = "https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2?access_token=c2b26a56cd95338abf252a7cbe248415";

    $time = date("Y-m-d H:i:s", time());
    $content ="aa该用户存在违规,请注意检测";//文本内容
    $title = "aa危险警告";//标题
    $picUrl = "http://www.baidu.com";//图片链接
    $messageUrl = "http://www.baidu.com";//跳转链接
	$type="link";
	$textString = json_encode([	
			"agent_id" =>996449934,
			"msg" => [
				"msgtype" => "link",
				"link" => [
					"text" => $content,
					"title" => $title,
					"picUrl" => $picUrl,//图片链接
					"messageUrl" => $messageUrl,//跳转链接
				]
			],
			"userid_list" =>"5358582024311842,320960285422755448",//接受用户ID
		]);
	$result = request_by_curl($webhook, $textString);
	echo $result;
   
  1. 如果只是发送普通消息有个必填参数:

Cid:群消息或者个人聊天会话Id,(通过JSAPI之pickConversation接口唤起联系人界面选择之后即可拿到会话ID,之后您可以使用获取到的cid调用此接口,参考地址:https://wsdebug.dingtalk.com/。总览地址:https://ding-doc.dingtalk.com/doc#/dev/swk0bg

三、钉钉接受消息效果展示

 

 

以上PHP服务端接口实现发送钉钉消息完成。

 

猜你喜欢

转载自blog.csdn.net/u014724048/article/details/109775818
今日推荐