公众号向特定用户主动推送消息_SAP系统和微信集成的系列教程之四:如何将SAP C4C主数据变化推送给微信公众号的关注者...

6e793ece0a5f2c326daaa35b584a024c.png

这是Jerry 2020年的第84篇文章,也是汪子熙公众号总共第266篇原创文章。

本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上。

系列目录

(1) 微信开发环境的搭建

(2) 如何通过微信公众号消费API

(3) 微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据

(4) 如何将SAP C4C主数据变化推送给微信公众号(本文)

(5) 如何将SAP UI5应用嵌入到微信公众号菜单中

(6) 如何通过OAuth2获取微信用户信息并显示在SAP UI5应用中

(7) 使用Redis存储微信用户和公众号的对话记录

(8) 微信公众号的地图集成

(9) 如何将微信用户发送到微信公众号的消息保存到SAP C4C系统

(10) 如何在SAP C4C系统直接回复消息给微信公众号的订阅者

最近有不少朋友在微信上向我咨询SAP系统和微信公众号集成的问题,因此我把当时写的英文版翻译成中文,重新发布在我的公众号上。

需要注意的是,时隔三年,微信公众号的开发流程可能有所变化,请大家自行鉴别。和微信公众号集成的系统,我三年前选择的是SAP Cloud for Customer.

本文实现的场景是:我申请了一个用于测试的微信公众号,用户点击“关注”按钮:

d027be4c72bc93fa6078f2b537a9d040.png

在微信app上收到了一条微信消息服务器发送的提示关注成功的自定义消息:

4a65548db48102b4f48a2dc13f224bb7.png

同时,微信消息服务器调用SAP Cloud for Customer(以下简称SAP C4C) OData API,在C4C系统创建了一条客户主数据,类型为Individual Customer. 成功创建的C4C客户主数据id,1000441,也一并发送到微信app上:

e404521423178ac9a10602a956285b3d.png

根据这个id,即可在C4C系统查询到微信用户关注公众号之后自动生成的客户主数据:

a324946d40e695e96544506293fddb06.png

下面是这个场景的实现细节。在动手编码之前,请确保你已经完成了这个系列之前两篇文章里提到的步骤:

(1) 微信开发环境的搭建 (2) 如何通过微信公众号消费API

具体实现步骤

我们需要在nodejs实现的微信消息服务器里调用SAP C4C OData API,因此需要在nodejs应用里指定C4C OData API的endpoint. 创建一个config.js文件,实现config module:

5bac4952b0700fdce51b147a4f7c1101.png

第二行创建C4C客户主数据的OData url,可以在SAP官方github的C4C OData开发指南仓库里找到,链接如下。

c633255c429e047b088556cc5bb392ae.png

而第五行的accessToken作用是什么呢?

be20b4a0ad8cff781d006ffbca9c4f95.png

回忆前一篇文章 SAP系统和微信集成的系列教程之二:如何通过微信公众号消费API 描述的场景,当时用户在微信app里给微信公众号发送消息,然后以同步的方式收到回复。

而本文试图实现的场景,微信用户关注公众号之后,触发SAP C4C客户主数据的创建,这个创建通过C4C OData API完成,是一个异步操作。客户主数据创建成功后,微信消息服务器会主动给微信用户推送一条创建成功的消息。

这个主动推送消息的行为,必须满足两个前提条件才能成功:

(1) 推送消息的接收方,必须已经关注了微信消息服务器绑定的微信公众号。 (2) 调用微信推送消息的API时,必须使用基于微信消息服务器的app id和app secret换取的Access Token.

为了简单起见,我事先调用换取Access Token的微信API,传入app id和app secret,拿到token,然后硬编码到config.js里。当然因为该token默认2小时后就会过期,所以也可以采用编程的方式,调用微信API获取,实现代码在这个链接里。

当微信用户点击“关注”按钮关注公众号之后,微信消息服务器会收到一个HTTP POST请求,event key为"subscribe". 微信消息服务器从请求里解析出微信用户的Wechat ID.

代码实现如下:

30408ece72bad30edfd92170ff5b7ac5.png

其中第18行,如果event变量值为subscribe,说明用户点击了“关注”按钮,进入对应的if分支处理。

第19行的replyxml,包含了一条硬编码的消息,即用户关注公众号之后,在微信app里收到的欢迎消息。

第20行的变量fromUserName,储存的是包含在HTTP POST请求里的关注者Wechat ID. 后续微信消息服务器主动给关注者推送C4C客户主数据创建成功的消息时,调用微信消息推送API,会用到这个Wechat ID.

第21行的createAccount方法,调用C4C OData API创建客户主数据。

下面是createAccount的实现源代码,在这个链接里能找到。

87729c124361d3eea04e12d5250021cb.png

因为涉及到C4C数据的创建操作,需要使用HTTP POST,因此在真正调用C4C客户主数据创建API(上图第64行)之前,需要先调另一个API,拿到XSRF token(上图第62行的getToken).

我们需要建立一个简单的映射机制,把微信关注者和C4C系统里创建的客户主数据关联起来。这里我采取的逻辑是,把C4C创建的客户的FirstName字段硬编码成Wechat,而LastName存储成微信关注者的Wechat ID:

c3e80592789c0502a999b79e501ab184.png

从下面C4C系统截图,能看到公众号关注者的Wechat ID已经存储到创建的客户主数据的Name字段上了。

a324946d40e695e96544506293fddb06.png

C4C客户主数据创建成功之后,微信消息服务器调用工具方法postWCMessage, 主动推送一条创建成功的消息给点击了“关注”按钮的微信用户:

e72ebc831f4f99321bffb7536fd40ef9.png

函数postWCMessage的实现源代码链接.

主动推送消息给微信用户的API可以在Postman等工具里方便地进行测试:

c6256632760b06856453a602dcfa2ed5.png

消息推送成功后,被推送消息的用户在微信app上收到的消息如图:

4f6b2595acec27be4b62c471acd0ca6b.png

本系列的第四篇文章,我们会实现另一个场景:当SAP C4C系统的客户主数据发生变化之后,主动推送消息给关注了微信公众号的微信用户。

感谢阅读。

系列目录

(1) 微信开发环境的搭建

(2) 如何通过微信公众号消费API

(3) 微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据

(4) 如何将SAP C4C主数据变化推送给微信公众号

(5) 如何将SAP UI5应用嵌入到微信公众号菜单中

(6) 如何通过OAuth2获取微信用户信息并显示在SAP UI5应用中

(7) 使用Redis存储微信用户和公众号的对话记录

(8) 微信公众号的地图集成

(9) 如何将微信用户发送到微信公众号的消息保存到SAP C4C系统

(10) 如何在SAP C4C系统直接回复消息给微信公众号的订阅者

更多Jerry的原创文章,尽在:"汪子熙":

7e8938a7ec85876219d3aa5898810513.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值