文/俞凌峰
隨著新媒體的異軍突起,微信已經(jīng)越來越成為人們依賴的社交軟件,騰訊公司推出的微信訂閱號、服務(wù)號等也被越來越多的企業(yè)所采用。對媒體人而言,最常見的就是通過訂閱號每天更新發(fā)布新聞,隨著訂閱號的增多,問題也慢慢出現(xiàn)。一是發(fā)布渠道單一?,F(xiàn)代人關(guān)注的不僅僅是一個公眾號,如果僅通過官方的發(fā)布,而不主動推送到人們眼前,很多人不會主動去尋找推送的微信;二是轉(zhuǎn)發(fā)數(shù)低。轉(zhuǎn)發(fā)數(shù)低就不能通過以點帶面的方式形成傳播的擴散,無法有效提高閱讀量與點贊數(shù)。
基于這兩點問題,可以通過采用單位員工集中轉(zhuǎn)發(fā)的方式來提高微信圖文消息的轉(zhuǎn)發(fā)數(shù)與閱讀量,但如何發(fā)送需要轉(zhuǎn)發(fā)的微信消息(以下簡稱指令),并統(tǒng)計轉(zhuǎn)發(fā)的指令成了一個問題。為了解決這個問題,蕭報技術(shù)中心打算利用微信提供的公眾平臺開發(fā)工具SDK,設(shè)計一套系統(tǒng)來完成指令的推送與統(tǒng)計等問題。
運行至今,共計發(fā)出微信指令約700余條,審核通過數(shù)17000余條,有效地提高了微信的轉(zhuǎn)發(fā)數(shù)與閱讀量,也調(diào)動了員工的轉(zhuǎn)發(fā)積極性。另外,此系統(tǒng)也引起了行業(yè)同行的興趣,我們將之復制并進行了一定的推廣。
系統(tǒng)后臺首頁圖
微信端截圖
通過調(diào)研,系統(tǒng)的流程:首先建立一個微信服務(wù)號——“蕭報轉(zhuǎn)發(fā)”,讓單位的員工都關(guān)注這個服務(wù)號(需要有一道審核機制以排除非本單位人員),通過后臺系統(tǒng)推送消息給用戶,用戶接收到消息后轉(zhuǎn)發(fā)指令到朋友圈并截圖,然后通過服務(wù)號上傳截圖,審核通過后系統(tǒng)將推送一條審核通過的消息給用戶,并且系統(tǒng)需要對此做一個記錄,以方便統(tǒng)計。
通過分析,判斷轉(zhuǎn)發(fā)系統(tǒng)需要實現(xiàn)以下幾個模塊:
用戶管理:實現(xiàn)用戶的關(guān)注申請以及審核。
指令管理:實現(xiàn)指令的編輯、推送、審核。超時的指令不能審核通過。
部門管理:實現(xiàn)部門的建立以及用戶的分組。
統(tǒng)計分析:通過不同的方式,對用戶的完成數(shù)進行統(tǒng)計,獎優(yōu)罰劣。
權(quán)限設(shè)計:設(shè)計好權(quán)限的職責范圍,將部分權(quán)限發(fā)放給二級管理員進行管理。
系統(tǒng)選型上,手機端采用微信提供的weui框架,后臺通過目前比較成熟的Tomcat+Java+Bootstrap+Mysql搭配組合,完成后臺系統(tǒng)的UI以及邏輯和數(shù)據(jù)庫開發(fā),服務(wù)器環(huán)境采用安全穩(wěn)定的阿里云環(huán)境,實現(xiàn)云端部署。
通過對數(shù)據(jù)庫的分析,建立ER模型,把表拆分為in_customer表(用戶表)、in_datastatistic表(數(shù)據(jù)統(tǒng)計表),in_department表(部門分類表)、task表(任務(wù)表)等七張表,其中,特別需要注意的是:由于微信的昵稱現(xiàn)在引入了emoji表情,原先的存儲引擎utf8已經(jīng)不能滿足新類型的字符串,因此,數(shù)據(jù)庫以及表都需要將存儲引擎改為utf8mb4引擎,這個新的引擎支持emoji表情的存儲,適用范圍更廣泛。
其次,因為本套系統(tǒng)的指令發(fā)出以后,短時間內(nèi)可能會接到較多的連接請求,為了提高并發(fā)量,采用了數(shù)據(jù)庫連接池的設(shè)計方法,有助于提高對于數(shù)據(jù)庫連接的效率和連接數(shù)量。
程序的邏輯代碼層采用java語言開發(fā),采用面向?qū)ο蟮脑O(shè)計方法進行類的拆分與設(shè)計,嚴格遵循了MVC的分層設(shè)計思想,主要的代碼邏輯處理流程為:view層→servlet層(service)→數(shù)據(jù)庫訪問層→數(shù)據(jù)庫連接池→數(shù)據(jù)庫。通過分層以后,代碼結(jié)構(gòu)耦合性降低,復用性更高。
對于數(shù)據(jù)的訪問層,將對數(shù)據(jù)的增刪改查統(tǒng)一封裝在DbDao層,方便對數(shù)據(jù)庫進行常用操作進行統(tǒng)一管理,同時有助于對數(shù)據(jù)安全性的檢查,提高系統(tǒng)的安全性。
為了以后很好地進行復制與擴展,將系統(tǒng)的數(shù)據(jù)庫連接配置文件、微信配置文件,以及系統(tǒng)配置項文件進行了提取整合,當有新的項目需要復制時,直接進行對應(yīng)的修改即可,可重復性大大提高。
實際使用過程中,對tomcat的生產(chǎn)環(huán)境進行優(yōu)化調(diào)整,經(jīng)實際測試,發(fā)現(xiàn)默認的java虛擬機jvm分配的內(nèi)存不能滿足實際生產(chǎn)環(huán)境的需要,系統(tǒng)有時候由于jvm設(shè)置的內(nèi)存大小只有256M,有時候內(nèi)存溢出會引起死機等問題。經(jīng)調(diào)整到2G以后,生產(chǎn)環(huán)境下內(nèi)存使用率能夠滿足我們的實際需要。
優(yōu)化后的JVM內(nèi)存使用率圖
由于是在微信的接口上進行開發(fā),因此,必須遵循微信服務(wù)平臺的一些約定。微信和阿里云服務(wù)器的通信過程如下圖所示:
微信客戶端與系統(tǒng)通信流程圖
在微信平臺網(wǎng)頁端需要對接入的網(wǎng)站進行一些基本的配置,通過設(shè)置微信服務(wù)器轉(zhuǎn)發(fā)消息到阿里云平臺,并設(shè)置相應(yīng)的服務(wù)器地址以及Token。
公眾平臺開發(fā)配置圖
由于Access Token有效期只有7200秒,而每天調(diào)用獲取的次數(shù)只有2000次,所以,需要將Access Token進行緩存,保證不觸發(fā)超過最大調(diào)用次數(shù)。另外,在微信公眾平臺中,絕大多數(shù)高級接口都需要Access Token授權(quán)才能進行調(diào)用,開發(fā)者需要使用中控服務(wù)器統(tǒng)一進行緩存與更新,以避免各自刷新而混亂。本系統(tǒng)中,Access Token我們采用緩存的方式進行存儲,避免由于單天轉(zhuǎn)發(fā)數(shù)量過大而引起Access Token調(diào)用次數(shù)達到上限。
為了更好地調(diào)動廣大員工的積極性進行微信轉(zhuǎn)發(fā),報社專門制定了相關(guān)制度,要求員工每月至少轉(zhuǎn)發(fā)5條微信,作為考核的基本要求。如果員工超額完成,根據(jù)轉(zhuǎn)發(fā)數(shù)量排行,每個月進行數(shù)量統(tǒng)計,前八名員工將獲得獎勵。制度出臺后,員工的轉(zhuǎn)發(fā)積極性大大提高,每月都有員工滿額完成轉(zhuǎn)發(fā)任務(wù),同時微信主編對平臺的信賴度也越來越高,經(jīng)常性要求轉(zhuǎn)發(fā)一些本部門重要的微信,以提高閱讀量。
目前系統(tǒng)的使用率較高,每天平均轉(zhuǎn)發(fā)5條以上的微信,從系統(tǒng)投入使用至今共計發(fā)出700余條,轉(zhuǎn)發(fā)量達到17000余條。根據(jù)閱讀量計算,平均比以前提高將近20%的微信閱讀量,有效地提高了微信的傳播效果。
根據(jù)目前的使用效果,我們還將持續(xù)地對系統(tǒng)進行優(yōu)化,聽取更多使用人員的反饋建議,對用戶體驗做進一步的提升。同時,更加關(guān)注系統(tǒng)的安全性與穩(wěn)定性,在此基礎(chǔ)上加入更多的功能,適當時機下我們考慮將之開放到更大的范圍,將更多的人納入到轉(zhuǎn)發(fā)系統(tǒng)中來,通過獎勵或者采取系統(tǒng)積分等辦法鼓勵他們轉(zhuǎn)發(fā),從而進一步提升微信的轉(zhuǎn)發(fā)量。