1. 程式人生 > >使用.net 操作 微信公眾平臺 —— 回覆使用者訊息 —— 回覆文字訊息

使用.net 操作 微信公眾平臺 —— 回覆使用者訊息 —— 回覆文字訊息

目錄

  1. 使用.net 操作 微信公眾平臺 —— 接入

  2. 使用.net 操作 微信公眾平臺 —— 生成微信選單

  3. 使用.net 操作 微信公眾平臺 —— 接收並回複用戶訊息

    3.1 使用.net 操作 微信公眾平臺 —— 接收使用者操作 —— 詳細解析

        3.1.1 使用.net 操作 微信公眾平臺 —— 接收使用者操作 —— 關注/取消關注 公眾號

        3.1.2 

使用.net 操作 微信公眾平臺 —— 接收使用者操作 —— 接收使用者傳送的訊息

    3.2 使用.net 操作 微信公眾平臺 —— 回覆使用者訊息

        3.2.1 使用.net 操作 微信公眾平臺 —— 回覆使用者訊息 —— 回覆文字訊息

        3.2.2 使用.net 操作 微信公眾平臺 —— 回覆使用者訊息 —— 回覆圖片訊息

        3.2.3 使用.net 操作 微信公眾平臺 —— 回覆使用者訊息 —— 回覆圖文訊息

  4. 使用.net 操作 微信公眾平臺 —— 第三方登入​​​​​​​


 工具


回覆文字訊息

<xml>
    <ToUserName>< ![CDATA[toUser] ]></ToUserName>
    <FromUserName>< ![CDATA[fromUser] ]></FromUserName>
    <CreateTime>12345678</CreateTime>
    <MsgType>< ![CDATA[text] ]></MsgType>
    <Content>< ![CDATA[你好] ]></Content>
</xml>
引數 是否必須 描述
ToUserName 接收方帳號(收到的OpenID)
FromUserName 開發者微訊號
CreateTime 訊息建立時間 (整型)
MsgType text
Content 回覆的訊息內容(換行:在content中能夠換行,微信客戶端就支援換行顯示)

被動回覆

/// <summary>
/// 傳送文字訊息 - 被動訊息
/// </summary>
/// <param name="msg">微信回覆的文字</param>
/// <returns></returns>
private void SendText(string msg)
{
    int nowtime = ConvertDateTimeInt(DateTime.Now); // 檢視工具 DateTime轉為微信所需要的時間型別
    string resxml = "<xml>"
    resxml += "    <ToUserName><![CDATA[" + xmlMsg.FromUserName + "]]></ToUserName>"
    resxml += "    <FromUserName><![CDATA[" + xmlMsg.ToUserName + "]]></FromUserName>"
    resxml += "    <CreateTime>" + nowtime + "</CreateTime>"
    resxml += "    <MsgType><![CDATA[text]]></MsgType>"
    resxml += "    <Content><![CDATA[" + msg + "]]></Content>"
    resxml += "</xml>";
    Response.Write(resxml);
    Response.End();
}

客服訊息

/// <summary>
/// 傳送文字訊息 - 客服訊息
/// </summary>
/// <param name="token">工具 生成AccessToken</param>
/// <param name="msg">微信回覆的文字</param>
/// <returns></returns>
private void SendTextCase(string token , string msg)
{
    string url = string.Format("https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={0}", token);

    JObject data = new JObject();
    data.Add("touser", xmlMsg.FromUserName);
    data.Add("msgtype", "text");
    data.Add("text", JObject.FromObject(new
    {
        content = msg
    }));

    var res = HttpPost(data.ToString(), url);
}

/// <summary>
/// 遠端獲取資料(POST)
/// </summary>
/// <param name="param"></param>
/// <param name="url"></param>
/// <returns></returns>
private dynamic HttpPost(string param, string url)
{
    //轉換輸入引數的編碼型別,獲取bytep[]陣列 
    byte[] byteArray = Encoding.UTF8.GetBytes(param);
    //初始化新的webRequst
    //1. 建立httpWebRequest物件
    HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url));
    //2. 初始化HttpWebRequest物件
    webRequest.Method = "POST";
    webRequest.ContentType = "application/json";
    webRequest.ContentLength = byteArray.Length;
    Stream newStream = webRequest.GetRequestStream();
    newStream.Write(byteArray, 0, byteArray.Length);
    newStream.Close();
    //4. 讀取伺服器的返回資訊
    HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();
    StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
    string srend = sr.ReadToEnd();
    sr.Close();
    response.Close();
    return srend;
}

msg訊息處理

/// <summary>
/// 文字處理
/// </summary>
/// <returns></returns>
private string getText()
{
    StringBuilder retsb = new StringBuilder(200);
    retsb.Append("接收到的文字訊息為" + xmlMsg.Content + "\n");
    retsb.Append("文字訊息傳送完畢");
    return retsb.ToString();
}