天天看點

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

本系列的英文版Jerry寫作于2017年,這個教程總共包含十篇文章,發表在SAP社群上。

最近有不少朋友在微信上向我咨詢SAP系統和微信公衆号內建的問題,是以我把當時寫的英文版翻譯成中文,重新釋出在我的公衆号上。

需要注意的是,時隔三年,微信公衆号的開發流程可能有所變化,請大家自行鑒别。和微信公衆号內建的系統,我三年前選擇的是SAP Cloud for Customer.

系列目錄

(1) 微信開發環境的搭建

(2) 如何通過微信公衆号消費API

(3) 微信使用者關注公衆号之後,自動在SAP C4C系統建立客戶主資料

(4) 如何将SAP C4C主資料變化推送給微信公衆号

(5) 如何将SAP UI5應用嵌入到微信公衆号菜單中

(6) 如何通過OAuth2擷取微信使用者資訊并顯示在SAP UI5應用中

(7) 使用Redis存儲微信使用者和公衆号的對話記錄

(8) 100行代碼在微信公衆号裡內建地圖搜尋功能

(9) 如何将微信使用者發送到微信公衆号的消息儲存到SAP C4C系統(本文)

(10) 如何在SAP C4C系統直接回複消息給微信公衆号的訂閱者

本文實作的場景是:

微信使用者點選“關注”按鈕,關注了某微信公衆号之後:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

在SAP C4C系統自動生成了下列資料:

(1) 一個代表該微信使用者的individual customer主資料

(2) 一個綁定到customer主資料的C4C Social Media User Profile

這兩條資料的ID,會通過微信消息推送回微信使用者的微信app上:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統
SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

這些成功建立的C4C資料的ID,在微信消息伺服器,即nodejs應用的控制台上也能觀察到:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

根據傳回給微信使用者的客戶主資料ID,到C4C系統找到該主資料,在其Social Profiles面闆裡,能看到該Social Profile的管道類型(Channel Type)為自定義的Jerry’s Wechat Channel:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

一旦微信使用者給微信公衆号發送文本資訊,該文本資訊通過微信公衆号的消息伺服器作為中轉,調用C4C API,在C4C系統建立一條内容為該文本資訊的Social Media Message資料。

下圖是一個例子:我發送一條"Hello C4C Agent …"的文本資訊,在SAP C4C系統建立的Social Media Message ID為59610:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統
SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

根據ID在C4C系統找到這條Social Media Message:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

同時,C4C系統還會基于建立的Social Media Message,自動生成一條新的Service Ticket,這是C4C系統的标準功能,無需額外程式設計實作。這個标準功能也是本系列最後一篇文章,即如何在SAP C4C系統直接回複消息給微信公衆号的訂閱者 工作的前提條件。

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

下面是這個場景具體的實作步驟。

打開C4C配置的Activity List:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

建立一個自定義Channel:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

記下這個建立Channel的Type Code:905

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

基于上圖的Channel 905建立一個新的Social Media Channel,ID為ZJERRYWC:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

在我這個Github倉庫下有個service檔案夾,包含了三個JavaScript檔案:

(1) createAccountInC4C.js:負責微信使用者關注微信公衆号之後, 調用C4C OData API建立individual customer.

(2) createSocialMediaProfile.js:調用API建立C4C Social Media Profile.

(3) bindSocialProfileWithIndividualCustomer.js: 負責将前兩步建立的C4C資料綁定起來。

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

在第二步建立Social Media Profile時,調用C4C API傳入的輸入負載裡,将ChannelCode寫死成之前在C4C系統裡建立的自定義Channel的Type Code:905

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

在createAccountInC4C.js的實作裡,這三步按順序實作在函數createAccount裡:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

在微信消息伺服器的事件處理函數裡,一旦接收到“關注”事件( 事件類型值:subscribe)時,調用createAccount函數,完成上述三個步驟:

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

微信使用者關注了公衆号之後,發送文本消息給該公衆号,微信消息伺服器調用createSocialMediaActivity.js裡的函數createSocialMessage, 在C4C系統裡建立一條新的Social Media Message.

在unittest檔案夾下有一個單元測試用例,展示了該函數的用法。

五個輸入參數:

(1) o0KlM1i2_4-zHRm-IWGRlA1Cjc:發送消息給微信公衆号的微信使用者ID

(2) 1003: 待建立的Social Media Message ID,傳一個非空值即可,因為C4C系統會根據自己的Number Range生成該ID,并傳回給API調用者。

(3) 6066: 目前微信使用者在C4C系統裡對應的Social Media User Profile ID,該ID是在微信使用者關注公衆号時,在C4C系統生成并傳回的。

(4) ZJERRYWC: 之前已經介紹過,在C4C系統手動建立的自定義Channel ID.

(5) “Hello C4C Agent….”: 微信使用者發送給微信公衆号的文本資訊。

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

使用函數createSocialMessage,在C4C系統建立以微信使用者發送給微信公衆号的文本資訊作為内容的Social Media Message,建立成功後傳回其ID給微信使用者:59160.

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統
SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

根據ID 59160到C4C系統查詢到該Social Media Message,檢查其Message字段的值,同微信使用者發送給微信公衆号的文本資訊完全一緻。

SAP系統和微信內建的系列教程之九:如何将微信使用者發送給微信公衆号的内容自動轉存到SAP C4C系統

系列的最後一篇文章,我們将學習如何直接在C4C系統,回複文本消息給微信使用者。感謝閱讀。

繼續閱讀