溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

C#怎么微信企業(yè)號的消息發(fā)送功能

發(fā)布時間:2021-09-01 21:03:25 來源:億速云 閱讀:450 作者:chen 欄目:移動開發(fā)

本篇內(nèi)容主要講解“C#怎么微信企業(yè)號的消息發(fā)送功能”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“C#怎么微信企業(yè)號的消息發(fā)送功能”吧!

1、企業(yè)號特點

對于企業(yè)號,有以下一些特點:

1)關(guān)注更安全

–只有企業(yè)通訊錄的成員才能關(guān)注企業(yè)號,分級管理員、保密消息等各種特性確保企業(yè)內(nèi)部信息的安全。

企業(yè)可以設(shè)置自行驗證關(guān)注者身份,進行二次安全驗證,保證企業(yè)信息使用和傳遞安全。

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

2)應(yīng)用可配置

–企業(yè)可自行在企業(yè)號中可配置多個服務(wù)號,可以連接不同的企業(yè)應(yīng)用系統(tǒng),只有授權(quán)的企業(yè)成員才能使用相應(yīng)的服務(wù)號。

3)消息無限制

–發(fā)送消息無限制,并提供完善的的管理接口及微信原生能力,以適應(yīng)企業(yè)復(fù)雜、個性化的應(yīng)用場景。

企業(yè)可以主動發(fā)消息給員工,消息量不受限制。

4)使用更便捷

–企業(yè)號在微信中有統(tǒng)一的消息入口,用戶可以更方便地管理企業(yè)號消息。微信通訊錄也可以直接訪問企業(yè)號中的應(yīng)用。

2、企業(yè)號的管理接口內(nèi)容

目前企業(yè)號的內(nèi)容可以用下面的分層圖來展示,分別包含素材管理、被動響應(yīng)消息、通訊錄管理、自定義菜單等內(nèi)容,詳細(xì)可以看下面圖示。

C#怎么微信企業(yè)號的消息發(fā)送功能

3、企業(yè)號消息和事件的處理

企業(yè)號和公眾號一樣,可以分為消息處理和事件處理,下面是他們兩種類型的處理操作,也就發(fā)送的消息有文本消息、圖片消息、文件消息、視頻消息、語音消息、地理文字消息、圖文和多媒體消息等。

事件處理主要就是關(guān)注、取消關(guān)注事件,以及菜單click類型和view類型兩種操作,還有就是地理位置上報事件等。

兩種類型的處理圖如下所示。

C#怎么微信企業(yè)號的消息發(fā)送功能

4、企業(yè)號消息管理

在企業(yè)的管理后臺,和公眾號一樣,可以看到對應(yīng)信息交流記錄,包括文字、圖片、地理位置等等,如下所示。

C#怎么微信企業(yè)號的消息發(fā)送功能

由于消息分為幾種類型,包括文本(Text)、圖片(Image)、文件(File)、語音(Voice)、視頻(Video)、圖文消息等(News)、MpNews等。

因此我們需要分別對它們進行一定的定義和封裝處理,如下是它們的信息對象設(shè)計圖。

C#怎么微信企業(yè)號的消息發(fā)送功能

企業(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.php.cn/)"
   },
   "safe":"0"
}
參數(shù)必須說明
touserUserID列表(消息接收者,多個接收者用‘|’分隔)。特殊情況:指定為@all,則向關(guān)注該企業(yè)應(yīng)用的全部成員發(fā)送
topartyPartyID列表,多個接受者用‘|’分隔。當(dāng)touser為@all時忽略本參數(shù)
totagTagID列表,多個接受者用‘|’分隔。當(dāng)touser為@all時忽略本參數(shù)
msgtype消息類型,此時固定為:text
agentid企業(yè)應(yīng)用的id,整型??稍趹?yīng)用的設(shè)置頁面查看
content消息內(nèi)容
safe表示是否是保密消息,0表示否,1表示是,默認(rèn)0

其中每種消息都會包含以下消息所示,也就是它們共同的屬性:

    touser": "UserID1|UserID2|UserID3",   "toparty": " PartyID1 | PartyID2 ",   "totag": " TagID1 | TagID2 ",   "msgtype": "text",   "agentid": "1",

因此我們可以定義一個基類用來方便承載這些共同的信息。

    /// <summary>
    /// 企業(yè)號發(fā)送消息的基礎(chǔ)消息內(nèi)容    /// </summary>
    public class CorpSendBase
    {      
        /// <summary>
        /// UserID列表(消息接收者,多個接收者用‘|’分隔)。特殊情況:指定為@all,則向關(guān)注該企業(yè)應(yīng)用的全部成員發(fā)送        /// </summary>
        public string touser { get; set; }        /// <summary>
        /// PartyID列表,多個接受者用‘|’分隔。當(dāng)touser為@all時忽略本參數(shù)        /// </summary>
        public string toparty { get; set; }        /// <summary>
        /// TagID列表,多個接受者用‘|’分隔。當(dāng)touser為@all時忽略本參數(shù)        /// </summary>
        public string totag { get; set; }        /// <summary>
        /// 消息類型        /// </summary>
        public string msgtype { get; set; }        /// <summary>
        /// 企業(yè)應(yīng)用的id,整型??稍趹?yīng)用的設(shè)置頁面查看        /// </summary>
        public string agentid { get; set; }        /// <summary>
        /// 表示是否是保密消息,0表示否,1表示是,默認(rèn)0        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]        public string safe { get; set; }

    }

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

C#怎么微信企業(yè)號的消息發(fā)送功能

最終會構(gòu)成下面這個繼承關(guān)系圖。

C#怎么微信企業(yè)號的消息發(fā)送功能

5、消息接口的定義和實現(xiàn)

定義好相關(guān)的發(fā)送對象后,我們就可以定義它的統(tǒng)一發(fā)送接口了,如下所示。

    /// <summary>
    /// 企業(yè)號消息管理接口定義    /// </summary>
    public interface ICorpMessageApi
    {        
        /// <summary>
        /// 發(fā)送消息。        /// 需要管理員對應(yīng)用有使用權(quán)限,對收件人touser、toparty、totag有查看權(quán)限,否則本次調(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ā)送消息。        /// 需要管理員對應(yīng)用有使用權(quán)限,對收件人touser、toparty、totag有查看權(quán)限,否則本次調(diào)用失敗。        /// </summary>
        /// <param name="accessToken"></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();            //數(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ā)送操作和實際效果

定義好相應(yīng)的發(fā)送對象后,我們就可以進行統(tǒng)一的消息發(fā)送操作,包括文本、圖片、文件、語音等等類型的消息,注意有些消息是需要上傳到服務(wù)器上,然后在根據(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.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("發(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);
                }
            }
        }

到此,相信大家對“C#怎么微信企業(yè)號的消息發(fā)送功能”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI