通过NodeJS对接微信客服实现第三方API管理消息

2023-11-15

最近项目有个需求,要对接微信客服,之前也没做过,一脸懵逼~~,我属于那种不知其然,就心里很没底的人,感觉不知道怎么去开发了,所以就趁着后端还没开发完接口,先自己对接一下试试
接下来就是整个流程

首先我们先注册一个企业微信

这一步是必须的,因为我们需要企业微信管理员是自己,只有管理员才能开通客服账号,以及后续我们进行第三方配置的时候都需要用到管理员账号
个人可以注册企业微信,所以我是一个人的身份注册了一个企业微信
刚开始企业微信的样子是这样的,你会发现并没有工作台之类的,这是因为我们暂时还不是企业管理员,没有设置应用,接下来我们要切换到企业管理员界面

在这里插入图片描述

  1. 我们打开企业微信,并点击左上角的小图标

在这里插入图片描述

  1. 然后点击第一个用户,这样就把你自己设置成了管理员

在这里插入图片描述

  1. 然后你就会发现,你的企业微信变成了下面的样子,这时候我们就可以看到工作台了,而我们微信客服也就在这里边能找到
    在这里插入图片描述

在这里插入图片描述

  1. 然后我们点击开始使用就可以了,默认第一个客服就是你自己,然后我们可以添加多个客服,我们测试的话就不需要太多了,自己酌情添加即可

在这里插入图片描述

登录微信客服体验客服功能

  1. 登录微信客服

官网地址:https://kf.weixin.qq.com/kf/loginpage

  1. 登入之后我们可以扫码进行体验,通过右上角的客户咨询消息,进行收发消息

在这里插入图片描述

  1. 这样我们就实现了微信内置的客服功能

进行第三方配置

这里我使用nodejs做服务端进行测试,在测试之前我们还要做一下配置

  1. 首先我们需要做一个内网穿透,将线上的地址映射到本地,这是为了后续的微信客服回调配置准备的

这里我使用的是natapp做的内网穿透工具,使用方式很简单,不明白的可以网上搜一下
需要注意的是,免费隧道是不能进行微信的测试的,所以我们需要购买一个隧道
这里我们买最便宜的VIP_1型即可

在这里插入图片描述


然后我们还需要买一个二级域名,绑定到购买的隧道,这样就可以了,二级域名随便,我买了一个3元/年~~
然后在隧道配置里修改二级域名绑定即可

在这里插入图片描述

  1. 绑定好二级域名之后,我们就可以在本地启动一个node服务器

这里我用的是express快速搭建的node服务器,你也可以使用其他的

  1. 然后我们设置好监听端口之后,别忘了在natapp中修改本地端口绑定,然后我们就可以在本地启动natapp
    在这里插入图片描述
    在这里插入图片描述

  2. 然后我们在微信客服后台->开发配置,点击开始接入,我这边现在是启用,是因为我已经接入了第三方URL

在这里插入图片描述

  1. 然后我们进入回调配置页面,将在natapp中申请的二级域名填到下面的回调URL中,然后下面的Token/EncodingAESKey我们直接点击随机获取即可,这时候我们点击完成,应该是会提示openapi回调地址请求不通过,所以我们还需要进行Node服务器配置

在这里插入图片描述

编写服务端代码

这里编写的服务端代码非常简单,我们只是需要正确响应微信客服的请求即可

这里我参考了一下这篇博客:https://blog.csdn.net/qq_35577655/article/details/123388612
这篇博客写的非常详细,但是他可能是对接的企业微信客服,而我这边是微信客服,所以还是有出入的
我的服务端代码如下:

const express = require('express')
const app = express()
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
const { decrypt  } = require('@wecom/crypto');
const encodingAESKey = '你的encodingAESKey'
app.get('/', function(req, res) {
  const params = req.query
  const { message } = decrypt(encodingAESKey, params.echostr)
  res.send(message)
})

app.listen(3001, () => {
  console.log('server is running')
})

这里用到了@wecom/crypto这个库,这是微信专门给微信客服用于加密解密签名校验用的库
我们只需要通过decrypt这个方法将message解密出来,然后作为响应返回即可
这个时候我们在点击回调配置中的完成按钮,应该就可以通过了

在这里插入图片描述

通过postman等工具进行接口测试

接下来的事情就好办了,我们可以直接通过postman等工具进行微信客服的接口测试

  1. 首先我们需要获取access_token

参考:获取调用凭证access-token
这里需要注意的是,我们的corpsecret这里使用的应该是企业的secret

在这里插入图片描述

在这里插入图片描述

  1. 我们获取到access_token之后就可以使用postman进行各个接口测试了

比如获取消息事件接口:https://qyapi.weixin.qq.com/cgi-bin/kf/sync_msg?access_token=ACCESS_TOKEN

在这里插入图片描述

  1. 这样我们就已经将微信客服对接到了我们自己的服务器,可以自己进行管理消息的收发了
  2. 最后需要注意的是,我们在发送消息的时候msgid非必填,但是不要将msgid设置为空,直接去掉这个字段就好了,不然的话会报参数错误
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过NodeJS对接微信客服实现第三方API管理消息 的相关文章

