OA集成钉钉开发——第六篇——消息推送

前面我们说到微应用中的免登陆,那么OA的开发的用户信息就可以拿到了。

接下来我们要说的就是OA中的一个重要的功能就是消息的推送,这个功能是OA必不可少的一个可能,集成钉钉的一个很大的优势就是钉钉提供了会话消息的接口,消息的类型,style,都已经封装好了。我们只需要调用就可以了,并且目前钉钉是免费的。

企业会话消息样例:

msg2

发送企业消息接口说明

请求说明

Https请求方式: POST

https://oapi.dingtalk.com/message/send?access_token=ACCESS_TOKEN

参数说明

参数参数类型必须说明
access_tokenString调用接口凭证

返回说明

如果收件人、部门或标签不存在,发送仍然执行,但返回无效的部分。

参数说明
errcode返回码
errmsg对返回码的文本描述内容
invaliduser无效的userid
invalidparty无效的部门id
forbiddenUserId因发送消息过于频繁或超量而被流控过滤后实际未发送的userid。未被限流的接收者仍会被成功发送。限流规则包括:1、给同一用户发相同内容消息一天仅允许一次;2、如果是ISV接入方式,给同一用户发消息一天不得超过100次;如果是企业接入方式,此上限为500。
messageId标识企业消息的id,字符串,最长128个字符

1

2

3

4

5

6

7

8

{

    "errcode": 0,

    "errmsg": "ok",

    "invaliduser": "UserID1|UserID2",

    "invalidparty":"PartyID1",

    "forbiddenUserId": "UserID1|UserID2",

    "messageId":"xxxxxxxxxxxxxxxx"

}

i

 

 

我的代码实现:

假设业务流程:用户提出的项目变更申请,提交完毕后,会向部门经理发送一条企业会话,那么部门经理直接打开会话就可以直接查看项目变更相关信息,并且可以进行审批。

我的界面:

 

在这个界面提交,后台接收,并且推送:

 

@RequestMapping("/add_ItemChange.do")
	@ResponseBody
	public String  add_ItemChange(
			String department,
			String project,
			String orderName,
			String businessProperty,
			String changeProvince,
			String changeCity,
			String outdoor,
			String beginTime,
			String yindaIdentify,
			String contractType,
			HttpServletRequest request){
		
		String user_staffId =(String) request.getSession().getAttribute(GlobalConstant.user_staffId);	
		String staff_user_id =(String) request.getSession().getAttribute(GlobalConstant.user_staff_user_id);
		String user_name =(String) request.getSession().getAttribute(GlobalConstant.user_name);
		
		List <String> now_approveList = ddSendMessageUtil.getApprovers(staff_user_id);
		YoItemChange itemChange  = new YoItemChange();
		itemChange.setIcAskStaffId(user_staffId);
		itemChange.setIcAskStaffDepart(department);
		itemChange.setIcApproveBegin(beginTime);
		itemChange.setIcAskStaffName(user_name);
		itemChange.setIcOutroomWork(outdoor);
		itemChange.setIcChangeProvince(changeProvince);
		itemChange.setIcWorkCity(changeCity);
		itemChange.setIcBusinessProperty(businessProperty);
		itemChange.setIcChangeItem(project);
		itemChange.setIcChangeOrder(orderName);
		itemChange.setIcTitle(user_name+"的"+orderName+"项目变更申请");
		itemChange.setIcApproveRecord(contractType);//数据库字段暂时顶替
		itemChange.setIcCost(yindaIdentify);//数据库字段暂时顶替
		itemChange.setIcNowApproveName(now_approveList.get(0));	
		int i= itemChangeMapper.add(itemChange);
		
		if(i>0){
			DDMessageUtil message = new DDMessageUtil();			
			message.setMessageUrl("http://yexianglei.ngrok.cc/YindaOA/ItemChange/approve_order_page.do?id="+itemChange.getIcSequenceNo());
			message.setPicUrl("/cc");
			message.setToUser("07022352451246847");
			message.setToParty("");
			message.setTitle(user_name+"的项目审批");
			message.setText("您好!请查收!");
			ddSendMessageUtil.sendMessage(message);
			return "success";
		}else{
			 return "error";
		}
	   
	}

这段代码中 ddSendMessageUtil是自行封装的类,实现推送的功能,其他代码就是这个业务上的一些增删改查。

ddSendMessageUtil详解:

	String access_token = DDSendMessageUtil.getAccess_token();
			JSONObject json=HttpsUtil.httpPost(DDSendMessageUtil.baseUrl02+access_token,contentJson);

contentJson 就是消息的json 严格按照api中格式。推送的内容,推送的目标都在内。

先获取access_token,post请求钉钉服务器就可以推送啦!

private static String baseUrl02="https://oapi.dingtalk.com/message/send?access_token=";

过程就是调用钉钉提供的接口,流程很简单,钉钉已经做了很好的封装。

 

转载于:https://my.oschina.net/xiaoshoubingliang/blog/812850

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值