低代码开发平台通过钉钉API实现流程管理数据对接

news/2024/9/23 4:07:11/
实例背景:

CRM项目虽然实现了报价转订单的功能,但是客户还是遇到使用不方便的问题,客户的业务流程中,审核报价的时候是需要提供销售人员与客户的聊天记录截图,这都是在手机上的,电脑操作不方便,而且每次提交了报价还要在微信上跟主管说一声,于是他们就在钉钉上使用报价审批功能,希望可以将钉钉的数据对接到系统内。

流程步骤:

销售人员使用钉钉进行报价的审批,审批通过的报价会对接到系统并生成一个销售单和对应的应收。要实现这个功能,需使用了白码平台提供的API功能,白码提供了对接各大平台封装好的api,包括有钉钉、微信服务号、企业微信、微信支付。

开发步骤:

1、使用白码低代码平台

地址:https://www.bnocode.com

如何通过<a class=钉钉API实现流程管理数据对接" height="937" src="https://img-blog.csdnimg.cn/img_convert/1bfa0bfd93d5c213583a4f481633060a.png" width="1200" />

对接流程:

1. 因为是由钉钉的流程触发系统的接口,所以需要设置一个回调接口(webhook),根据钉钉官方的开发文档,需要先注册回调,注册回调就需要用平台的云函数和webhook了。根据平台提供的扩展库,写出如下注册回调的云函数和webhook,直接在平台上测试就能注册回调了。

如何通过<a class=钉钉API实现流程管理数据对接" height="937" src="https://img-blog.csdnimg.cn/img_convert/ee3baf531e41241fe3b6a9a4a1ad43ba.png" width="1200" />

