程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#微信開發之接納 / 前往文本音訊

C#微信開發之接納 / 前往文本音訊

編輯:C#入門知識

C#微信開發之接納 / 前往文本音訊。本站提示廣大學習愛好者:(C#微信開發之接納 / 前往文本音訊)文章只能為提供參考,不一定能成為您想要的結果。以下是C#微信開發之接納 / 前往文本音訊正文


接納 / 前往文本音訊

①接納/前往文本音訊原理闡明

當普通微信譽戶向大眾賬號發音訊時,微服氣務器將POST音訊的XML數據包到開發者填寫的URL上,著手開發之前先行閱讀微信大眾平台接納普通音訊微信開發文檔,對微信的這種音訊處置機制有一定理解之後再著手開發(微信開發接納普通音訊開發文檔)

留意點:

1、關於重試的音訊排重,引薦運用msgid排重。

2、微服氣務器在五秒內收不到呼應會斷掉銜接,並且重新發起懇求,總共重試三次。假設服務器無法保證在五秒內處置並回復,可以直接回復空串,微服氣務器不會對此作任何處置,並且不會發起重試。概況請見“發送音訊-主動回復音訊”。

3、為了保證更高的平安保證,開發者可以在大眾平台官網的開發者中心處設置音訊加密。開啟加密後,用戶發來的音訊會被加密,大眾號主動回復用戶的音訊也需求加密(但開發者經過客服接口等API調用方式向用戶發送音訊,則不受影響)。關於音訊加解密的詳細闡明,請見“音訊加解密闡明”。

 POST到開發者服務器上邊的XML格式為:

 <xml>
 <ToUserName><![CDATA[toUser]]></ToUserName>
 <FromUserName><![CDATA[fromUser]]></FromUserName> 
 <CreateTime>1348831860</CreateTime>
 <MsgType><![CDATA[text]]></MsgType>
 <Content><![CDATA[this is a test]]></Content>
 <MsgId>1234567890123456</MsgId>
 </xml>

 接納音訊數據包參數闡明:

 前往文本音訊的XML格式:

 <xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>

前往文本音訊數據包參數闡明:

②接納/前往文本音訊代碼完成

開發者在自己服務器上邊接納微服氣務器POST過去的XML數據包接納代碼如下:

if(IsPostBack)
{ 
  //*********************************自動應對代碼塊*********************************
  string postString = string.Empty;
  using (Stream stream = HttpContext.Current.Request.InputStream)
  {
    Byte[] postBytes = new Byte[stream.Length];
    stream.Read(postBytes, 0, (Int32)stream.Length);
    //接納的音訊為GBK格式
    postString = Encoding.GetEncoding("GBK").GetString(postBytes);
    string responseContent = help.ReturnMessage(postString );
    //前往的音訊為UTF-8格式
    HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
    HttpContext.Current.Response.Write(responseContent);
  }
  //********************************自動應對代碼塊end*******************************
}

留意:接納音訊的時分要將音訊格式轉化為“GBK”格式,否則後邊停止音訊解析的時分沒方法停止無效解析。

ReturnMessage()處置辦法代碼如下:

/// <summary>
/// 一致全局前往音訊處置辦法
/// </summary>
/// <param name="postStr"></param>
/// <returns></returns>
public string ReturnMessage(string postStr)
{
  string responseContent = "";
  XmlDocument xmldoc = new XmlDocument();
  xmldoc.Load(new System.IO.MemoryStream(System.Text.Encoding.GetEncoding("GB2312").GetBytes(postStr)));
  XmlNode MsgType = xmldoc.SelectSingleNode("/xml/MsgType");
  if (MsgType != null)
  {
    switch (MsgType.InnerText)
    {
      case "event":
        responseContent = EventHandle(xmldoc);//菜單事情處置
        break;
      case "text":
        responseContent = TextHandle(xmldoc);//文本音訊處置
        break;
      default:
        break;
   }
  }
  return responseContent;
}

TextHandle(xmldoc)處置辦法代碼如下:

 /// <summary>
/// 承受文本音訊並回復自定義音訊
/// </summary>
/// <param name="xmldoc"></param>
/// <returns></returns>
public string TextHandle(XmlDocument xmldoc)
{
 string responseContent = "";
 XmlNode ToUserName = xmldoc.SelectSingleNode("/xml/ToUserName");
 XmlNode FromUserName = xmldoc.SelectSingleNode("/xml/FromUserName");
 XmlNode Content = xmldoc.SelectSingleNode("/xml/Content");
 if (Content != null)
 {
   if (Content.InnerText == "指定回復音訊的自定義文本")
   {
     responseContent = string.Format(XMLTemplate.Message_Text,
       FromUserName.InnerText,
       ToUserName.InnerText,
       DateTime.Now.Ticks,
       "自定義回復音訊內容");
   }
 }
 return responseContent;
}

到這裡完成功用的代碼演示已終了,後邊其他的音訊處置形式也是依據這種方式在做交互,比方:接納/回復文本音訊、圖片音訊、語音音訊、視頻音訊、小視頻音訊、天文地位音訊、鏈接音訊等都可以參照以上代碼停止功用完成。

以上就是本文的全部內容,希望本文的內容對大家的學習或許任務能帶來一定的協助,同時也希望多多支持!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved