(4) 如何將SAP C4C主數據變化推送給微信公眾號
(5) 如何將SAP UI5應用嵌入到微信公眾號菜單中
(6) 如何通過OAuth2獲取微信用戶信息並顯示在SAP UI5應用中
(7) 使用Redis存儲微信用戶和公眾號的對話記錄
(8) 微信公眾號的地圖集成
(9) 如何將微信用戶發送到微信公眾號的消息保存到SAP C4C系統
(10) 如何在SAP C4C系統直接回復消息給微信公眾號的訂閱者
最近有不少朋友在微信上向我諮詢SAP系統和微信公眾號集成的問題,因此我把當時寫的英文版翻譯成中文,重新發布在我的公眾號上。
需要注意的是,時隔三年,微信公眾號的開發流程可能有所變化,請大家自行鑑別。和微信公眾號集成的系統,我三年前選擇的是SAP Cloud for Customer.
始終牢記我們這個系列的目標是學會如何用微信公眾號同SAP系統(SAP Cloud for Customer,以下簡稱C4C)集成。要實現這個目標,就得通過微信公眾號消費SAP C4C的OData API.
作為學習的第一步,我們首先學習如何在微信公眾號調用普通的API,而非SAP C4C OData API.
假設這樣一個簡單的場景:用戶關注微信公眾號之後,通過微信app給公眾號發送一些文字信息。公眾號收到這些文字信息,會轉發給我們在本系列第一篇文章 微信開發環境的搭建 裡提到的微信消息伺服器。此時微信消息伺服器接收到轉發過來的文字信息後,調用一些具有人工智慧的API,將API的響應通過微信app回復給用戶。
綁定了微信消息伺服器的微信公眾號,在這個場景裡扮演的其實就是一個簡單的聊天機器人的角色。用戶和微信公眾號通過一問一答的方式進行交互。
Jerry還記得上大學的時候,學習《Unix網絡編程》這門專業課,一個練習就是,通過套接字自行實現一對客戶端和伺服器,客戶端發送一個字符串給伺服器,伺服器接收後原封不動地將其返回,即所謂的Echo Server.
在動手實現微信聊天機器人之前,我們先降低難度,實現一個簡單的微信echo服務,即無論用戶發送任何信息給公眾號,都會收到信息本身,再加上"Add by Jerry"的前綴。
本文用到的項目完整原始碼,在我的Github能夠下載。
https://github.com/wangzixi-diablo/wechat-sap-integration
首先在server.js裡,利用nodejs express庫啟動一個web伺服器:
上圖第二行routesEngine的實現,位於index.js裡。微信app收到用戶通過微信app發送的文本消息時,會通過一個HTTP POST請求轉發給微信消息伺服器。微信消息伺服器接收到該請求後,調用第五行的echoService處理:
echoService的實現位於文件echo.js中:首先從變量req包含的HTTP請求中,將用戶輸入的文本信息解析出來(第11行),然後加上"Add by Jerry: "的前綴,並將結果存儲在變量content裡(第13行), 最後調用自己開發的工具方法replyMessage,將加上前綴的文本信息返回給用戶。
上圖第15行的replyMessage工具方法,需要從微信app轉發給微信消息伺服器的HTTP POST請求裡, 解析出發送消息的微信用戶id,然後再將拼接了"Add by Jerry: "前綴的內容發送給該id標識的微信用戶。
replyMessage的實現位於replyMessage.js中:
https://github.com/wangzixi-diablo/wechat-sap-integration/blob/main/jerryapp/tool/replyMessage.js
有了Echo Service的實現經驗之後,再實現微信聊天機器人就沒有什麼難度了。
只需要把index.js裡接收到HTTP Post請求之後的操作,從調用echoService改成調用新的實現,tuningService即可。
調用圖靈API的tuningService函數的實現原始碼:
https://github.com/wangzixi-diablo/wechat-sap-integration/blob/main/jerryapp/service/tuning.js
我2017年的時候使用的圖靈API是如下網站提供的:
http://www.tulin123.com/
申請一個API key, 粘貼到下圖第6行的url裡:
將用戶輸入的文本信息解析出來,存儲到第20行的body變量裡,使用encodeURI處理之後,直接拼接到圖靈API url尾部,然後第27行使用request函數調用圖靈API. 在匿名回調函數裡獲得API的響應,最後調用工具方法replyMessage將響應通過微信消息伺服器發送給微信app.
本系列的下一篇文章,我們會真正開始和SAP系統的集成:每當新的微信用戶關注微信公眾號時,我們會自動為該微信用戶在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系統直接回復消息給微信公眾號的訂閱者