SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据
這是Jerry 2020年的第84篇文章,也是汪子熙公眾號(hào)總共第266篇原創(chuàng)文章。
本系列的英文版Jerry寫作于2017年,這個(gè)教程總共包含十篇文章,發(fā)表在SAP社區(qū)上。
系列目錄
(1)?微信開發(fā)環(huán)境的搭建
(2)?如何通過微信公眾號(hào)消費(fèi)API
(3)?微信用戶關(guān)注公眾號(hào)之后,自動(dòng)在SAP C4C系統(tǒng)創(chuàng)建客戶主數(shù)據(jù)
(4) 如何將SAP C4C主數(shù)據(jù)變化推送給微信公眾號(hào)(本文)
(5) 如何將SAP UI5應(yīng)用嵌入到微信公眾號(hào)菜單中
(6) 如何通過OAuth2獲取微信用戶信息并顯示在SAP UI5應(yīng)用中
(7) 使用Redis存儲(chǔ)微信用戶和公眾號(hào)的對話記錄
(8) 微信公眾號(hào)的地圖集成
(9) 如何將微信用戶發(fā)送到微信公眾號(hào)的消息保存到SAP C4C系統(tǒng)
(10) 如何在SAP C4C系統(tǒng)直接回復(fù)消息給微信公眾號(hào)的訂閱者
最近有不少朋友在微信上向我咨詢SAP系統(tǒng)和微信公眾號(hào)集成的問題,因此我把當(dāng)時(shí)寫的英文版翻譯成中文,重新發(fā)布在我的公眾號(hào)上。
需要注意的是,時(shí)隔三年,微信公眾號(hào)的開發(fā)流程可能有所變化,請大家自行鑒別。和微信公眾號(hào)集成的系統(tǒng),我三年前選擇的是SAP Cloud for Customer.
本文實(shí)現(xiàn)的場景是:我申請了一個(gè)用于測試的微信公眾號(hào),用戶點(diǎn)擊“關(guān)注”按鈕:
在微信app上收到了一條微信消息服務(wù)器發(fā)送的提示關(guān)注成功的自定義消息:
同時(shí),微信消息服務(wù)器調(diào)用SAP Cloud for Customer(以下簡稱SAP C4C) OData API,在C4C系統(tǒng)創(chuàng)建了一條客戶主數(shù)據(jù),類型為Individual Customer. 成功創(chuàng)建的C4C客戶主數(shù)據(jù)id,1000441,也一并發(fā)送到微信app上:
根據(jù)這個(gè)id,即可在C4C系統(tǒng)查詢到微信用戶關(guān)注公眾號(hào)之后自動(dòng)生成的客戶主數(shù)據(jù):
下面是這個(gè)場景的實(shí)現(xiàn)細(xì)節(jié)。在動(dòng)手編碼之前,請確保你已經(jīng)完成了這個(gè)系列之前兩篇文章里提到的步驟:
(1) 微信開發(fā)環(huán)境的搭建
(2) 如何通過微信公眾號(hào)消費(fèi)API
具體實(shí)現(xiàn)步驟
我們需要在nodejs實(shí)現(xiàn)的微信消息服務(wù)器里調(diào)用SAP C4C OData API,因此需要在nodejs應(yīng)用里指定C4C OData API的endpoint. 創(chuàng)建一個(gè)config.js文件,實(shí)現(xiàn)config module:
第二行創(chuàng)建C4C客戶主數(shù)據(jù)的OData url,可以在SAP官方github的C4C OData開發(fā)指南倉庫里找到,鏈接如下。
而第五行的accessToken作用是什么呢?
回憶前一篇文章 SAP系統(tǒng)和微信集成的系列教程之二:如何通過微信公眾號(hào)消費(fèi)API 描述的場景,當(dāng)時(shí)用戶在微信app里給微信公眾號(hào)發(fā)送消息,然后以同步的方式收到回復(fù)。
而本文試圖實(shí)現(xiàn)的場景,微信用戶關(guān)注公眾號(hào)之后,觸發(fā)SAP C4C客戶主數(shù)據(jù)的創(chuàng)建,這個(gè)創(chuàng)建通過C4C OData API完成,是一個(gè)異步操作。客戶主數(shù)據(jù)創(chuàng)建成功后,微信消息服務(wù)器會(huì)主動(dòng)給微信用戶推送一條創(chuàng)建成功的消息。
這個(gè)主動(dòng)推送消息的行為,必須滿足兩個(gè)前提條件才能成功:
(1) 推送消息的接收方,必須已經(jīng)關(guān)注了微信消息服務(wù)器綁定的微信公眾號(hào)。
(2) 調(diào)用微信推送消息的API時(shí),必須使用基于微信消息服務(wù)器的app id和app secret換取的Access Token.
為了簡單起見,我事先調(diào)用換取Access Token的微信API,傳入app id和app secret,拿到token,然后硬編碼到config.js里。當(dāng)然因?yàn)樵搕oken默認(rèn)2小時(shí)后就會(huì)過期,所以也可以采用編程的方式,調(diào)用微信API獲取,實(shí)現(xiàn)代碼在這個(gè)鏈接里。
當(dāng)微信用戶點(diǎn)擊“關(guān)注”按鈕關(guān)注公眾號(hào)之后,微信消息服務(wù)器會(huì)收到一個(gè)HTTP POST請求,event key為"subscribe". 微信消息服務(wù)器從請求里解析出微信用戶的Wechat ID.
代碼實(shí)現(xiàn)如下:
其中第18行,如果event變量值為subscribe,說明用戶點(diǎn)擊了“關(guān)注”按鈕,進(jìn)入對應(yīng)的if分支處理。
第19行的replyxml,包含了一條硬編碼的消息,即用戶關(guān)注公眾號(hào)之后,在微信app里收到的歡迎消息。
第20行的變量fromUserName,儲(chǔ)存的是包含在HTTP POST請求里的關(guān)注者Wechat ID. 后續(xù)微信消息服務(wù)器主動(dòng)給關(guān)注者推送C4C客戶主數(shù)據(jù)創(chuàng)建成功的消息時(shí),調(diào)用微信消息推送API,會(huì)用到這個(gè)Wechat ID.
第21行的createAccount方法,調(diào)用C4C OData API創(chuàng)建客戶主數(shù)據(jù)。
下面是createAccount的實(shí)現(xiàn)源代碼,在這個(gè)鏈接里能找到。
因?yàn)樯婕暗紺4C數(shù)據(jù)的創(chuàng)建操作,需要使用HTTP POST,因此在真正調(diào)用C4C客戶主數(shù)據(jù)創(chuàng)建API(上圖第64行)之前,需要先調(diào)另一個(gè)API,拿到XSRF token(上圖第62行的getToken).
我們需要建立一個(gè)簡單的映射機(jī)制,把微信關(guān)注者和C4C系統(tǒng)里創(chuàng)建的客戶主數(shù)據(jù)關(guān)聯(lián)起來。這里我采取的邏輯是,把C4C創(chuàng)建的客戶的FirstName字段硬編碼成Wechat,而LastName存儲(chǔ)成微信關(guān)注者的Wechat ID:
從下面C4C系統(tǒng)截圖,能看到公眾號(hào)關(guān)注者的Wechat ID已經(jīng)存儲(chǔ)到創(chuàng)建的客戶主數(shù)據(jù)的Name字段上了。
C4C客戶主數(shù)據(jù)創(chuàng)建成功之后,微信消息服務(wù)器調(diào)用工具方法postWCMessage, 主動(dòng)推送一條創(chuàng)建成功的消息給點(diǎn)擊了“關(guān)注”按鈕的微信用戶:
函數(shù)postWCMessage的實(shí)現(xiàn)源代碼鏈接.
主動(dòng)推送消息給微信用戶的API可以在Postman等工具里方便地進(jìn)行測試:
消息推送成功后,被推送消息的用戶在微信app上收到的消息如圖:
本系列的第四篇文章,我們會(huì)實(shí)現(xiàn)另一個(gè)場景:當(dāng)SAP C4C系統(tǒng)的客戶主數(shù)據(jù)發(fā)生變化之后,主動(dòng)推送消息給關(guān)注了微信公眾號(hào)的微信用戶。
感謝閱讀。
系列目錄
(1)?微信開發(fā)環(huán)境的搭建
(2)?如何通過微信公眾號(hào)消費(fèi)API
(3)?微信用戶關(guān)注公眾號(hào)之后,自動(dòng)在SAP C4C系統(tǒng)創(chuàng)建客戶主數(shù)據(jù)
(4) 如何將SAP C4C主數(shù)據(jù)變化推送給微信公眾號(hào)
(5) 如何將SAP UI5應(yīng)用嵌入到微信公眾號(hào)菜單中
(6) 如何通過OAuth2獲取微信用戶信息并顯示在SAP UI5應(yīng)用中
(7) 使用Redis存儲(chǔ)微信用戶和公眾號(hào)的對話記錄
(8) 微信公眾號(hào)的地圖集成
(9) 如何將微信用戶發(fā)送到微信公眾號(hào)的消息保存到SAP C4C系統(tǒng)
(10) 如何在SAP C4C系統(tǒng)直接回復(fù)消息給微信公眾號(hào)的訂閱者
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红警ol资源刷新时间(红警死了十年)
- 下一篇: 微软翻译有什么用?(什么是.NET)