OA集成釘釘開發——第六篇——消息推送

前面咱們說到微應用中的免登錄,那麼OA的開發的用戶信息就能夠拿到了。數據庫

接下來咱們要說的就是OA中的一個重要的功能就是消息的推送,這個功能是OA必不可少的一個可能,集成釘釘的一個很大的優點就是釘釘提供了會話消息的接口,消息的類型,style,都已經封裝好了。咱們只須要調用就能夠了,而且目前釘釘是免費的。json

企業會話消息樣例:api

msg2

發送企業消息接口說明

請求說明

Https請求方式: POST服務器

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

參數說明

參數 參數類型 必須 說明
access_token String 調用接口憑證

返回說明

若是收件人、部門或標籤不存在,發送仍然執行,但返回無效的部分。post

參數 說明
errcode 返回碼
errmsg 對返回碼的文本描述內容
invaliduser 無效的userid
invalidparty 無效的部門id
forbiddenUserId 因發送消息過於頻繁或超量而被流控過濾後實際未發送的userid。未被限流的接收者仍會被成功發送。限流規則包括:一、給同一用戶發相同內容消息一天僅容許一次;二、若是是ISV接入方式,給同一用戶發消息一天不得超過100次;若是是企業接入方式,此上限爲500。
messageId 標識企業消息的id,字符串,最長128個字符

1spa

2code

3token

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=";

過程就是調用釘釘提供的接口,流程很簡單,釘釘已經作了很好的封裝。

相關文章
相關標籤/搜索