querylist采集微信公眾號文章(如何用微信公眾號同SAPC4C的ODataAPI.?)
優(yōu)采云 發(fā)布時(shí)間: 2022-03-25 07:24querylist采集微信公眾號文章(如何用微信公眾號同SAPC4C的ODataAPI.?)
最近有很多朋友問(wèn)我微信上SAP系統和微信公眾號的整合,所以我把當時(shí)寫(xiě)的英文版翻譯成中文重新發(fā)布到我的公眾號上。
需要注意的是,三年后,微信公眾號的開(kāi)發(fā)流程可能會(huì )發(fā)生變化,請自行識別。系統集成了微信公眾號,三年前我選擇了SAP Cloud for Customer。
永遠記住,我們系列的目標是學(xué)習如何使用微信公眾號與SAP系統(SAP Cloud for Customer,以下簡(jiǎn)稱(chēng)C4C)集成。要實(shí)現這個(gè)目標,需要通過(guò)微信公眾號使用SAP C4C的OData API。
作為學(xué)習的第一步,我們首先學(xué)習如何調用微信公眾號上的通用API,而不是SAP C4C OData API。
假設這樣一個(gè)簡(jiǎn)單的場(chǎng)景:用戶(hù)關(guān)注微信公眾號后,通過(guò)微信應用向公眾號發(fā)送了一些短信。公眾號收到這些短信后,會(huì )轉發(fā)到本系列第一篇文章中提到的微信消息服務(wù)器文章微信開(kāi)發(fā)環(huán)境搭建。此時(shí),微信消息服務(wù)器收到轉發(fā)的文本信息后,會(huì )調用一些帶有人工智能的API,并通過(guò)微信APP將API響應返回給用戶(hù)。
與微信消息服務(wù)器綁定的微信公眾號,在這個(gè)場(chǎng)景中實(shí)際上扮演了一個(gè)簡(jiǎn)單的聊天機器人的角色。用戶(hù)與微信公眾號通過(guò)問(wèn)答方式進(jìn)行互動(dòng)。
Jerry 還記得,他上大學(xué)的時(shí)候,上過(guò)專(zhuān)業(yè)課《Unix 網(wǎng)絡(luò )編程》。其中一個(gè)練習是通過(guò)套接字實(shí)現一對客戶(hù)端和服務(wù)器??蛻?hù)端向服務(wù)器發(fā)送了一個(gè)字符串,服務(wù)器完整地接收到了它。返回它,即所謂的 Echo Server。
在實(shí)現微信聊天機器人之前,我們先降低難度,實(shí)現一個(gè)簡(jiǎn)單的微信回顯服務(wù),即無(wú)論用戶(hù)向公眾號發(fā)送什么信息,都會(huì )收到信息本身,加上前綴“Add by Jerry”。
本文使用的項目的完整源代碼可以從我的 Github 下載。
首先,在 server.js 中,使用 nodejs express 庫來(lái)啟動(dòng)一個(gè) web 服務(wù)器:
上圖第二行中routesEngine的實(shí)現位于index.js中。當微信app收到用戶(hù)通過(guò)微信app發(fā)送的短信時(shí),會(huì )通過(guò)HTTP POST請求轉發(fā)給微信消息服務(wù)器。微信消息服務(wù)器收到請求后,調用第五行的echoService處理:
echoService 的實(shí)現位于文件 echo.js 中:首先從變量 req(第 11 行)中收錄的 HTTP 請求中解析用戶(hù)輸入的文本信息,然后添加前綴“Add by Jerry:”,然后存儲結果。在變量content(第13行)中,最后調用自研工具方法replyMessage,將前綴文本信息返回給用戶(hù)。
上圖第15行replyMessage工具方法需要在微信app轉發(fā)給微信消息服務(wù)器的HTTP POST請求中解析出發(fā)送消息的微信用戶(hù)id,然后發(fā)送以“Add by Jerry”為前綴的內容:" 發(fā)給這個(gè)id標識的微信用戶(hù)。
replyMessage 的實(shí)現在replyMessage.js 中:
有了 Echo Service 的實(shí)現經(jīng)驗,實(shí)現微信聊天機器人沒(méi)有難度。
只需將 index.js 中接收到 HTTP Post 請求后的操作由調用 echoService 更改為調用新的實(shí)現,tuningService 即可。
調用圖靈API的tuningService函數的源碼可以在這里下載。
我在 2017 年使用的 Turing API 由以下 網(wǎng)站 提供:
申請API key,粘貼到下圖第6行的url中:
解析用戶(hù)輸入的文本信息,在第20行存儲到body變量中,使用encodeURI處理,直接拼接到圖靈API url的末尾,然后使用request函數調用圖靈API第27行,在匿名回調函數中獲取API的響應,最后調用工具方法replyMessage,通過(guò)微信消息服務(wù)器將響應發(fā)送給微信app。