朱玉強(qiáng)
微信公眾平臺擁有龐大的用戶群,成為圖書館移動(dòng)服務(wù)的重要載體。至2019年4月13日,微信公眾號中帶“圖書館”字樣的有3218個(gè),其中550個(gè)通過了微信官方認(rèn)證[1]。42所“雙一流”高校圖書館均開通了微信公眾號,服務(wù)包括本館信息、借閱查詢、閱讀推廣、資源推廣、續(xù)借預(yù)約、信息素養(yǎng)教育、學(xué)科支撐及專利信息等。本文圍繞微信公眾平臺編寫文獻(xiàn)傳遞機(jī)器人,用戶僅需向公眾號發(fā)送一條消息就可在移動(dòng)或PC端獲取電子文獻(xiàn)全文并閱讀,方便用戶使用并可提高圖書館電子資源利用率。
國內(nèi)外對圖書館移動(dòng)服務(wù)的研究主要集中于移動(dòng)服務(wù)類型、提供途徑、營銷手段及質(zhì)量監(jiān)控等。郭亞軍等[2]調(diào)查美國143家城市公共圖書館,發(fā)現(xiàn)97%的圖書館提供移動(dòng)網(wǎng)站或APP,服務(wù)于參考咨詢、位置導(dǎo)航等。王穎純等[3]考查WAP、APP、微信公眾平臺和微博在我國31家省級公共圖書館應(yīng)用情況,發(fā)現(xiàn)被調(diào)查圖書館都開通了微信公眾平臺,開通APP的有27家、微博24家、WAP14家,除微博外主要開展“個(gè)人圖書館”移動(dòng)服務(wù)。張曉青[4]考查國內(nèi)“985工程”高校圖書館,發(fā)現(xiàn)存在門戶網(wǎng)站沒有采用自適應(yīng)網(wǎng)頁設(shè)計(jì)、WAP與APP同質(zhì)化、沒有基于微信的移動(dòng)門戶等問題。何丹丹等[5]利用CiteSpace挖掘我國圖書館移動(dòng)服務(wù)領(lǐng)域研究熱點(diǎn),將其歸納為信息技術(shù)研究、應(yīng)用服務(wù)創(chuàng)新研究和服務(wù)質(zhì)量研究。
目前文獻(xiàn)傳遞業(yè)務(wù)面臨巨大挑戰(zhàn)。陸堯等[6]發(fā)現(xiàn)OCLC文獻(xiàn)傳遞服務(wù)量自2011年至2015年呈下降趨勢。梁南燕等[7]、羅鈞等[8]、徐飛等[9]分別撰文提到CASHL、CALIS和BALIS文獻(xiàn)傳遞量下滑已成不爭事實(shí)。面對挑戰(zhàn),CASHL、國家科技圖書文獻(xiàn)中心、CALIS分別于2016年1月、4月和6月相繼開通微信平臺提供文獻(xiàn)傳遞移動(dòng)服務(wù),服務(wù)繼承了PC時(shí)代只面向文獻(xiàn)機(jī)構(gòu)、不應(yīng)對讀者個(gè)人請求的傳統(tǒng)。
陳建紅[10]發(fā)現(xiàn)高校圖書館對電子資源推廣不力,造成大學(xué)生對電子資源不了解,更談不上利用。常定姁[11]指出當(dāng)前電子資源亟待推廣,介紹了武漢大學(xué)圖書館利用微信公眾平臺開展電子資源推廣活動(dòng)案例。呂玉龍[12]介紹了上海理工大學(xué)圖書館利用PHP技術(shù)自行開發(fā)文獻(xiàn)傳遞系統(tǒng)和館際互借管理系統(tǒng)實(shí)例,彌補(bǔ)CALIS、CASHL和NSTL三大文獻(xiàn)傳遞系統(tǒng)只對圖書館開放、不直接面向讀者的不足,并允許用戶免費(fèi)申請圖書館已購買電子資源。齊曉峰[13]介紹了華東理工大學(xué)圖書館利用網(wǎng)盤構(gòu)建稀缺文獻(xiàn)數(shù)據(jù)庫展開文獻(xiàn)檢索與傳遞服務(wù)。歐陽劍等[14]采用自動(dòng)代理機(jī)制實(shí)現(xiàn)移動(dòng)終端對電子資源的檢索與文獻(xiàn)傳遞。
相對以往文獻(xiàn)中的PC或移動(dòng)端開發(fā)實(shí)踐以及商業(yè)化遠(yuǎn)程訪問系統(tǒng),本文允許用戶通過使用微信發(fā)送一條消息的簡單操作即可獲取文獻(xiàn)全文,文獻(xiàn)傳遞員只需登錄微信公眾平臺并運(yùn)行機(jī)器人程序,雙方操作更便捷。機(jī)器人除可獲取本機(jī)構(gòu)資源,還可擴(kuò)展到通過文獻(xiàn)傳遞員遠(yuǎn)程訪問可獲取的機(jī)構(gòu)外資源,用戶無需關(guān)注機(jī)構(gòu)與機(jī)構(gòu)之間傳遞詳情,充分體現(xiàn)了移動(dòng)服務(wù)的便利性與易獲取性。
系統(tǒng)總體目標(biāo)為:用戶通過微信提交文獻(xiàn)請求,PC端文獻(xiàn)傳遞機(jī)器人自動(dòng)獲取相關(guān)文獻(xiàn)并將其發(fā)送至用戶郵箱,用戶可在移動(dòng)或PC端接收并閱讀文獻(xiàn),推進(jìn)圖書館電子資源移動(dòng)服務(wù)。系統(tǒng)不搭建第三方服務(wù)器,不動(dòng)用微信高級接口,利用微信公眾平臺開展近乎全自動(dòng)的工作。
用戶使用微信向公眾號發(fā)送所需文獻(xiàn)的標(biāo)題等消息,編寫PC端文獻(xiàn)傳遞機(jī)器人,周期性檢測微信公眾平臺有無新消息,根據(jù)有無特征字判斷新消息是否為文獻(xiàn)傳遞請求。有效性檢測包括:用戶是否合法;用戶有否超出當(dāng)日請求限制,等等。對有效請求,程序通過操作網(wǎng)頁文檔對象提示用戶“已接單”。自動(dòng)回復(fù)中包含操作員信息,可作為多終端協(xié)同作業(yè)特征符,便于任務(wù)有效性識別、分發(fā)、結(jié)單、日志分析與統(tǒng)計(jì)等。“接單”后程序優(yōu)先檢索本地磁盤,如找不到用戶請求的文獻(xiàn),自動(dòng)構(gòu)建檢索策略從電子資源庫下載該文獻(xiàn);檢測文獻(xiàn)質(zhì)量,將達(dá)標(biāo)文獻(xiàn)發(fā)送至用戶郵箱;記錄工作日志并將下載文獻(xiàn)歸檔。程序空閑時(shí)隨機(jī)自動(dòng)操作網(wǎng)頁以防因長時(shí)間無操作被踢除登錄狀態(tài)。程序可滿足不同文獻(xiàn)傳遞員偏好,如除特定字串外允許操作員自定義自動(dòng)回復(fù)與郵件內(nèi)容等,在推進(jìn)電子資源移動(dòng)化服務(wù)同時(shí)助力個(gè)性化學(xué)科服務(wù)建設(shè)等。
系統(tǒng)由微信用戶端、微信公眾平臺、PC端文獻(xiàn)傳遞機(jī)器人三層結(jié)構(gòu)組成,見圖1。PC端機(jī)器人收割用戶發(fā)向微信公眾平臺的消息,根據(jù)消息類型分類部署,進(jìn)入“用戶認(rèn)證”模塊或“文獻(xiàn)傳遞”模塊,按需進(jìn)行環(huán)境設(shè)置、接入擴(kuò)展接口等。
圖1 系統(tǒng)模塊
主要流程如圖2所示。舍棄消息池中不含特征字的非相關(guān)消息;對相關(guān)消息,優(yōu)先執(zhí)行“用戶認(rèn)證”模塊;對合法用戶和有效文獻(xiàn)請求,優(yōu)先檢索本地資源,若本地缺藏再檢索網(wǎng)絡(luò)數(shù)據(jù)庫并自動(dòng)下載文獻(xiàn),發(fā)送給用戶。
圖2 技術(shù)流程
程序建立專用數(shù)據(jù)庫以甄別消息來源及有效性等,實(shí)現(xiàn)用戶認(rèn)證。不調(diào)用微信高級接口前提下,用戶fakeID相對公眾號具全局唯一性,列為數(shù)據(jù)庫核心參數(shù)。提取類似“https://mp.weixin.qq.com/cgi-bin/singlesendpage?tofakeid=otmpOuOqOhuGkTvm0YpVWyjmn884&t=message/send&action=index&quickReplyId=442628135...”消息鏈接,其中“otmpOuOqOhuGkTvm0 YpVWyjmn884”即為用戶fakeID。用戶申請認(rèn)證時(shí)向公眾號發(fā)送類似“文獻(xiàn)傳遞綁定|生命科學(xué)學(xué)院|胡東?!钡母袷交谋?,程序?qū)訄D書管理系統(tǒng),判斷申請是否來自圖書館合法用戶,是則寫入“文獻(xiàn)傳遞”數(shù)據(jù)庫,用戶數(shù)據(jù)見表1。
表1 文獻(xiàn)傳遞用戶數(shù)據(jù)表
模塊從微信公眾平臺獲取用戶消息,根據(jù)消息及請求有效性進(jìn)行分類部署。獲取消息通過操作網(wǎng)頁文檔對象實(shí)現(xiàn)。枚舉并篩選網(wǎng)頁源碼中“href”值包含“https://mp.weixin.qq.com/cgibin/singlesendpage?tofakeid=”的“a”標(biāo)簽,跳轉(zhuǎn)后枚舉并篩選id前綴為“wxMsg”的“div”標(biāo)簽,讀取其innerText值即可。分類部署時(shí),順序判斷消息是否含“處理中”特征字,有則返回;判斷消息是否含“請求傳遞”特征字,有且申請合法時(shí)自動(dòng)回復(fù)“處理中”特征字,執(zhí)行文獻(xiàn)傳遞并返回;如文本含“申請綁定”特征字,執(zhí)行用戶認(rèn)證模塊。對不帶“文獻(xiàn)傳遞”特征字的普通消息不予理會(huì)。提取消息核心算法如下:
提取用戶提交的文獻(xiàn)信息,如本地磁盤有此文獻(xiàn),直接發(fā)給用戶,否則自動(dòng)構(gòu)建檢索策略,訪問電子資源庫下載文獻(xiàn)并發(fā)給用戶。
在電子資源庫執(zhí)行檢索策略并篩選結(jié)果仍通過操作網(wǎng)頁文檔對象實(shí)現(xiàn),此不贅述。下載文獻(xiàn)時(shí),通過解析網(wǎng)頁Request Headers等元素可獲取真實(shí)、靜態(tài)的下載鏈接??紤]到電子資源庫、資源發(fā)現(xiàn)系統(tǒng)類型繁多,本文采用模擬真人點(diǎn)擊Windows標(biāo)準(zhǔn)窗口組件操作思路,即監(jiān)測到下載會(huì)話框出現(xiàn)時(shí)自動(dòng)設(shè)置存儲位置、單擊“保存”按鈕等。常規(guī)操作方法為使用Windows API函數(shù)SendMessage向文本框或按鈕發(fā)消息,改變文本框初始值或按鈕按下與釋放狀態(tài)。本文引入第三方下載器Internet Download Manager接管瀏覽器下載模塊,固定了下載會(huì)話框的窗口標(biāo)題、默認(rèn)下載位置、按鈕文本等,此時(shí)使用腳本語言AutoHotKey編寫代碼比常規(guī)方法更方便,核心代碼如下:
WinWaitActive,下載文件信息 ahk_exe IDMan.exe
ControlClick,開始下載(&S),下載文件信息 ahk_exe IDMan.exe,,Left,1,NA
下載完成后使用Adobe Reader打開文檔,閱讀器窗口標(biāo)題應(yīng)包含文獻(xiàn)題名,否則或因網(wǎng)絡(luò)原因?qū)е挛臋n下載失敗,藉此可粗略檢查下載作業(yè)質(zhì)量。
對運(yùn)行環(huán)境進(jìn)行評測和設(shè)置,可提升程序兼容性和擴(kuò)展性。當(dāng)影響網(wǎng)頁文檔操作或Windows標(biāo)準(zhǔn)控件操作的進(jìn)程存在時(shí),提示用戶,提供改寫配置文件或Windows注冊表等解決方案。自動(dòng)操作網(wǎng)頁文檔對象的前提是被操作網(wǎng)頁載入完畢,否則可能出現(xiàn)待操作對象為空、自動(dòng)操作指令被阻塞等問題,允許操作員根據(jù)電腦配置及網(wǎng)絡(luò)狀況設(shè)置網(wǎng)頁就緒等待超時(shí)、重試刷新間隔及次數(shù)、網(wǎng)絡(luò)意外斷開時(shí)是否以合成語音或mp3音樂報(bào)警等。允許操作員進(jìn)行更多個(gè)性化設(shè)置并預(yù)留接口,如本機(jī)構(gòu)缺藏文獻(xiàn)時(shí)詢問用戶有無意愿向外機(jī)構(gòu)付費(fèi)申請等。
程序可穩(wěn)定運(yùn)行于32位、64位Windows 7和Windows 10操作系統(tǒng),連續(xù)運(yùn)行7×24小時(shí)無故障且功能確切。內(nèi)測期間收到用戶消息936條,文獻(xiàn)傳遞滿足率100%。用戶可在PC或移動(dòng)端(Android/iOS)下載郵箱中的PDF格式文獻(xiàn)并閱讀。
936條消息中與文獻(xiàn)傳遞相關(guān)的有875條,由397人發(fā)出。取消息首次成功率97.44%,容錯(cuò)重做成功率100%,失敗原因主要為網(wǎng)絡(luò)故障導(dǎo)致打開網(wǎng)頁超時(shí)。875條消息中有406條申請“綁定用戶”,其中9條為同一微信賬號重復(fù)發(fā)送;有469條申請“文獻(xiàn)傳遞”,其中含同一賬號重復(fù)請求或申請多筆文獻(xiàn)。
處理綁定請求平均耗時(shí)3.17秒。處理文獻(xiàn)請求平均耗時(shí)62.39秒,首次成功率97.6%,容錯(cuò)重做成功率100%。失敗原因有:(1)優(yōu)先檢索中國知網(wǎng)時(shí)用戶并發(fā)數(shù)已滿,導(dǎo)致網(wǎng)頁就緒超時(shí);(2)網(wǎng)絡(luò)丟包導(dǎo)致網(wǎng)頁就緒超時(shí);(3)等待下載對話框超時(shí);(4)遠(yuǎn)程訪問系統(tǒng)丟失Cookie,導(dǎo)致無法訪問;(5)文獻(xiàn)下載總量超出遠(yuǎn)程訪問限制大??;(6)郵件服務(wù)器反垃圾系統(tǒng)拒絕發(fā)信。出錯(cuò)任務(wù)平均重做3次成功,最多重做5次。程序運(yùn)行于64位Windows7操作系統(tǒng)的界面如圖3所示。
由上可見,程序功能確切,自動(dòng)化程度高,操作員僅需簡單設(shè)置即可由程序全自動(dòng)操作。程序不搭建第三方服務(wù)器,在節(jié)省硬件、公眾號認(rèn)證等投資同時(shí),對操作員計(jì)算機(jī)操作能力要求很低。測試時(shí)30位文獻(xiàn)傳遞員通過單擊“幫助”按鈕查看說明即會(huì)使用,無需集中培訓(xùn)。用戶提交認(rèn)證、請求文獻(xiàn)只需向微信公眾號各發(fā)送一條格式化文本,同樣無需集中培訓(xùn)。程序“接單回復(fù)”機(jī)制可有效避免單機(jī)或多機(jī)協(xié)作時(shí)有可能產(chǎn)生的重復(fù)勞動(dòng),可根據(jù)實(shí)際情況開啟、暫?;蛲V瓜嚓P(guān)功能,日志系統(tǒng)方便文獻(xiàn)傳遞主管排查錯(cuò)漏、對操作員考核評價(jià)等。
圖3 文獻(xiàn)傳遞機(jī)器人程序主界面
微信是圖書館創(chuàng)新工作思路、開展移動(dòng)服務(wù)的重要工具。本文圍繞微信公眾平臺編制程序,全天候近乎全自動(dòng)地為用戶提供文獻(xiàn)傳遞服務(wù),為學(xué)科館員實(shí)踐和讀者服務(wù)工作提供新思路和新方法。實(shí)踐表明,即使不調(diào)用微信高級接口也可以方便高效地開發(fā)協(xié)作型應(yīng)用。程序不綁定私有域名,只需調(diào)整少許代碼即可應(yīng)用于不同圖書館或文獻(xiàn)傳遞機(jī)構(gòu),具推廣性。但是,因程序只供文獻(xiàn)傳遞員簡單操作,界面簡陋,部分外圍設(shè)置未窗口化;因程序部分使用模擬按鍵操作,無法多線程作業(yè),處理速度不盡人意,工作電腦亦不能同時(shí)開展其他工作;因無服務(wù)器支持,用戶數(shù)據(jù)庫需手工同步等,這些都尚待完善。