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

目标:

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

实现环境:

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

平台语言:

使用node.js开发

准备工作:

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

请结合以下内容阅读:

实现步骤:

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

b19dc205370e7a849e975bc52b175945.png

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

配置API参数:

48a0c3206a613a7fb4acd2be9489d6f7.png

代码:

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、创建新建欢迎语功能(根据需求自行构建),并调用“上传临时素材”云函数:

d9344c99279b1bce4c32748f0cbd2a48.png

0437db109ce1ea597c4f9f1636e0700c.png

b470282edb1b5791992401e0408a2bd0.png

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

配置:

c01102fb5045edf2b5170b03bc36dbb5.png

代码:

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

}

)

}

}

功能:

b971dffbf9dfdb1453937cdc51050ecc.png

5a05efd48184efcc20c8fa6020afb45f.png

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

}

}

}

}

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用 Node.js 实现微信推送功能,你可以使用微信公众平台提供的开发接口来实现。下面是一个基本的实现步骤: 1. 注册微信公众号:前往微信公众平台注册一个公众号,并获取到对应的 AppID 和 AppSecret。 2. 配置服务器地址:在微信公众平台中,配置服务器地址,将接收微信消息和事件的 URL 地址指向你的 Node.js 服务器。 3. 搭建 Node.js 服务器:使用 Express、Koa 或其他 Node.js 框架搭建一个服务器。 4. 实现消息处理逻辑:在服务器中编写处理微信消息和事件的逻辑,根据接收到的消息类型进行相应的处理,例如关注事件、文本消息等。 5. 验证服务器有效性:在服务器中实现微信服务器验证逻辑,验证服务器的有效性,确保可以接收微信发送的消息和事件。 6. 实现消息回复逻辑:根据接收到的消息类型,编写相应的回复逻辑,生成对应的 XML 格式的回复消息,并返回给微信服务器。 7. 调用微信接口:使用 Node.js 的 HTTP 请求库(如 axios、request)调用微信公众平台提供的接口,例如获取 access_token、发送模板消息等。 8. 启动服务器:运行你的 Node.js 服务器,确保服务器可以接收和处理来自微信服务器的请求。 这只是一个简单的示例,具体的实现方式和逻辑根据你的需求和业务场景可能会有所不同。请参考微信公众平台的开发文档和示例代码,以便更好地理解和使用 Node.js 实现微信推送功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值