目标:

在企业微信上只能设置统一的新客户欢迎语,因此我们通过API来实现为对每个成员设置个性化欢迎语。

实现环境:

白码低代码平台(该平台是低代码代发平台,提供企业微信API,可直接调用,减少前期配置调试工作)

平台语言:

使用node.js开发

准备工作:

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

请结合以下内容阅读:

实现步骤:

1、创建“新客户欢迎语”数据表以存储成员的欢迎语数据。

2、创建上传临时素材的云函数。

配置API参数:

代码:

async function run($input, $output, $modules = modules) {

let image_url = $input.image_url;

let mediaName = new Date().getTime() + ".png";

//上传临时素材

let media = await modules.wxworkApi.uploadMediaByUrl(image_url, "image", mediaName);

//输出

$output.media_id = media.media_id;

$output.created_at = media.created_at;

}

3、创建新建欢迎语功能(根据需求自行构建),并调用“上传临时素材”云函数:

4、创建发送新客户欢迎语云函数,并创建一个功能调用它。

配置:

代码:

async function run($input, $output, $modules = modules) {

let commonWelcomeQuery = await modules.data.queryData("5f4647d829fa640a919d57ff", { "5f464815e233c00a9094345e": "通用" });

if (commonWelcomeQuery.length > 0) {

//初始化为通用欢迎语

let welcome = commonWelcomeQuery[0];

//根据userid查询成员的欢迎语

let welcomeQuery = await modules.data.queryData("5f4647d829fa640a919d57ff", { "5f46482d29fa640a919d5801": $input.userid });

welcome = welcomeQuery.length > 0 ? welcomeQuery[0] : welcome;

let nowTime = new Date().getTime();

//欢迎语初始化为发送文本内容

let msgData = {

welcome_code: $input.welcomeCode,

text: {

content: welcome["5f46483929fa640a919d5802"]

}

};

let create_at = "";

let isExpired = false;

let media_id = "";

switch (welcome["5f464af329fa640a919d5809"]) {//欢迎语类型

case "图片":

create_at = new Number(welcome["5f464de7e233c00a9094346e"] + "000");

isExpired = (nowTime - create_at) > 3 * 24 * 60 * 60 * 1000;//素材超过3天失效

media_id = welcome["5f464dc0e233c00a9094346d"];

if (isExpired) {

//重新上传图片

let mediaName = new Date().getTime() + ".png";

let getMediaId = await modules.wxworkApi.uploadMediaByUrl(welcome["5f464dc0e233c00a9094346d"], "image", mediaName);

media_id = getMediaId.media_id;

//更新图片素材

let form = {

"5f464dc0e233c00a9094346d": getMediaId.media_id,

"5f464de7e233c00a9094346e": getMediaId.created_at

}

modules.data.updateData("5f4647d829fa640a919d57ff", welcome._id, form);

}

//文本+图片

msgData = {

welcome_code: $input.welcomeCode,

text: {

content: welcome["5f46483929fa640a919d5802"]

},

image: {

media_id: media_id

}

};

break;

case "图文":

//文本+图文

msgData = {

welcome_code: $input.welcomeCode,

text: {

content: welcome["5f46483929fa640a919d5802"]

},

link: {

title: welcome["5f46486329fa640a919d5804"],

picurl: welcome["5f46487029fa640a919d5805"],

desc: welcome["5f464878e233c00a90943460"],

url: welcome["5f464881e233c00a90943461"]

}

};

break;

case "小程序":

create_at = new Number(welcome["5f464e10e233c00a90943472"] + "000");

isExpired = (nowTime - create_at) > 3 * 24 * 60 * 60 * 1000;//临时素材超过3天失效

media_id = welcome["5f464e06e233c00a90943471"];

if (isExpired) {

//重新上传封面

let mediaName = new Date().getTime() + ".png";

let getMediaId = await modules.wxworkApi.uploadMediaByUrl(welcome["5f4722b4e233c00a90943587"], "image", mediaName);

media_id = getMediaId.media_id;

//更新小程序封面素材

let form = {

"5f464e06e233c00a90943471": getMediaId.media_id,

"5f464e10e233c00a90943472": getMediaId.created_at

}

modules.data.updateData("5f4647d829fa640a919d57ff", welcome._id, form)

}

//文本+小程序

msgData = {

welcome_code: $input.welcomeCode,

text: {

content: welcome["5f46483929fa640a919d5802"]

},

miniprogram: {

title: welcome["5f464891e233c00a90943462"],

pic_media_id: media_id,

appid: welcome["5f4648a4e233c00a90943463"],

page: welcome["5f4648afe233c00a90943464"]

}

};

break;

}

//发送欢迎语

modules.wxworkApi.request(

{

method: 'post',

url: 'externalcontact/send_welcome_msg',

data: msgData

}

)

}

}

功能:

5、设置回调事件,在成员添加外部联系人时发送欢迎语(回调事件的具体实现过程可参考:Node.JS调用企业微信API:自建应用的回调事件)

代码:

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_external_contact" && data.ChangeType == "add_external_contact") {/**添加客户事件*/

//调用功能,发送欢迎语

