国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種后臺程序向企業(yè)微信主動發(fā)送消息的方法

2018-05-09 07:36
視聽 2018年4期
關(guān)鍵詞:企業(yè)應用后臺消息

(廣西廣播電視技術(shù)中心)

1 引言

微信是騰訊公司于2011年推出的一個為智能終端提供即時通訊服務的免費應用程序,目前已有超過9億用戶,成為中國社會互聯(lián)網(wǎng)社交的一種生活方式。騰訊公司利用個人微信的廣大用戶基數(shù),擴展了訂閱號、服務號和企業(yè)號,隨后企業(yè)號發(fā)展為企業(yè)微信。企業(yè)微信提供了通訊錄管理、應用管理、消息推送、身份驗證、移動端SDK、素材、OA數(shù)據(jù)接口、企業(yè)支付、電子發(fā)票等接口(API),開發(fā)人員可以使用這些API,為企業(yè)接入更多個性化的辦公應用。同時,開發(fā)人員還可以開發(fā)出其他不依賴于微信API的獨立運行的后臺應用,僅使用微信客戶端來呈現(xiàn)前端頁面。

由后臺程序向微信客戶端主動發(fā)送消息是常用的一種應用。企業(yè)微信開放了消息發(fā)送接口,企業(yè)可以使用這些接口讓自定義應用與企業(yè)微信后臺或用戶間進行雙向通信。在此,后臺程序可以按需求自動判斷發(fā)送條件、自主組織消息形式、選擇接收用戶等。可發(fā)送的消息類型主要包括文本、圖片、語音、視頻、文件、文本卡片、圖文消息,多種類型的消息極大的滿足了企業(yè)應用的需求。

2 主動發(fā)送消息的機制

主動發(fā)送消息是指,企業(yè)后臺調(diào)用接口通過應用向指定成員發(fā)送消息。其時序圖如圖1所示。

企業(yè)應用的后臺程序按照微信給定的方式向微信授權(quán)API發(fā)送已知的corpid和secret,微信API端返回包含了access_token等信息的json串,開發(fā)者提取出access_token并用于發(fā)消息接口,此時企業(yè)應用與微信端才建立起連接并互相取得信任,然后才能開始后臺程序與企業(yè)微信之間的交互。access_token有時效性,過期后要再次訪問授權(quán)接口來獲取。后臺程序自定義的消息主體data也是json串,它和access_token一起被發(fā)送至微信API,再由微信API發(fā)送至微信后臺,最終由微信后臺轉(zhuǎn)發(fā)至個人微信app。

圖1 主動發(fā)送消息時序圖

在后臺程序向企業(yè)微信主動發(fā)送消息時,主要用到以下信息:

1.corpid:每個企業(yè)都擁有唯一的corpid;

2.userid: 每個成員都有唯一的userid,即所謂“帳號”;

3.agentid: 每個應用都有唯一的agentid;

4.secret:secret是企業(yè)應用里面用于保障數(shù)據(jù)安全的“鑰匙”,每一個應用都有一個獨立的訪問密鑰,為了保證數(shù)據(jù)的安全,secret不能泄漏。目前secret有兩種:一是通訊錄管理secret,二是應用secret,主動發(fā)送消息主要用的是應用secret。每個應用有獨立的secret,所以每個應用的access_token應該分開來獲??;

5.access_token:access_token是企業(yè)后臺去企業(yè)微信的后臺獲取信息時的重要票據(jù),由corpid和secret產(chǎn)生。所有接口在通信時都需要攜帶此信息用于驗證接口的訪問權(quán)限。

3 程序設計

依據(jù)主動發(fā)送消息的機制,程序設計為兩個部分:企業(yè)應用的后臺程序和訪問微信API的接口程序。后臺程序用于滿足企業(yè)應用的各種需求,如判斷發(fā)送條件、組織消息及形式、選擇接收用戶、返回用戶訪問信息等。接口程序用于向微信端發(fā)送認證、建立連接、發(fā)送消息、建立用戶訪問界面等與微信的各種交互。

