java欢迎词,企业微信API:成员个性化新客户欢迎语的nodejs实现
目标:
在企业微信上只能设置统一的新客户欢迎语,因此我们通过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实现相关推荐
- 【Linux学习】如何编写Shell脚本调用企业微信api来发消息给企业微信成员?
一.前言 最近通过python实现了发送消息给企业微信的功能,参考链接: [Jenkins学习 ]如何编写Python脚本来调用企业微信的api通知企业微信成员关于Jenkins的编译结果? http ...
- 基于企业微信api 开发 消息推送提醒 Python与Java
1.关于脚本 身为一个程序猿,不管你从事什么开发,学会使用一门脚本语言可以提高你的开发效率.我目前使用的是Python,因为它支持的库非常多,拿来即用.在这个快节奏的开发,是非常有效率的,所以我非常强 ...
- 基于Java实现企业微信群聊机器人-文件上传+消息推送(保证可用)
基于Java实现企业微信群聊机器人-文件上传+消息推送 1.pom.xml(注意版本尽量保持一致) 2.文件工具类 3.企业微信请求类 4.企业微信响应类 5.发送方法 6.企业微信机器人创建和配置 ...
- insert时调用本身字段_python3调用企业微信api!开发一款属于自己的企业微信
python3调用企业微信api 最后更新时间:2020/5/11 前段时间,我将企业微信官方提供的python接口代码的部分功能修改成了python3的,并且自己也使用并测试过部分功能: 因为并没有 ...
- python企业微信特定用户_python3调用企业微信api!开发一款属于自己的企业微信...
python3调用企业微信api 最后更新时间:2020/5/11 前段时间,我将企业微信官方提供的python接口代码的部分功能修改成了python3的,并且自己也使用并测试过部分功能: 因为并没有 ...
- python3调用企业微信api!开发一款属于自己的企业微信
python3调用企业微信api 最后更新时间:2020/5/11 前段时间,我将企业微信官方提供的python接口代码的部分功能修改成了python3的,并且自己也使用并测试过部分功能: 因为并没有 ...
- Node.JS调用企业微信API:生成渠道二维码
目标: 通过API设置成员的"联系我"方式生成渠道标识二维码,实现标记客户扫码渠道,方便个渠道客户信息统计等. 实现环境: 白码低代码平台(该平台提供企业微信API,可直接调用,减 ...
- java 获取企业微信access_token调用接口
企业微信api地址 : https://work.weixin.qq.com/api/doc/90000/90135/90664 1. 登录企业微信 https://work.weixin.qq.co ...
- 关于JAVA调用企业微信审批流程的接口
关于JAVA调用企业微信审批流程的接口 具体代码在最下面前半部分主要讲配置 第一步获取企业的获取access_token 参数: 1. corpid 公司的id 2. corpsecret 公司用的s ...
最新文章
- 自由的胜利:多元化智能平台BCH
- centos7 系统备份
- siteMap与站点导航
- centos08-Linux服务器上发布java项目
- (转)MVC模式参数传递的探究
- 【VC++技术杂谈005】如何与程控仪器通过GPIB接口进行通信
- jdbc postgresql mysql_mysql改为postgresql 语法常见问题
- FISCO BCOS 零知识证明 Fiat-Shamir 实例源码
- 代码开源许可证 区别 Apache MIT GPL
- 【转】ACM比赛经验
- 高通携手贵州华芯通:成功源于创新 大数据前景美妙
- 【转载】软件爱好者必备的优秀软件网站分享收藏
- Unable to find libthread_db matching inferior‘s thread library, thread debugging will not be availab
- pytorch——卷积神经网络
- 关于Matplotlib实验中出现NameError: name ‘rgb2gray‘ is not defined的解决
- 数字音乐生财:月入10万不是梦
- 新书《Android安全技术揭秘与防范》终于出版了
- 从数据库取String的值存放到Map中 按汉字首字母排序并输出
- keil 报错解决 Loading PDSC Debug Description failed forSTMicroelectronics STM32xxxx
- 企业邮箱一年多少钱,邮箱注册教程,企业oa平台
热门文章
- SSRF in PHP
- Node.js 的下载与安装记录
- 因式分解理论基础(2)整除关系与带余除法与综合除法
- 2023年度“楚怡杯”湖南省职业院校技能竞赛隆回县职业中等专业学校赛点工作方案赛项:中职组信息技术类网络安全赛项
- html虚拟打印转为pdf,Doro PDF Writer 虚拟打印机 – 可将任何格式图片/文档/文件转换成 PDF格式...
- APP“IP摄像头” 与OpenCV视频流读取
- [渝粤教育] 西华大学 模拟电子技术基础 参考 资料
- 4827: [Hnoi2017]礼物
- Udacity调试课笔记之简化的哲学思考
- AMEYA360:芯片的四大分类