modules.program.exec(

"5f4735ef00d5f969b43ef012",//功能follow

{

"5f47360000d5f969b43ef014": {//输入参数步骤

"field_1598502473677": data.Userid,//userid

"field_1598502477417": data.WelcomeCode//welcome_code

}

}

);

handle()

}

}

}

}

至此已实现成员个性化欢迎语的功能。

java欢迎词,企业微信API:成员个性化新客户欢迎语的nodejs实现相关推荐

  1. 【Linux学习】如何编写Shell脚本调用企业微信api来发消息给企业微信成员?

    一.前言 最近通过python实现了发送消息给企业微信的功能,参考链接: [Jenkins学习 ]如何编写Python脚本来调用企业微信的api通知企业微信成员关于Jenkins的编译结果? http ...

  2. 基于企业微信api 开发 消息推送提醒 Python与Java

    1.关于脚本 身为一个程序猿,不管你从事什么开发,学会使用一门脚本语言可以提高你的开发效率.我目前使用的是Python,因为它支持的库非常多,拿来即用.在这个快节奏的开发,是非常有效率的,所以我非常强 ...

  3. 基于Java实现企业微信群聊机器人-文件上传+消息推送(保证可用)

    基于Java实现企业微信群聊机器人-文件上传+消息推送 1.pom.xml(注意版本尽量保持一致) 2.文件工具类 3.企业微信请求类 4.企业微信响应类 5.发送方法 6.企业微信机器人创建和配置 ...

  4. insert时调用本身字段_python3调用企业微信api!开发一款属于自己的企业微信

    python3调用企业微信api 最后更新时间:2020/5/11 前段时间,我将企业微信官方提供的python接口代码的部分功能修改成了python3的,并且自己也使用并测试过部分功能: 因为并没有 ...

  5. python企业微信特定用户_python3调用企业微信api!开发一款属于自己的企业微信...

    python3调用企业微信api 最后更新时间:2020/5/11 前段时间,我将企业微信官方提供的python接口代码的部分功能修改成了python3的,并且自己也使用并测试过部分功能: 因为并没有 ...

  6. python3调用企业微信api!开发一款属于自己的企业微信

    python3调用企业微信api 最后更新时间:2020/5/11 前段时间,我将企业微信官方提供的python接口代码的部分功能修改成了python3的,并且自己也使用并测试过部分功能: 因为并没有 ...

  7. Node.JS调用企业微信API:生成渠道二维码

    目标: 通过API设置成员的"联系我"方式生成渠道标识二维码,实现标记客户扫码渠道,方便个渠道客户信息统计等. 实现环境: 白码低代码平台(该平台提供企业微信API,可直接调用,减 ...

  8. java 获取企业微信access_token调用接口

    企业微信api地址 : https://work.weixin.qq.com/api/doc/90000/90135/90664 1. 登录企业微信 https://work.weixin.qq.co ...

  9. 关于JAVA调用企业微信审批流程的接口

    关于JAVA调用企业微信审批流程的接口 具体代码在最下面前半部分主要讲配置 第一步获取企业的获取access_token 参数: 1. corpid 公司的id 2. corpsecret 公司用的s ...

最新文章

  1. html固定广告,css如何实现广告固定动态漂浮
  2. mysql 物理备份工具_mysql物理备份工具Xtrabackup安装配置
  3. .NET Core 中的路径问题
  4. MySql远程连接设置
  5. 高斯投影正反算C语言程序代码,高斯投影正反算-对网络上面流行的C代码的修改(已正确运行)...
  6. php扩展的xdebug,安装php扩展:Xdebug
  7. gephi java教程_Gephi的使用--以社交网络图为例
  8. 数据结构与算法--简单栈实现及其应用
  9. 支持向量机python代码_Python中的支持向量机SVM的使用(有实例)
  10. 设计模式---桥接模式
  11. Kindle Fire调试,以及它没有Orientation Sensor
  12. linux mysql端口被占用解决方法_3306端口被占用导致MySQL无法启动
  13. Java动态代理的实现和源码分析
  14. 深刻理解原型图设计的核心
  15. Python常用库大全
  16. 神威太湖之光之超级计算机,中国研发的“神威·太湖之光”,超级计算机能给我们带来什么?...
  17. 【网络模拟】网络环境模拟搭建
  18. android qq 邮箱格式,安全邮箱我输入的是qq邮箱为什么说邮箱格式 – 手机爱问
  19. win8下命令行解决Socket Error10048:Adress already in use问题
  20. 云呐:资产密集型企业固定资产管理系统的基本功能特点

热门文章

  1. 使用kali进行局域网ARP欺骗攻击与监听
  2. asp租用和saas租用_最佳下载,租用和购买有声读物的网站
  3. MAD-GAN: Multivariate Anomaly Detection for Time Series Data with Generative Adversarial Networks
  4. IIS 日志解析,增强 IIS 服务器安全性
  5. 台式电脑组装机相关知识之固态硬盘(SSD)篇
  6. matlab eig 维数,matlab eig函数
  7. UVCCamera实现USB摄像头Android的APP
  8. 【设计模式-工厂方法】想象力和创造力:你考虑过自动化实现工厂吗?
  9. 百度地图开发自定义信息窗口openInfoWindow样式的解决方案
  10. c#与html的区别,C# 静态变量与普通变量的区别