搜尋
首頁微信小程式微信開發C#開發微信入口網站及應用程式-微信企業號的訊息發送(文字、圖片、文件、語音、影片、圖文訊息等)

 我們知道,企業號主要是面向企業需求而生的,因此內部訊息的交流顯得非常重要,而且發送、回覆訊息數量應該很可觀,對於大企業尤其如此,因此可以結合企業號實現內部訊息的交流。企業號具有關注安全、訊息無限制等特點,很適合企業內部的環境。本文主要介紹如何利用企業號實現文字、圖片、文件、語音、影片、圖文訊息等訊息的傳送操作。

1、企業號特點

對於企業號,有以下一些特點:

1)關注更安全

–只有企業通訊錄的成員才能關注企業號,​​分級管理員、保密消息等各種特性確保企業內部資訊的安全。

企業可以設定自行驗證追蹤者身份,進行二次安全驗證,確保企業資訊使用和傳遞安全。

若員工離職,企業管理員可在通訊錄中刪除該成員,該成員即自動取消關注企業號,​​同時微信中的企業號歷史記錄也會被清除。

2)應用可設定

–企業可自行在企業號中可設定多個服務號,可連接不同的企業應用系統,只有授權的企業成員才能使用對應的服務號碼。

3)訊息無限制

–發送訊息無限制,並提供完善的管理介面及微信原生能力,以適應企業複雜、個人化的應用場景。

企業可以主動發送訊息給員工,訊息量不受限制

4)使用更便利

–企業號在微信中有統一的訊息入口,使用者可以更方便地管理企業號訊息。微信通訊錄也可以直接存取企業號中的應用程式。

 

2、企業號的管理介面內容

目前企業號的內容可以用下面的分層圖來展示,分別包含素材管理、被動回應訊息、通訊錄管理、自訂選單等內容,詳細可以看下面圖示。

C#开发微信门户及应用-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)

 

3、企業號訊息和事件的處理

企業號和公眾號一樣,可以分為訊息處理和事件處理,以下是他們兩種類型的處理作業,也就發送的訊息有文字訊息、圖片訊息、文件訊息、視訊訊息、語音訊息、地理文字訊息、圖文和多媒體訊息等。

事件處理主要是追蹤、取消追蹤事件,以及選單click類型和view類型兩種操作,還有就是地理位置上報事件等。

兩種類型的處理圖如下。

C#开发微信门户及应用-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)  

 

4、企業號訊息管理

在企業的管理後台,和公眾號一樣,可以看到對應資訊交流記錄,包括文字、圖片、地理位置等等,如下圖所示。

 C#开发微信门户及应用-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)

由於訊息分為幾種類型,包括文字(Text)、圖片(Image)、文件(File)、語音(Voice)、影片(Video)、圖文訊息等(News)、MpNews等。

因此我們需要分別對它們進行一定的定義和封裝處理,如下是它們的資訊物件設計圖。

 C#开发微信门户及应用-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)

 

企業號發送訊息的官方定義如下:

企業可以主動發訊息給員工,訊息量不受限制

呼叫介面時,使用Https協定、JSON封包格式,封包不需做加密處理

目前支援文字、圖片、語音、視訊、檔案、圖文等訊息類型。除了news類型,其它類型的消息可在發送時加上保密選項,保密消息會被打上水印,並且只有接收者才能閱讀。

 

我們以傳送的文字訊息為例進行說明,它的定義如下所示。

  • text訊息

{
   "touser": "UserID1|UserID2|UserID3",
   "toparty": " PartyID1 | PartyID2 ",
   "totag": " TagID1 | TagID2 ",
   "msgtype": "text",
   "agentid": "1",
   "text": {
       "content": "Holiday Request For Pony(http://www.php.cn/)"
   },
   "safe":"0"
}

 

