云星空执行消息发送云之家

在项目中接触到一种比较简便的星空推送消息到云之家的方法,

这个方法调用云之家的接口,实现。

首先我们要认识下必要的参数:

1、团队号eid

2、公共号id

3、公共号pubsecret

4、云之家路径

5、用户poinid(可以发送到对应的部门或者说组织所有人)

先上我写的公共方法,这个方法对里面的一些参数都有详细的注释,使用时,直接拷贝过去就可

var F_ora_Edi = Kingdee.BOS.ServiceHelper.SystemParameterServiceHelper.GetParamter(ctx, 0, 0, “BD_BaseDataParameter”, “FEdiText”).ToString();//团队号eid

var F_ora_Pub = Kingdee.BOS.ServiceHelper.SystemParameterServiceHelper.GetParamter(ctx, 0, 0, “BD_BaseDataParameter”, “FPubText”).ToString();//公共号id

var F_ora_pubkey = Kingdee.BOS.ServiceHelper.SystemParameterServiceHelper.GetParamter(ctx, 0, 0, “BD_BaseDataParameter”, “FPubkeyText”).ToString();//公共号pubsecret

var F_ora_YZJUrl = Kingdee.BOS.ServiceHelper.SystemParameterServiceHelper.GetParamter(ctx, 0, 0, “BD_BaseDataParameter”, “FYZJUrlText”).ToString();//云之家路径

public string SendMsg(Context ctx,string eid, string pub, string pubsercet, string YZJUrl, JArray user, JObject msgObj)

{

JObject jobject = new JObject();

#region 发送方信息

JObject from = new JObject();

from.Add(“no”, eid); //发送方企业的企业注册号(eid),格式为字符串

from.Add(“pub”, pub);//发送使用的公共号ID,格式为字符串

string time = GetTimeStamp();

from.Add(“time”, time);//发送时间,为’currentTimeMillis()以毫秒为单位的当前时间’的字符串或数字

string key = Guid.NewGuid().ToString(“N”).Substring(0, 16); /*随机生成的16位字符*/

from.Add(“nonce”, key);//随机数,格式为字符串或数字

//string time = GetUnixTimeStamp();

string[] data = new string[] { eid, pub, pubsercet, key, time };

string pubtoken = sha(data);

from.Add(“pubtoken”, pubtoken);//公共号加密串,格式为字符串。

jobject.Add(“from”, from);//发送方信息,格式为JSON对象

#endregion

#region 接收方信息

//其中,”to”:[] 表示所有订阅的企业和用户。(企业自建公共号此参数不起作用);

//其中,”to”:[{“no”:“10001”,”code”:“all”},{“no”:“10002”,”code”:“all”}….] 表示企业10001,10002所有订阅的用户。”code”:“all”一定不要漏,否则报错;

//其中,”to”:[{“no”:“10001”,”user”:[“1”,”2”]},{“no”:“10002”,”user”:[“3”,”4”]}] 表示企业10001的openid = 1,2用户; 企业10002的openid = 3,4用户。

JObject to = new JObject();

to.Add(“no”, eid);//接收方企业的企业注册号(eID),格式为字符串

to.Add(“user”, user);// 接收方的用户ID,格式为包含OPENID的JSON数组

//to.Add(“user”, userJArr);// 接收方的用户ID,格式为包含OPENID的JSON数组

//to.Add(“code”, “all”);

to.Add(“code”, 0);

#endregion

JArray toJArr = new JArray();

toJArr.Add(to);

jobject.Add(“to”, toJArr);//接收方信息,格式为包含一至多个接收方信息JSON对象的JSON数组

jobject.Add(“type”, 2);//消息类型,格式为整型”,(取值 2:单文本,5:文本链接,6:图文链接)

//JObject msgObj = new JObject();

//msgObj.Add(“text”, “测试发送消息”);

jobject.Add(“msg”, msgObj);//发布到讯通的消息内容,格式为JSON对象

string reqMsg = JsonConvert.SerializeObject(jobject);

string result = HttpRequestUtil.PostStringData(YZJUrl, reqMsg, null);

// string result = HttpRequestUtil.PostStringData(“https://yunzhijia.com/pubacc/pubsendV2”, reqMsg,null);

return result;

}

使用时如果我们有明确的人,需要从云之家用户映射表中配置号对应的pointid数据。

如果没有,而用组织id的形式,发送所有人

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注