在项目中接触到一种比较简便的星空推送消息到云之家的方法,
这个方法调用云之家的接口,实现。
首先我们要认识下必要的参数:
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的形式,发送所有人