本文根據(jù)實際工作需求,從處于內(nèi)網(wǎng)的OA系統(tǒng),向用戶發(fā)送工作流消息提醒,即當用戶有新的工作流時,在微信app上會接收到企業(yè)號推送的文本消息。因此,本文設計的兩部分程序分別如下所述。

3.1 后臺程序

在此,后臺程序主要用于掃描數(shù)據(jù)庫,查找滿足發(fā)送條件的用戶名、消息內(nèi)容、調(diào)用接口程序,并根據(jù)返回值判斷是否發(fā)送成功改寫數(shù)據(jù)表等。因為此程序具有機械重復的特性,采用Python語言編寫.exe可執(zhí)行程序,可大大提高掃描效率和節(jié)省內(nèi)存開支。具體程序如表1所示:

表1 后臺程序

#c u r.e x e c u t e("s e l e c t u s e r_i d f r o m w e b m a i l")c o n n = p y m y s q l.c o n n e c t(h o s t='1 2 7.0.0.1',u s e r='r o o t',p a s s w o r d='*****',d b='T D_O A',p o r t=****,c h a r s e t='u t f 8')c u r = c o n n.c u r s o r()p r i n t "b e g i n f l o w"s q l=u"S E L E C T a.t o_i d, a.b o d y_i d, b.f r o m_i d, b.c o n t e n t,a.s m s_i d,c.w x_u i d F R O M s m s a, s m s_b o d y b,w e i x i n_m e m b e r c W H E R E a.t o_i d=c.w x_u n a m e A N D a.r e m i n d_f l a g>=1 A N D b.s m s_t y p e=7 A N D a.b o d y_i d=b.b o d y_i d A N D a.s m s_i d>1 1 2 0 2 9 0 A N D a.w x_f l a g=0 O R D E R B Y b.b o d y_i d D E S C"s q l=s q l.e n c o d e('u t f-8')c u r.e x e c u t e(s q l)r e s u l t = c u r.f e t c h a l l()f o r r o w i n r e s u l t:s q l_u p d a t e=u"u p d a t e s m s s e t w x_f l a g=1 w h e r e s m s_i d=%d" % r o w[4]t e x t = r o w[3].e n c o d e('u t f-8')u s e r = r o w[5].e n c o d e('u t f-8')p a r a m s = {"t o u s e r":u s e r,"a g e n t i d":"6","c o n t e n t":t e x t}r = r e q u e s t s.p o s t('h t t p://1 9 2.1 6 8.***.***/***/T D-r e s p o n s e-***.p h p',p a r a m s)r e s u l t = r.t e x t.e n c o d e('u t f-8')i f 's u c c e s s' i n r e s u l t:p r i n t s q l_u p d a t e c u r.e x e c u t e(s q l_u p d a t e)c o n n.c o m m i t()p r i n t "e n d f l o w"c u r.c l o s e()c o n n.c l o s e()t i m e.s l e e p(4)

此程序間隔4秒掃描一次數(shù)據(jù)庫,查找該接收微信消息的用戶和消息主體,組織成json串形式的參數(shù),調(diào)用接口程序并傳參;若返回值中含有success,則改寫數(shù)據(jù)表。一次發(fā)送完成。

3.2 接口程序

企業(yè)微信提供了許多接口地址,但是仍需要開發(fā)人員編寫接口程序。本文的接口程序采用php語言編寫如表2,使用了跨域訪問函數(shù)curl()。

表2 接口程序