topartytotagmsgtypeagentid可在應用程式的設定頁面查看content是訊息內容safe表示是否為保密,safe   其中每個訊息都會包含以下訊息所示,也就是它們共同的屬性:
    touser": "UserID1|UserID2|UserID3",   "toparty": " PartyID1 | PartyID2 ",   "totag": " TagID1 | TagID2 ",   "msgtype": "text",   "agentid": "1",
    /// <summary>
    /// 企业号发送消息的基础消息内容    /// </summary>
    public class CorpSendBase
    {      
        /// <summary>
        /// UserID列表(消息接收者,多个接收者用‘|’分隔)。特殊情况:指定为@all,则向关注该企业应用的全部成员发送        /// </summary>
        public string touser { get; set; }        /// <summary>
        /// PartyID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数        /// </summary>
        public string toparty { get; set; }        /// <summary>
        /// TagID列表,多个接受者用‘|’分隔。当touser为@all时忽略本参数        /// </summary>
        public string totag { get; set; }        /// <summary>
        /// 消息类型        /// </summary>
        public string msgtype { get; set; }        /// <summary>
        /// 企业应用的id,整型。可在应用的设置页面查看        /// </summary>
        public string agentid { get; set; }        /// <summary>
        /// 表示是否是保密消息,0表示否,1表示是,默认0        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]        public string safe { get; set; }

    }
參數 ,多個接收者以'|'分隔) 。特殊情況:指定為@all,則向關注該企業應用的全部成員發送
PartyID列表,多個接受者以‘|’分隔。當touser為@all時忽略本參數
TagID列表,多個接受者以‘|’分隔。當touser為@all時忽略此參數
訊息類型,此時固定為:text


    /// <summary>
    /// 企业号消息管理接口定义    /// </summary>
    public interface ICorpMessageApi
    {        
        /// <summary>
        /// 发送消息。        /// 需要管理员对应用有使用权限,对收件人touser、toparty、totag有查看权限,否则本次调用失败。        /// </summary>
        /// <param>
        /// <returns></returns>
        CommonResult SendMessage(string accessToken, CorpSendBase data);
    }


然後其他消息逐一繼承這個基類即可,如下所示。

最後會構成下面這個繼承關係圖。 

 


5、訊息介面的定義與實作 

 定義好相關的傳送物件後,我們就可以定義它的統一傳送介面了,如下圖所示。

C#开发微信门户及应用-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)

    /// <summary>
    /// 企业号消息管理实现类    /// </summary>
    public class CorpMessageApi : ICorpMessageApi
    {        /// <summary>
        /// 发送消息。        /// 需要管理员对应用有使用权限,对收件人touser、toparty、totag有查看权限,否则本次调用失败。        /// </summary>
        /// <param>
        /// <returns></returns>
        public CommonResult SendMessage(string accessToken, CorpSendBase data)
        {        
            CommonResult result = new CommonResult();            string urlFormat = "http://www.php.cn/{0}";            var url = string.Format(urlFormat, accessToken);            var postData = data.ToJson();            //数据不用加密发送
            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;
        }
    }</corpsendresult>

C#开发微信门户及应用-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)

最終,文字等類型的消息會根據介面定義進行實現,實現程式碼如下所示。

注意,傳送過程

不需要

呼叫加密類別來加密


        private void btnSendText_Click(object sender, EventArgs e)
        {            //发送文本内容
            ICorpMessageApi bll = new CorpMessageApi();

            CorpSendText text = new CorpSendText("API 中文测试(http://www.php.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("发送消息:{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))
            {                //发送图片内容
                ICorpMessageApi bll = new CorpMessageApi();

                CorpSendImage image = new CorpSendImage(image_mediaId);
                CommonResult result = bll.SendMessage(token, image);                if (result != null)
                {
                    Console.WriteLine("发送图片消息:{0} {1} {2}", image_mediaId, (result.Success ? "成功" : "失败"), result.ErrorMessage);
                }
            }
        }

6、訊息的發送操作和實際效果 定義好相應的發送對象後,我們就可以進行統一的訊息發送操作,包括文字、圖片、文件、語音類型的訊息,注意有些訊息是需要上傳到伺服器上,然後在根據mediaId進行發送出去的。

發送文字和圖片的操作代碼如下所示。


rrreee

最後在微信企業號上截圖效果如下所示,包括了文字測試、文件測試、圖文測試、語音測試均正常。

 


 更多C#開發微信入口網站及應用-微信企業號的訊息發送(文字、圖片、文件、語音、影片、圖文訊息等) 相關文章請關注PHP中文網!


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。