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

news2024/12/25 22:16:20
实例背景:

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

流程步骤:

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

开发步骤:

1、使用白码低代码平台

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

如何通过钉钉API实现流程管理数据对接

对接流程:

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

如何通过钉钉API实现流程管理数据对接

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;

}

如何通过钉钉API实现流程管理数据对接

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);

        }

    }

}

如何通过钉钉API实现流程管理数据对接

 

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

如何通过钉钉API实现流程管理数据对接

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;//审批实例id

        let 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获取审批实例的详情,里面就包含了报价的信息,获取到报价信息就可以录入到系统中了。

如何通过钉钉API实现流程管理数据对接

测试结果:

如何通过钉钉API实现流程管理数据对接

如何通过钉钉API实现流程管理数据对接

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044509.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WEB渗透免杀篇-MSF+shellcode免杀

nps_payload >python nps_payload.py正常生成 >msfconsole -r msbuild_nps.rc开启监听 >%windir%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe xx.xml >wmiexec.py <USER>:<PASS><RHOST> cmd.exe /c start %windir%\Microsoft.NET\Framewo…

Python之字符串的函数和方法

字符串的函数和方法 字符串函数字符串方法方法链可选参数方法的嵌套 函数可以看做是执行特定任务的小程序。程序被打包或封装起来&#xff0c;提供给用户使用。**函数可以接受输人值&#xff0c;通过执行语句和判定表达式来完成任务&#xff0c;在完成时可能会返回值。**函数非…

基于STM32开发的智能家居温控系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 家庭智能温控办公室环境监测常见问题及解决方案 常见问题解决方案结论 1. 引言 智能家居温控系统通过整合温度传感器、湿度传感器、风扇和加热器等硬件&#xf…

SQL进阶技巧:断点缝合问题【如何按照业务规则对相邻行数据进行合并】

