Node.JS调用企业微信API:自建应用的回调事件
Roy
• 发表于:2021-02-23 18:35:02 • 更新于:2021-12-01 20:19:05
599

目标:

通过企业微信自建应用相关API实现回调事件。

平台语言:

使用node.js开发。

准备工作:

准备一个企业微信管理员账号

实现步骤:

1、选择企业微信回调接口模板创建webhook,并将webhook路径复制。企业微信回调

2、打开企业微信后台,在自建应用详情页,点击“接收消息”的“设置API接收”按钮,进入配置页面。将复制的webhook路径复粘贴到url中,按要求填写Token(可由企业任意填写,用于生成签名。)及EncodingAESKey(用于消息体的加密,是AES密钥的Base64编码。),加密说明:https://work.weixin.qq.com/api/doc/90000/90135/90238

配置页面

3、在客户联系的“客户>api>接收事件服务器”中设置相同内容(三个参数保持一致)。客户联系三个参数

4、在白码平台配置webhook的参数:corpid(我的企业->企业id)、corpsecret(自建应用secret)、token、aesKey(即EncodingAESKey)平台配置参数

5、回调代码

async function hook($req, $resp, $modules = modules) {

 

    //get 请求用于验证有效性

    if ($req.method == "GET") {

        /**

         * 企业收到消息后,需要作如下处理:

         * 1、对msg_signature进行校验

         * 2、解密Encrypt,得到明文的消息结构体(消息结构体后面章节会详说)

         * 3、如果需要被动回复消息,构造被动响应包

         * 4、正确响应本次请求

         * 以上1~2步骤可以直接使用解密函数一步到位。

         * 3步骤其实包含加密被动回复消息、生成新签名、构造被动响应包三个步骤,可以直接使用加密函数一步到位。

         */

        $resp.body = await modules.wxworkApi.getVerifyMsg($req);//处理已封装,可直接调用

 

} else if ($req.method == "POST") {

 

        //无法保证在五秒内处理完成,先回复(企业微信服务器在五秒内收不到响应会断掉连接)

        $resp.body = "success";

 

        //处理

        let handle = async () => {

            //将数据转换成json

            let data = await modules.wxworkApi.getMsgData($req);

 

            if (data.Event == "change_contact" && data.ChangeType == "create_party") { /**添加部门 */

 

                //TODO 处理添加部门事件

 

            } else if (data.Event == "change_contact" && data.ChangeType == "update_party") {/**修改部门 */

 

                //TODO 处理修改部门事件

 

            } else if (data.Event == "change_contact" && data.ChangeType == "delete_party") { /**删除部门 */

 

                //TODO 处理删除部门事件

 

            } else if (data.Event == "change_contact" && data.ChangeType == "create_user") { /**添加成员 */

 

                //TODO 处理添加成员事件

 

            } else if (data.Event == "change_contact" && data.ChangeType == "update_user") {/**修改成员 */

 

                //TODO 处理修改成员事件

 

            } else if (data.Event == "change_contact" && data.ChangeType == "delete_user") { /**删除成员 */

 

                //TODO 处理删除成员事件

 

            } else if (data.Event == "change_external_contact" && data.ChangeType == "add_external_contact") {/**添加客户事件*/

 

                //TODO 处理添加外部联系人事件

 

            } else if (data.Event == "change_external_contact" && data.ChangeType == "edit_external_contact") {/**编辑客户事件(标签等信息) */

 

                //TODO 处理编辑外部联系人备注标签信息事件

 

            } else if (data.Event == "change_external_contact" && data.ChangeType == "del_external_contact") { /**删除客户事件*/

 

                //TODO 处理删除外部联系人事件

 

            }

            handle()

        }

    }

企业微信官方API:https://work.weixin.qq.com/api/doc/90000/90135/90237

白码使用的API库:https://github.com/liwenyue/co-wxwork-api



本文是否对您有帮助?
有帮助
没帮助
您是否遇到了以下问题?
内容过期或不准确
缺少场景、事例
链接有误
太简单,步骤待完善
其他
提交反馈
如需获取即时帮助,请联系
小助理
微信扫码添加小助理
让你的想法快速变成软件吧~
文章标签
API
联系我们
售前咨询电话
020-88520693
意见箱 · 建议反馈
您的宝贵建议,使白码更完美!
微信扫码添加白码小助理