$opt[CURLOPT_SSL_VERIFYPEER]= FALSE;}curl_setopt_array($ch,$opt);$data = curl_exec($ch);curl_close($ch);return $data;}$corpid="wx***********7b6";$corpsecret="5Gw********_*************V1I";$Url="https://qyapi.weixin.qq.com/cgi-bin/ge ttoken?corpid=$corpid&corpsecret=$corpsecret";$res = curlPost($Url);$ACCESS_TOKEN=json_decode($res)->access_token;$Url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$ACCESS_TOKEN";$touser=$_POST['touser'];$msgtype="text";$agentid=**********;$content=$_POST['content'];$safe=0;$arr=array('touser'=>$touser,'msgtype'=>$msgtype,'agentid'=>$agentid,'text'=>array('content'=>$content),'safe'=>0);$data=json_encode($arr);$res = curlPost($Url,$data);$errmsg=json_decode($res)->errmsg;if($errmsg==="ok"){echo "success";}else{echo "error".$errmsg;}?>

該程序首先發(fā)送corpid和corpsecret到指定地址以獲取access_token;接收后臺程序發(fā)送來的參數(shù),組合其他信息形成data的json串,再將access_token和data發(fā)送至指定地址,由微信端向個人用戶發(fā)送消息;最后微信端會向接口程序返回相關(guān)信息。

4 網(wǎng)絡環(huán)境和程序部署

因業(yè)務的特殊性,OA系統(tǒng)部署在內(nèi)網(wǎng)web服務器上,向外網(wǎng)微信端發(fā)送消息要經(jīng)過重重關(guān)卡。大致的網(wǎng)絡結(jié)構(gòu)圖如圖2所示。

根據(jù)網(wǎng)絡結(jié)構(gòu),本文設計把后臺程序部署在內(nèi)網(wǎng)OA服務器上,把接口程序部署在DMZ區(qū)的前置服務器上。當后臺程序發(fā)送微信消息時,首先調(diào)用前置服務器上的接口程序,由接口程序向微信端發(fā)送交互請求和消息主體。用戶訪問企業(yè)應用時,首先訪問的是前置服務器上的頁面,再由頁面程序與后臺程序進行交互。采用此種程序部署方式,只暴露了接口程序和訪問頁面,大大的提高了后臺程序和后臺服務器的安全性。

5 總結(jié)和展望

目前該程序已經(jīng)部署并正常使用,發(fā)送消息準確、及時。現(xiàn)在程序只使用了文本消息,后續(xù)還可開發(fā)更多形式的消息推送,或利用企業(yè)微信提供的接口還可開發(fā)功能更多更復雜的后臺程序,如考勤、辦公、文件共享等。微信用戶以后仍會增多,微信程序會更加普及,企業(yè)微信的開發(fā)和利用,使得職工在不增加手機app、不增加內(nèi)存消耗的情況下,就能便利的享受企業(yè)文化、接收企業(yè)信息和接受企業(yè)的管理。

[1]騰訊控股有限公司.企業(yè)微信API文檔.https://work.weixin.qq.com/api/doc

圖2 網(wǎng)絡結(jié)構(gòu)圖

猜你喜歡
企業(yè)應用后臺消息
一張圖看5G消息
Wu Fenghua:Yueju Opera Artist
后臺暗戀
論財務軟件在企業(yè)中存在的問題及對策
淺析管理會計在企業(yè)應用中的問題及對策
管理會計助推企業(yè)發(fā)展的思考與應用
后臺朋友
微信營銷在企業(yè)應用中的問題及對策研究
消息
消息
潮州市| 平罗县| 乌拉特后旗| 夏津县| 措美县| 峡江县| 清苑县| 日照市| 南部县| 南投市| 辽阳县| 惠安县| 长乐市| 瑞昌市| 偃师市| 蓝山县| 太和县| 凌源市| 根河市| 金平| 沿河| 武宣县| 常宁市| 长兴县| 星子县| 珲春市| 禄劝| 海口市| 武义县| 尼木县| 泰和县| 丰顺县| 安新县| 衡山县| 和田县| 永康市| 安顺市| 沾益县| 西林县| 神农架林区| 华阴市|