钉钉轻量级开发助手

上次推出的CRM项目虽然实现了报价转订单的功能,但客户在使用过程中遇到了一些不便之处。具体来说,客户在审核报价时需要提供销售人员与客户的聊天记录截图,而这些都是在手机上操作的,对于电脑操作来说显得不够方便。此外,每次提交报价还需要在微信上通知主管,因此他们转而使用钉钉上的报价审批功能,希望可以将钉钉的数据对接到系统中。以下是实现这一功能的详细过程:

为了实现将钉钉数据对接到系统的功能,我们采用了平台提供的PI功能。这是第一次使用白码平台的PI功能,令人惊喜的是它提供了针对各大平台的封装API,包括钉钉、微信服务号、企业微信和微信支付。

下面是具体的对接流程:

  1. 由于该功能的触发是由钉钉的流程触发的系统接口,因此需要设置一个回调接口(webhook)。根据钉钉官方的开发文档,我们需要先注册回调。注册回调的过程涉及到平台的云函数和webhook功能。以下是注册回调的云函数和webhook代码示例:
async function registerCallBack($inpt, $otpt, $models = modles) {
  let dingTalkpi = $models.dingTalkpi;
  let registerCallBack = await dingTalkpi.registerCallBack({
    call_back_tag: ["bpms_instance_change"], // 审批状态变更回调
    token: "",
    aes_key: "",
    corpId: ""
  });
  $otpt.res = registerCallBack;
}

async function hook($req, $resp, $models = modles) {
let dingTalkpi = $models.dingTalkpi;
let helper = $models.helper;
let data = null; // 收到的数据
// 用于验证钉钉回调
let token = await helper.getConfig("token");
let aesKey = await helper.getConfig("aesKey");
let corpId = await helper.getConfig("corpid");
let { timestamp, nonce } = $req.query;
let reslt = dingTalkpi.instanceCrypto({
token,
encodingAESKey: aesKey,
CorpId: corpId,
timestamp,
nonce
});
$resp.body = reslt;
// 加密信息
let encrypt = $req.body.encrypt;
if (encrypt) {
let msg = await dingTalkpi.msgCrypt.decrypt(encrypt);
if (msg.message) {
data = JSON.parse(msg.message);
}
}
}


注册好回调后,我们需要调整webhook的代码逻辑。因为之后钉钉的审批实例状态有变更时都会执行webhook的代码。

2. 当客户在钉钉上审批通过了一个报价后,就会触发这个webhook,webhook再调用功能来生成一个订单和应收。这个功能中也包含了调用PI的过程,根据审批实例ID获取审批实例的详情,其中就包含了报价的信息。获取到报价信息后就可以录入到系统中了。

3. 测试结果显示,整个流程下来,结合钉钉的流程管理和白码的数据处理功能,提高了整个销售团队的销售效率。

通过使用钉钉轻量级开发助手,我们可以轻松实现与钉钉平台的对接,从而简化业务流程,提高工作效率。在未来的发展中,我们将继续优化这个助手的功能,让它更加高效、稳定,为用户带来更好的体验。
Share: Facebook Twitter Linkedin

Comments are closed.