async function run($input,$output,$modules = modules){let dingTalkApi = $modules.dingTalkApi;let registerCallBack = await dingTalkApi.registerCallBack({call_back_tag:["bpms_instance_change"],//审批状态变更回调token:"",aes_key:"",url:""});$output.res = registerCallBack;}

如何通过<a class=钉钉API实现流程管理数据对接" height="937" src="https://img-blog.csdnimg.cn/img_convert/1d6b9fa8ed9216f694903201ff41d89e.png" width="1200" />

async function hook($req,$resp,$modules = modules){let dingTalkApi = $modules.dingTalkApi;let helper = $modules.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 result = dingTalkApi.instanceCrypto({token,encodingAESKey:aesKey,CorpId:corpid,timestamp,nonce});$resp.body = result;//加密信息let encrypt = $req.body.encrypt;if(encrypt){let msg = await dingTalkApi.msgCrypt.decrypt(encrypt);if(msg.message){data = JSON.parse(msg.message);}}}

如何通过<a class=钉钉API实现流程管理数据对接" height="937" src="https://img-blog.csdnimg.cn/img_convert/b1f45ebea33c80e317b8b9bbf15367e0.png" width="1200" />

 

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

如何通过<a class=钉钉API实现流程管理数据对接" height="937" src="https://img-blog.csdnimg.cn/img_convert/e69b988bfc25afa0085f9e796d1919d7.png" width="1200" />

async function hook($req,$resp,$modules = modules){let dingTalkApi = $modules.dingTalkApi;let helper = $modules.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 result = dingTalkApi.instanceCrypto({token,encodingAESKey:aesKey,CorpId:corpid,timestamp,nonce});$resp.body = result;//加密信息let encrypt = $req.body.encrypt;if(encrypt){let msg = await dingTalkApi.msgCrypt.decrypt(encrypt);if(msg.message){data = JSON.parse(msg.message);}}let processCode = data.processCode;if(processCode == "PROC-C0640453-0814-4D29-9A11-B6DF548C57ED"){let processInstanceId = data.processInstanceId;//审批实例idlet result = data.result;let type = data.type;if(result == "agree" && type == "finish"){//调用功能,生成订单和应收await $modules.program.exec("5f471de7d67c5c69ae4f5b6c",{"5eb9416bb75b4176eca49a17":{"5f471caa00d5f969b43eefb1":processInstanceId}});}}}

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

如何通过<a class=钉钉API实现流程管理数据对接" height="937" src="https://img-blog.csdnimg.cn/img_convert/b4b5d72c9a6c74260f1faa0c884c7d8b.png" width="1200" />

测试结果:

如何通过<a class=钉钉API实现流程管理数据对接" height="1200" src="https://img-blog.csdnimg.cn/img_convert/8e46f8c90cbc8190f43f9d4faf366757.png" width="1077" />

如何通过<a class=钉钉API实现流程管理数据对接" height="937" src="https://img-blog.csdnimg.cn/img_convert/ea70f3c6d9530a2324114addaa390c6d.png" width="1200" />

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


http://www.ppmy.cn/news/1509863.html

相关文章

Node.js、npm和ng之间的关系

一、Node.js 定义&#xff1a;Node.js是一个开源的、跨平台的JavaScript运行环境&#xff0c;它允许开发者在服务器端运行JavaScript代码。Node.js基于Chrome V8引擎&#xff0c;提供高性能和非阻塞I/O&#xff08;输入输出&#xff09;操作。功能&#xff1a;Node.js主要用于…

idea付费插件,哪个比较好用?

以下idea付费插件你们都用过哪些呢&#xff1f; 获取链接&#xff1a;https://web.52shizhan.cn

Docker Swarm部署SpringCloud Alibaba微服务踩坑记录

为了方便部署和维护微服务项目&#xff0c;还是得上集群部署方案&#xff0c;决定采用Docker的swarm&#xff0c;为什么不是k8s&#xff0c;因为部署骑来又是个新的工具&#xff0c;之前就一直用的docker&#xff0c;自带了类k8s的工具&#xff0c;索性就直接使用swarm了&#…

用视频文件模拟摄像头进行抖音、视频号直播的无人直播机(虚拟摄像头)推流器使用说明详细介绍

无人直播机是嵌入式软硬件一体化设计&#xff0c;支持远程修改设备参数&#xff0c;远程回放设备录像&#xff0c;还支持3.5mm音频实时互动&#xff0c;以及多个视频随机轮播或者顺序轮播。无人直播机不仅稳定还节能&#xff0c;支持7*24小时运行&#xff0c;不死机不卡顿。 一…

C++笔试题汇总

C笔试题汇总记录 一、概述二、概念分类1. 结构体1. C 和 C 中 struct 有什么区别&#xff1f;2. C中的 struct 和 class 有什么区别&#xff1f; 2. 类相关1. 类的大小1. 空类的大小2. 一般非空类大小3. 有虚函数类4. 有虚函数类的继承5. 只有虚函数6. 静态数据成员 2. C的三大…

Java 多线程练习2 (抽奖比较Runnable写法)

MultiProcessingExercise2 package MultiProcessingExercise120240814;import java.util.ArrayList; import java.util.Collections;public class MultiProcessingExercise1 {public static void main(String[] args) {// 需求&#xff1a;// 在此次抽奖过程中&#xff0c;抽奖…

花10亿裁6300人,这家网络巨头不好过

导语 一年两度裁员&#xff0c;涉及超万人。网络业务巨头思科为何作出如此大手笔裁员&#xff1f; 继英特尔之后&#xff0c;大洋彼岸的另一家IT巨头思科&#xff0c;也爆出了裁员计划。 彭博社的消息指出&#xff0c;思科将会进行今年的第二次裁员&#xff0c;涉及的范围为7%的…

Delphi中的魔法注入:依赖注入的神秘面纱

标题&#xff1a;Delphi中的魔法注入&#xff1a;依赖注入的神秘面纱 在软件开发的复杂世界里&#xff0c;Delphi作为一种历史悠久的编程语言&#xff0c;一直在企业级应用开发中占据着一席之地。随着软件工程实践的不断进步&#xff0c;依赖注入&#xff08;Dependency Injec…