随机推荐

  • kafka踩坑——java找不到kafka-run-class.sh: line 309: exec: java: not found

    今天执行 user 1 test 1 opt kafka sudo bin zookeeper server start sh config zookeeper properties opt kafka bin kafka run clas
  • Spring Boot应用篇-JSR参数校验定制

    Spring Boot应用篇 JSR参数校验定制 T1 前言 SpringBoot中默认提供了对JSR Java Specification Requests 注解的校验支持 但并没有对校验失败抛出的异常进行处理 该博文主要介绍个人对Spr
  • 解决Android Studio安装过程中“SDK tools directory is missing”的问题

    SDK tools directory is missing 这是因为安装时你的计算机无法连接到google的服务器 对google服务器的域名地址解析出问题了 无法从google服务器下载SDK tools 安装时自动跳过安装SDK to
  • switch语句格式_JavaScript流程控制语句_if语句(十一)

    目录 什么是流程控制语句 if语句的格式以及使用 一 什么是流程控制语句 JavaScript中的语句是从上到下一层一层执行的 通过流程控制语句可以控制程序执行的流程 使程序可以根据一定的条件来选择执行 使用条件判断语句可以在执行某个语句之
  • 华为云构建docker服务流程

    最近买了一个华为云服务器 配置不高适合学习 今天就从0开始从这个华为云服务器搭建我们自己的一个docker服务 安装docker 步骤1 更新系统软件包 sudo yum update 步骤2 添加docker存储库 sudo yum co
  • 前端开发工具DevTools的详细知识点总结(一)

    文章目录 打开DevTools 元素面板 Style面板 Computed面板 devtools取色器 控制台面板 基本功能介绍 控制台应用 网络面板 功能区介绍 分析请求 结语 打开DevTools devtools 即Chrome 开发
  • 《Java 并发编程实战》--读书笔记

    Java 并发编程实战 注 极客时间 Java 并发编程实战 读书笔记 GitHub https github com ByrsH Reading notes blob master Concurrency Java并发编程实战 极客时间
  • TYPE-C接口引脚详解

    Type C口有4对TX RX分线 2对USBD D 一对SBU 2个CC 另外还有4个VBUS和4个地线 1 当Type C接口仅用作传输DP信号时 则可利用4对TX RX 从而实现4Lane传输 这种模式称为DPonly模式 2 Typ
  • MFC之MessageBox、AfxMessageBox用法

    在软件中我们经常会弹出个小窗口 给一点点提示 这就会用到消息对话框 在Win32 API程序中只有MessageBox这一种用法 而在MFC中就有三各方法 1 调用API中的MessageBox 2 调用CWnd的成员函数MessageBo
  • PYQT5中QT Designer设置界面、按钮等背景图

    超级简单的新手教程 目录 文章目录 第一步 第二步 第三步 第一步 制作一个 qrc文件 在
  • python使用Axes3D画三维图加入legend图例时报错AttributeError: ‘Poly3DCollection‘ object has no attribute ‘_edgecolo

    Q python使用Axes3D画三维图加入legend图例时报错AttributeError Poly3DCollection object has no attribute edgecolors2d 报错源代码 fig plt figu
  • 计算机网络和因特网的基本认识

    计算机网络和因特网 笔者阅读 计算机网络 自顶向下方法 第七版第一章所作笔记如下 主要为计算机网络和因特网的基本认识 第一章概述笔记入口 第二章应用层笔记入口 第三章运输层笔记入口 第四章网络层数据平面笔记入口 1 什么是因特网 1 1 因
  • Git教程:标签

    实际上看到这边 对于Git分支仓库这些概念以及commit push pull等操作 但是有些东西我们可能常见到 但是不怎么经常用的 tag 标签其实就算一个 我们下载一些开源项目的时候 在GitHub上经常看到版本 有的项目是通过tag来
  • systemui

    一 SystemUI 概述 二 模块基本布局 三 模块内部框架 四 模块流程 五 重要文件的介绍 一 SystemUI 概述 1 Statusbar 的功能作用 1 1 状态栏的通知功能 包括时间 通知 系统状态等 1 2 状态栏的日期显示
  • VBA &金融

    汇总数据 算提成 G py 210523finance VBA专题12 课程需用材料 Sub Macro1 Dim ws As Worksheet Dim i As Integer For i 1 To 20 Set ws Sheets A
  • kotlin 中intent的传值应用

    main Activity fun intent position Int content String var intent Intent this MainActivity TestActivity class java var bun
  • org.apache.poi.ss.usermodel.Cell.setCellValue(Ljava/time/LocalDateTime;)V

    java 导出功能 出现错误的原因是 实体中存在日期 而导出的时候Excel无法转换日期类型 解决方法 在实体中将日期类型转换为String类型 ColumnWidth 25 ExcelProperty value 计划开始日期 index
  • 100道Python练习题集合,拿去刷

    看书 看视频都可以帮助你学习代码 但都只是辅助作用 学好Python 最重要的还是多敲代码 多刷题 不知道怎么找题刷题的小伙伴 可以看看小编今天带来的 Python100练习题 覆盖了基本语法 数据结构 算法等多个方面 100道Python
  • moviepy音视频开发:使用credits1给视频加片头片尾字幕

    前往老猿Python博文目录 一 概述 在 moviepy音视频剪辑 视频基类VideoClip子类DataVideoClip UpdatedVideoClip ImageClip ColorClip TextClip类详解 介绍了Text
  • 通过NodeJS对接微信客服实现第三方API管理消息

    最近项目有个需求 要对接微信客服 之前也没做过 一脸懵逼 我属于那种不知其然 就心里很没底的人 感觉不知道怎么去开发了 所以就趁着后端还没开发完接口 先自己对接一下试试 接下来就是整个流程 首先我们先注册一个企业微信 这一步是必须的 因为我