搜尋
首頁微信小程式微信開發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"
}

 

##safe否表示是否為保密訊息,0表示否,1表示是,預設0
參數 必須 說明
touser UserID清單(訊息接收者,多個接收者以'|'分隔) 。特殊情況:指定為@all,則向關注該企業應用的全部成員發送
toparty #否 PartyID列表,多個接受者用'|'分隔。當touser為@all時忽略此參數
totag TagID列表,多個接受者以‘|’分隔。當touser為@all時忽略此參數
msgtype 訊息類型,此時固定為:text
agentid 企業應用程式的id,整數型。可在應用程式的設定頁面查看
content 訊息內容


 

 

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

    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; }

    }

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

C#開發微信入口網站及應用微信企業號的訊息傳送(文字、圖片、文件、語音、影片、圖文訊息等)

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

 

C#開發微信入口網站及應用微信企業號的訊息傳送(文字、圖片、文件、語音、影片、圖文訊息等)

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

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

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

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

注意,發送過程不需要呼叫加密類別進行加密

    /// <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>

6、訊息的傳送操作和實際效果

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

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

        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);
                }
            }
        }

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

 C#開發微信入口網站及應用微信企業號的訊息傳送(文字、圖片、文件、語音、影片、圖文訊息等)C#開發微信入口網站及應用微信企業號的訊息傳送(文字、圖片、文件、語音、影片、圖文訊息等)

 更多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脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中