本文阐述如何在SCRM,嵌入您的系统页面到侧边栏,并回传客户标识;为后续获取SCRM客户信息打下基础。
配置侧边栏#
侧边栏传参及签名验证#
配置侧边栏地址后,SCRM将通过地址,并回传Query参数,定义:{
tenantId = tenantId,
v = 2,
timestamp = timestamp,
param = json,
sign = sign
}
param格式如下:
{
platformId = 1,
externalUserId = 'xxxxx',
accountId = 'xxxx',
userId=10
}
public static string GetMs5Sign(string tenantId, long timestamp, string paramJson, string aesKey, int v = 2)
{
//按参数key排序
SortedDictionary<string, string> treeMap = new SortedDictionary<string, string>(new Comparator())
{
["tenantId"] = tenantId,
["v"] = v.ToString(),
["param_json"] = paramJson,
["timestamp"] = timestamp.ToString(),
};
//加密
StringBuilder signbuilder = new StringBuilder();
signbuilder.Append(aesKey);//前后加上应用密钥
foreach (string key in treeMap.Keys)
{
if (string.IsNullOrEmpty(key) || string.IsNullOrEmpty(treeMap[key]))
continue;
signbuilder.Append(key + treeMap[key]);
}
signbuilder.Append(aesKey);//前后加上应用密钥
#region 转md5 小写
byte[] bytes = MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(signbuilder.ToString()));
signbuilder.Clear();
for (int i = 0; i < bytes.Length; i++)
{
signbuilder.Append(bytes[i].ToString("x2"));
}
return signbuilder.ToString().ToLower();
#endregion
}
private class Comparator : IComparer<string>
{
public int Compare(string x, string y)
{
return x.ToLower().CompareTo(y.ToLower());
}
}
访问SCRM API#
通过客户标识(externalUserId)获取客户详情#
建议使用外部联系人作为客户联系人的模型对齐客户,而不是对齐客户id,因为友米的客户id可能因为合并客户或者拆分客户变化