本系列的英文版Jerry寫做於2017年,這個教程總共包含十篇文章,發表在SAP社區上。node
(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系統直接回復消息給微信公衆號的訂閱者git
最近有很多朋友在微信上向我諮詢SAP系統和微信公衆號集成的問題,所以我把當時寫的英文版翻譯成中文,從新發布在個人公衆號上。github
須要注意的是,時隔三年,微信公衆號的開發流程可能有所變化,請你們自行鑑別。和微信公衆號集成的系統,我三年前選擇的是SAP Cloud for Customer.web
始終牢記咱們這個系列的目標是學會如何用微信公衆號同SAP系統(SAP Cloud for Customer,如下簡稱C4C)集成。要實現這個目標,就得經過微信公衆號消費SAP C4C的OData API.express
做爲學習的第一步,咱們首先學習如何在微信公衆號調用普通的API,而非SAP C4C OData API.編程
假設這樣一個簡單的場景:用戶關注微信公衆號以後,經過微信app給公衆號發送一些文字信息。公衆號收到這些文字信息,會轉發給咱們在本系列第一篇文章 微信開發環境的搭建 裏提到的微信消息服務器。此時微信消息服務器接收到轉發過來的文字信息後,調用一些具備人工智能的API,將API的響應經過微信app回覆給用戶。服務器
綁定了微信消息服務器的微信公衆號,在這個場景裏扮演的其實就是一個簡單的聊天機器人的角色。用戶和微信公衆號經過一問一答的方式進行交互。微信
Jerry還記得上大學的時候,學習《Unix網絡編程》這門專業課,一個練習就是,經過套接字自行實現一對客戶端和服務器,客戶端發送一個字符串給服務器,服務器接收後原封不動地將其返回,即所謂的Echo Server.網絡
在動手實現微信聊天機器人以前,咱們先下降難度,實現一個簡單的微信echo服務,即不管用戶發送任何信息給公衆號,都會收到信息自己,再加上"Add by Jerry"的前綴。微信開發
本文用到的項目完整源代碼,在個人Github可以下載。
首先在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中:
有了Echo Service的實現經驗以後,再實現微信聊天機器人就沒有什麼難度了。
只須要把index.js裏接收到HTTP Post請求以後的操做,從調用echoService改爲調用新的實現,tuningService便可。
調用圖靈API的tuningService函數的實現源代碼在這裏下載。
我2017年的時候使用的圖靈API是以下網站提供的:
申請一個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系統直接回復消息給微信公衆號的訂閱者
更多Jerry的原創文章,盡在:"汪子熙":