?我們知道,企業(yè)號主要是面向企業(yè)需求而生的,因此內(nèi)部消息的交流顯得非常重要,而且發(fā)送、回復消息數(shù)量應該很可觀,對于大企業(yè)尤其如此,因此可以結合企業(yè)號實現(xiàn)內(nèi)部消息的交流。企業(yè)號具有關注安全、消息無限制等特點,很適合企業(yè)內(nèi)部的環(huán)境。本文主要介紹如何利用企業(yè)號實現(xiàn)文本、圖片、文件、語音、視頻、圖文消息等消息的發(fā)送操作。
1、企業(yè)號特點
對于企業(yè)號,有以下一些特點:
1)關注更安全
–只有企業(yè)通訊錄的成員才能關注企業(yè)號,分級管理員、保密消息等各種特性確保企業(yè)內(nèi)部信息的安全。
企業(yè)可以設置自行驗證關注者身份,進行二次安全驗證,保證企業(yè)信息使用和傳遞安全。
若員工離職,企業(yè)管理員可在通訊錄中刪除該成員,該成員即自動取消關注企業(yè)號,同時微信中的企業(yè)號歷史記錄也會被清除。
2)應用可配置
–企業(yè)可自行在企業(yè)號中可配置多個服務號,可以連接不同的企業(yè)應用系統(tǒng),只有授權的企業(yè)成員才能使用相應的服務號。
3)消息無限制
–發(fā)送消息無限制,并提供完善的的管理接口及微信原生能力,以適應企業(yè)復雜、個性化的應用場景。
企業(yè)可以主動發(fā)消息給員工,消息量不受限制。
4)使用更便捷
–企業(yè)號在微信中有統(tǒng)一的消息入口,用戶可以更方便地管理企業(yè)號消息。微信通訊錄也可以直接訪問企業(yè)號中的應用。
?
2、企業(yè)號的管理接口內(nèi)容
目前企業(yè)號的內(nèi)容可以用下面的分層圖來展示,分別包含素材管理、被動響應消息、通訊錄管理、自定義菜單等內(nèi)容,詳細可以看下面圖示。
?
3、企業(yè)號消息和事件的處理
企業(yè)號和公眾號一樣,可以分為消息處理和事件處理,下面是他們兩種類型的處理操作,也就發(fā)送的消息有文本消息、圖片消息、文件消息、視頻消息、語音消息、地理文字消息、圖文和多媒體消息等。
事件處理主要就是關注、取消關注事件,以及菜單click類型和view類型兩種操作,還有就是地理位置上報事件等。
兩種類型的處理圖如下所示。
?
?
4、企業(yè)號消息管理
在企業(yè)的管理后臺,和公眾號一樣,可以看到對應信息交流記錄,包括文字、圖片、地理位置等等,如下所示。
?
由于消息分為幾種類型,包括文本(Text)、圖片(Image)、文件(File)、語音(Voice)、視頻(Video)、圖文消息等(News)、MpNews等。
因此我們需要分別對它們進行一定的定義和封裝處理,如下是它們的信息對象設計圖。
?
?
企業(yè)號發(fā)送消息的官方定義如下:
企業(yè)可以主動發(fā)消息給員工,消息量不受限制。
調(diào)用接口時,使用Https協(xié)議、JSON數(shù)據(jù)包格式,數(shù)據(jù)包不需做加密處理。
目前支持文本、圖片、語音、視頻、文件、圖文等消息類型。除了news類型,其它類型的消息可在發(fā)送時加上保密選項,保密消息會被打上水印,并且只有接收者才能閱讀。
?
我們以發(fā)送的文本消息為例進行說明,它的定義如下所示。
text消息
{ ???"touser":?"UserID1|UserID2|UserID3", ???"toparty":?"?PartyID1?|?PartyID2?", ???"totag":?"?TagID1?|?TagID2?", ???"msgtype":?"text", ???"agentid":?"1", ???"text":?{ ???????"content":?"Holiday?Request?For?Pony(http://www.miracleart.cn/)" ???}, ???"safe":"0" }
?
參數(shù) | 必須 | 說明 |
---|---|---|
touser | 否 | UserID列表(消息接收者,多個接收者用‘|’分隔)。特殊情況:指定為@all,則向關注該企業(yè)應用的全部成員發(fā)送 |
toparty | 否 | PartyID列表,多個接受者用‘|’分隔。當touser為@all時忽略本參數(shù) |
totag | 否 | TagID列表,多個接受者用‘|’分隔。當touser為@all時忽略本參數(shù) |
msgtype | 是 | 消息類型,此時固定為:text |
agentid | 是 | 企業(yè)應用的id,整型。可在應用的設置頁面查看 |
content | 是 | 消息內(nèi)容 |
safe | 否 | 表示是否是保密消息,0表示否,1表示是,默認0 |
?
?
?其中每種消息都會包含以下消息所示,也就是它們共同的屬性:
????touser":?"UserID1|UserID2|UserID3",???"toparty":?"?PartyID1?|?PartyID2?",???"totag":?"?TagID1?|?TagID2?",???"msgtype":?"text",???"agentid":?"1",
因此我們可以定義一個基類用來方便承載這些共同的信息。
????///?<summary> ????///?企業(yè)號發(fā)送消息的基礎消息內(nèi)容????///?</summary> ????public?class?CorpSendBase ????{?????? ????????///?<summary> ????????///?UserID列表(消息接收者,多個接收者用‘|’分隔)。特殊情況:指定為@all,則向關注該企業(yè)應用的全部成員發(fā)送????????///?</summary> ????????public?string?touser?{?get;?set;?}????????///?<summary> ????????///?PartyID列表,多個接受者用‘|’分隔。當touser為@all時忽略本參數(shù)????????///?</summary> ????????public?string?toparty?{?get;?set;?}????????///?<summary> ????????///?TagID列表,多個接受者用‘|’分隔。當touser為@all時忽略本參數(shù)????????///?</summary> ????????public?string?totag?{?get;?set;?}????????///?<summary> ????????///?消息類型????????///?</summary> ????????public?string?msgtype?{?get;?set;?}????????///?<summary> ????????///?企業(yè)應用的id,整型??稍趹玫脑O置頁面查看????????///?</summary> ????????public?string?agentid?{?get;?set;?}????????///?<summary> ????????///?表示是否是保密消息,0表示否,1表示是,默認0????????///?</summary> ????????[JsonProperty(NullValueHandling?=?NullValueHandling.Ignore)]????????public?string?safe?{?get;?set;?} ????}
然后其他消息逐一繼承這個基類即可,如下所示。
最終會構成下面這個繼承關系圖。?
?
5、消息接口的定義和實現(xiàn)?
?定義好相關的發(fā)送對象后,我們就可以定義它的統(tǒng)一發(fā)送接口了,如下所示。
????///?<summary> ????///?企業(yè)號消息管理接口定義????///?</summary> ????public?interface?ICorpMessageApi ????{???????? ????????///?<summary> ????????///?發(fā)送消息。????????///?需要管理員對應用有使用權限,對收件人touser、toparty、totag有查看權限,否則本次調(diào)用失敗。????????///?</summary> ????????///?<param name="accessToken"></param> ????????///?<returns></returns> ????????CommonResult?SendMessage(string?accessToken,?CorpSendBase?data); ????}
最終,文本等類型的消息會根據(jù)接口定義進行實現(xiàn),實現(xiàn)代碼如下所示。注意,發(fā)送過程不需要調(diào)用加密類進行加密。
????///?<summary> ????///?企業(yè)號消息管理實現(xiàn)類????///?</summary> ????public?class?CorpMessageApi?:?ICorpMessageApi ????{????????///?<summary> ????????///?發(fā)送消息。????????///?需要管理員對應用有使用權限,對收件人touser、toparty、totag有查看權限,否則本次調(diào)用失敗。????????///?</summary> ????????///?<param name="accessToken"></param> ????????///?<returns></returns> ????????public?CommonResult?SendMessage(string?accessToken,?CorpSendBase?data) ????????{???????? ????????????CommonResult?result?=?new?CommonResult();????????????string?urlFormat?=?"http://www.miracleart.cn/{0}";????????????var?url?=?string.Format(urlFormat,?accessToken);????????????var?postData?=?data.ToJson();????????????//數(shù)據(jù)不用加密發(fā)送 ????????????CorpSendResult?sendResult?=?CorpJsonHelper<CorpSendResult>.ConvertJson(url,?postData);????????????if?(sendResult?!=?null) ????????????{ ????????????????result.Success?=?(sendResult.errcode?==?CorpReturnCode.請求成功); ????????????????result.ErrorMessage?=?string.Format("invaliduser:{0},invalidparty:{1},invalidtag:{2}", ????????????????????sendResult.invaliduser,?sendResult.invalidparty,?sendResult.invalidtag); ????????????}????????????return?result; ????????} ????}
6、消息的發(fā)送操作和實際效果
?定義好相應的發(fā)送對象后,我們就可以進行統(tǒng)一的消息發(fā)送操作,包括文本、圖片、文件、語音等等類型的消息,注意有些消息是需要上傳到服務器上,然后在根據(jù)mediaId進行發(fā)送出去的。
發(fā)送文本和圖片的操作代碼如下所示。
????????private?void?btnSendText_Click(object?sender,?EventArgs?e) ????????{????????????//發(fā)送文本內(nèi)容 ????????????ICorpMessageApi?bll?=?new?CorpMessageApi(); ????????????CorpSendText?text?=?new?CorpSendText("API?中文測試(http://www.miracleart.cn/)"); ????????????text.touser?=?"wuhuacong"; ????????????text.toparty?=?"4";//部門ID ????????????text.totag?=?"0"; ????????????text.safe?=?"0"; ????????????text.agentid?=?"0"; ????????????CommonResult?result?=?bll.SendMessage(token,?text);????????????if?(result?!=?null) ????????????{ ????????????????Console.WriteLine("發(fā)送消息:{0}?{1}?{2}",?text.text.content,?(result.Success???"成功"?:?"失敗"),?result.ErrorMessage); ????????????} ????????}????????private?void?btnSendImage_Click(object?sender,?EventArgs?e) ????????{ ????????????btnUpload_Click(sender,?e);????????????if?(!string.IsNullOrEmpty(image_mediaId)) ????????????{????????????????//發(fā)送圖片內(nèi)容 ????????????????ICorpMessageApi?bll?=?new?CorpMessageApi(); ????????????????CorpSendImage?image?=?new?CorpSendImage(image_mediaId); ????????????????CommonResult?result?=?bll.SendMessage(token,?image);????????????????if?(result?!=?null) ????????????????{ ????????????????????Console.WriteLine("發(fā)送圖片消息:{0}?{1}?{2}",?image_mediaId,?(result.Success???"成功"?:?"失敗"),?result.ErrorMessage); ????????????????} ????????????} ????????}
最后在微信企業(yè)號上截圖效果如下所示,包括了文本測試、文件測試、圖文測試、語音測試均正常。
?
?更多C#開發(fā)微信門戶及應用微信企業(yè)號的消息發(fā)送(文本、圖片、文件、語音、視頻、圖文消息等)相關文章請關注PHP中文網(wǎng)!

熱AI工具

Undress AI Tool
免費脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機

Video Face Swap
使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級代碼編輯軟件(SublimeText3)