从一个CRM系统向另外一个CRM系统推送数据

从一个CRM系统向另外一个CRM系统推送数据

前言:
     zoho crm 实现两个机构之间推送数据。
     zoho accesstoken(以下简称token)  有效性是1个小时,而且在短时间内有重复生成token的限制(10分钟范围内最多生成10个token)

问题点:

使用自定义函数推送数据。如果要在代码中生成token,那么如果不加限制 短时间推送太多次。有可能造成获取token失败,从而导致数据推送失败。

解决方案:
使用zoho crm 变量 
在crm变量中创建两个变量。 1, token生成时间  2, token    
通过将函数中获取到的token,以及token创建时间 存放到 两个机构变量中,判断token上一次的创建时间。计算时间差,避免重复创建以及函数执行失败的情况。

代码:

//先在控制台生成code ,通过code获取到accesstoken  与 refreshtoken 存放到机构变量。
//获取token生成时间

ress = zoho.crm.getOrgVariable("tokenstarttime");
//访问令牌
accessToken = zoho.crm.getOrgVariable("accesstoken");
info accessToken;
info ress;
info zoho.currenttime;
start_time = ress;
info start_time.unixEpoch();
aa = start_time.unixEpoch();
info zoho.currenttime.toString().unixEpoch();
bb = zoho.currenttime.toString().unixEpoch();
minutes = (bb - aa) / 60000;
info "minutes:" + minutes;
//判断时间差换算成分钟
if(minutes > 59.99)
{
tokenMap = Map();
tokenMap.put("refresh_token","1000.683ca6a2f4859399a8215b62f50463c3.553063c9040b8aaf0bfd117c15254c95");
tokenMap.put("client_id","1000.ZDAF0XH9OD7VQ8BO4LQ86PBNSSMXSZ");
tokenMap.put("client_secret","b174e63517ff81fd802ee864d85d6e821edb61bbfd");
tokenMap.put("grant_type","refresh_token");
info accessToken;
valueMap = Map();
valueMap.put("apiname","accesstoken");
valueMap.put("value",accessToken);
resp = zoho.crm.invokeConnector("crm.set",valueMap);
//设置刷新令牌日期
valueMapdate = Map();
valueMapdate.put("apiname","tokenstarttime");
valueMapdate.put("value",zoho.currenttime);
resp = zoho.crm.invokeConnector("crm.set",valueMapdate);
info resp;
}
else
{
//执行传输数据
datamap = Map();
       datamap = Map();
datamap.put("key", "value");
datamap.put("key1", "value1");
//etcc..
insertres = invokeurl
[
type :POST
parameters:datamap.toString()
headers:{"Authorization":"Zoho-oauthtoken " + accessToken}
];
}