目录 0 需求描述 1 数据准备 2 数据分析 3 小结 0 需求描述 如下图所示,按照定义的规则进行数据变换 注意:b中的数值只有0和1 1 数据准备 with data as( select 2010 a,0 b union all select 2011 a,1 b union all select 2012 a,0 b union all select 2013 a,1 b un…

吴恩达机器学习-C2W1L3-简单神经网络

在本实验中&#xff0c;我们将使用Numpy构建一个小型神经网络。它将是你在Tensorflow中实现的相同的“咖啡烘焙”网络。 import numpy as np import matplotlib.pyplot as plt plt.style.use(./deeplearning.mplstyle) import tensorflow as tf from lab_utils_common import…

ACL主席:ACL不是AI会议

敲响警钟还是走向封闭&#xff1f; 点击访问我的技术博客https://ai.weoknow.comhttps://ai.weoknow.com 「ACL 不是 AI 会议&#xff08;ACL is not an Al conference&#xff09;」&#xff0c;在泰国曼谷举办的 ACL 2024 上&#xff0c;今年的 ACL 主席 Emily M. Bender 抛出…

实训日记day29

MySQL读写分离 1、读写分离的目的 数据库负载均衡&#xff1a; 当数据库请求增多时&#xff0c;单例数据库不能够满足业务 需求。需要进行数据库实例的扩容。多台数据库同时相 应请求。也就是说需要对数据库的请求&#xff0c;进行负载均衡 但是由于数据库服务特殊原因&#…

读零信任网络:在不可信网络中构建安全系统20攻击者视图

1. 攻击者视图 1.1. IETF要求所有提交的RFC都必须包含“安全风险考虑" 1.1.1. 明确指出了潜在陷阱、危险和警告&#xff0c;这对系统的实现和部署至关重要&#xff0c;有助于运营者确保最终的系统不会偏离设计之初的安全特性 1.1.2. 表明系统设计者对于可能存在的攻击进…

leetcode387. 字符串中的第一个唯一字符,哈希表

leetcode387. 字符串中的第一个唯一字符 给定一个字符串 s &#xff0c;找到 它的第一个不重复的字符&#xff0c;并返回它的索引 。如果不存在&#xff0c;则返回 -1 。 示例 1&#xff1a; 输入: s “leetcode” 输出: 0 示例 2: 输入: s “loveleetcode” 输出: 2 示例…

可能是全网最好用的 5 款免费数据恢复软件

不小心将 USB 中的文件删除了&#xff0c;这个时候要怎么办&#xff1f;首先我们不要保存 USB 磁盘上的任何新数据&#xff0c;否则丢失的数据文件将被覆盖。然后再利用专业的数据恢复工具进行恢复&#xff0c;这里为大家整理了全网最被推荐的5款免费的数据恢复软件。 1.福昕数…

vmware虚拟机玩GPU显卡直通

安装好exsi以后&#xff0c;找到管理----硬件-----PCI设备&#xff0c;勾选想要直通的显卡&#xff0c;然后点击“切换直通” 切换以后可以看到列表中的直通列显示为活动就对了。 然后编辑虚拟机设置&#xff0c;CPU关闭硬件虚拟化&#xff08;向客户机操作系统公开硬件辅助的…

【python】在Windows中定时执行Python脚本的详细用法教学

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

高可用集群keepalived(知识点+实验)详细版

高可用集群KEEPALIVED 一.高可用集群 1.1 集群类型 LB&#xff1a;Load Balance 负载均衡 LVS/HAProxy/nginx&#xff08;http/upstream, stream/upstream&#xff09; HA&#xff1a;High Availability 高可用集群 数据库、Redis SPoF: Single Point of Failure&…

在win10中,安装mingw-get-setup

安装windows下的VSCode软件 Windows下的VSCode安装后&#xff0c;还需要安装gcc编译器和g编译器。 gcc&#xff1a;编译C语言程序的编译器&#xff1b; g&#xff1a;编译C代码的编译器&#xff1b; 1、在Windows下安装VSCode&#xff1b; 2、安装插件有下面几个&#xff1a…

iPhone SE 4可能无法使用Apple Intelligence RAM可能被降级

在设备上运行Apple Intelligence的先决条件是RAM容量和神经引擎的能力。这些要求解释了为什么苹果的生成AI功能套件将首先在iPhone 15 Pro和iPhone 15 Pro Max上可用&#xff0c;因为这两款手机都配备了8GB RAM和A17 Pro。 此前有消息称&#xff0c;iPhone SE 4也将配备相同容…

Stable Diffusion入门:新手必备的几种插件,让小白快速上手(附带地址)

Stable Diffusion是一款强大的AI绘画工具&#xff0c;对于初学者而言&#xff0c;掌握这些模型和插件的使用&#xff0c;是解锁创作潜力、迅速提升技能水平的关键所在&#xff01; 首先我们简单介绍一下插件是什么&#xff1f;如何安装插件&#xff1f; 插件&#xff08;Plug…

VUE最强学习宝典01

目录 1.Vue是什么&#xff1f; 2. 两种使用方法 3.创建第一个vue实例 4.补充小知识 5.错误查询 1.Vue是什么&#xff1f; 概念&#xff1a;动态构建用户界面的渐进式 JavaScript 框架 。 优点&#xff1a;大大提升开发效率(70%) 缺点&#xff1a;需要理解记忆规划-->官…

开学季必备:全能耐用运动耳机推荐!

大家好&#xff01;开学季快到了&#xff0c;我们在学校的生活不仅仅包括课业&#xff0c;还有很多运动和体育项目是不可避免的。运动时&#xff0c;如果没有音乐的陪伴&#xff0c;难免会觉得枯燥乏味。作为一个对运动耳机有较高要求的学生&#xff0c;我最近发现了一款非常值…

VLM 系列——MiniCPM-Llama3-V 2.6——论文解读——前瞻(源码解读)

一、概述 1、是什么 是一款面向终端设备的多模态大型语言模型&#xff08;MLLM&#xff09;&#xff0c;论文暂未发布 &#xff0c;它专注于实现在手机等资源受限设备上的高级AI功能&#xff0c;参数8B&#xff08;qwen2 7B SigLIP ViT-400m/14 视觉标记压缩层 &#xff09;…

HOW - 用腾讯蓝盾部署一个 Web 应用

目录 一、介绍二、项目、流水线和 Stage1. 项目&#xff08;Project&#xff09;2. 流水线&#xff08;Pipeline&#xff09;3. Stage&#xff08;阶段&#xff09;示例&#xff1a;配置一个简单的 CI/CD 流程的基本步骤总结 三、一条完整的流水线包括什么 Stage1. 源代码管理&…