<del id="d4fwx"><form id="d4fwx"></form></del>
      <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

            <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
          • C#開發(fā)微信門戶及應用-使用語音處理-創(chuàng)新互聯(lián)

            小編給大家分享一下C#開發(fā)微信門戶及應用-使用語音處理 ,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

            專注于為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)膠州免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了1000多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。

            1、微信語音接口的定義0

            微信的API這么定義語音的識別的:開通語音識別功能,用戶每次發(fā)送語音給公眾號時,微信會在推送的語音消息XML數(shù)據(jù)包中,增加一個Recongnition字段。

            語音的消息格式如下所示。

            <xml><ToUserName><![CDATA[toUser]]></ToUserName><FromUserName><![CDATA[fromUser]]></FromUserName><CreateTime>1357290913</CreateTime><MsgType><![CDATA[voice]]></MsgType><MediaId><![CDATA[media_id]]></MediaId><Format><![CDATA[Format]]></Format><MsgId>1234567890123456</MsgId></xml>
            參數(shù)描述
            ToUserName開發(fā)者微信號
            FromUserName發(fā)送方帳號(一個OpenID)
            CreateTime消息創(chuàng)建時間 (整型)
            MsgType語音為voice
            MediaId語音消息媒體id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
            Format語音格式,如amr,speex等
            MsgID消息id,64位整型

            根據(jù)以上微信接口的定義,我們可以定義一個實體類來對消息的傳遞進行處理,如下所示。

                /// <summary>
                /// 接收的語音消息    /// </summary>
                [System.Xml.Serialization.XmlRoot(ElementName = "xml")]    public class RequestVoice : BaseMessage
                {        public RequestVoice()
                    {            this.MsgType = RequestMsgType.Voice.ToString().ToLower();
                    }        /// <summary>
                    /// 語音格式,如amr,speex等        /// </summary>
                    public string Format { get; set; }        /// <summary>
                    /// 語音消息媒體id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。        /// </summary>
                    public string MediaId { get; set; }  
                    /// <summary>
                    /// 消息ID        /// </summary>
                    public Int64 MsgId { get; set; }        /// <summary>
                    /// 語音識別結果,UTF8編碼        /// </summary>
                    public string Recognition  { get; set; }
            
                }

            我們看到,這里我們最感興趣的是語音的識別結果,也就是Recognition的字段,這個就是微信服務器自動根據(jù)用戶的語音轉(zhuǎn)換過來的內(nèi)容,我測試過,識別率還是非常高的。

            這個實體類,在整個微信應用的消息傳遞中的關系如下所示:

            C#開發(fā)微信門戶及應用-使用語音處理

            2、語音的處理操作

            明確了上面的語音對象實體,我們就可以看看它們之間是如何處理的。

            微信消息的處理邏輯如下圖所示。

            C#開發(fā)微信門戶及應用-使用語音處理

            其中我們來看看語音的處理操作,我的代碼處理邏輯如下所示。

                    /// <summary>
                    /// 對語音請求信息進行處理        /// </summary>
                    /// <param name="info">語音請求信息實體</param>
                    /// <returns></returns>
                    public string HandleVoice(Entity.RequestVoice info)
                    {            string xml = "";            // 開通語音識別功能,用戶每次發(fā)送語音給公眾號時,            // 微信會在推送的語音消息XML數(shù)據(jù)包中,增加一個Recongnition字段。
                        if (!string.IsNullOrEmpty(info.Recognition))
                        {
                            TextDispatch dispatch = new TextDispatch();
                            xml = dispatch.HandleVoiceText(info, info.Recognition);
                        }            else
                        {
                            xml = "";
                        }            return xml;
                    }

            在這里,我先看看,是否獲得了微信的語音識別結果,如果獲得,那么這個時候,就是和處理用戶文本輸入的操作差不多了,因此把它轉(zhuǎn)給TextDispatch的處理類進行處理。

            其中這里面的處理邏輯如下所示。

            C#開發(fā)微信門戶及應用-使用語音處理

            首先我根據(jù)識別結果,尋找是否用戶讀出了微信門戶的菜單名稱,如果根據(jù)語音結果找到對應的菜單記錄,那么我們執(zhí)行菜單事件(如果是URL的View類型菜單,我們沒辦法重定向到指定的鏈接,因此給出一個鏈接文本提示,給用戶單擊進入;如果沒有找到菜單記錄,那么我們就把語音識別結果作為一般的事件進行處理,如果事件邏輯沒有處理,那么我們最后給出一個默認的語音應答提示結果就可以了。

            具體的處理代碼如下所示。

                    /// <summary>
                    /// 如果用戶用語音讀出菜單的內(nèi)容,那么我們應該先根據(jù)菜單對應的事件觸發(fā),最后再交給普通事件處理        /// </summary>
                    /// <param name="info"></param>
                    /// <returns></returns>
                    public string HandleVoiceText(BaseMessage info, string voiceText)
                    {            string xml = "";
                        MenuInfo menuInfo = BLLFactory<Menu>.Instance.FindByName(voiceText);            if (menuInfo != null)
                        {                #region 如果找到菜單對象的處理                if (menuInfo.Type == "click")
                            {                    //模擬單擊事件
                                RequestEventClick eventInfo = new RequestEventClick();
                                eventInfo.CreateTime = info.CreateTime;
                                eventInfo.EventKey = menuInfo.Key;
                                eventInfo.FromUserName = info.FromUserName;
                                eventInfo.ToUserName = info.ToUserName;
            
                                xml = base.DealEvent(eventInfo, eventInfo.EventKey);
                            }                else
                            {                    //由于無法自動切換到連接,                    //轉(zhuǎn)換為連接文本供用戶進入
                                string content = string.Format("請單擊鏈接進入<a href=\"{0}\">{1}</a> ", menuInfo.Url, menuInfo.Name);
            
                                ResponseText textInfo = new ResponseText(info);
                                textInfo.Content = content;                    xml = textInfo.ToXml();
                            } 
                            #endregion
                        }            else
                        {                //交給事件機制處理
                            if (string.IsNullOrEmpty(xml))
                            {
                                xml = HandleText(info, voiceText);
                            }
                        }            //最后如果沒有處理到,那么提示用戶的語音內(nèi)容
                        if (string.IsNullOrEmpty(xml))
                        {
                            ResponseText textInfo = new ResponseText(info);
                            textInfo.Content = string.Format("非常抱歉,您輸入的語音內(nèi)容沒有找到對應的處理方式。您的語音內(nèi)容為:{0}", voiceText);                xml = textInfo.ToXml();
                        }            return xml;
                    }

            微信門戶測試界面效果如下所示。

            C#開發(fā)微信門戶及應用-使用語音處理                C#開發(fā)微信門戶及應用-使用語音處理

            C#開發(fā)微信門戶及應用-使用語音處理

            為了方便對客戶會話的記錄,我的微信門戶后臺,會記錄用戶的語音輸入內(nèi)容,如下所示。

            C#開發(fā)微信門戶及應用-使用語音處理

            當然,微信后臺的管理界面,也能夠查到相應的語音記錄,界面如下所示。

            C#開發(fā)微信門戶及應用-使用語音處理

            以上是“C#開發(fā)微信門戶及應用-使用語音處理 ”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

            名稱欄目:C#開發(fā)微信門戶及應用-使用語音處理-創(chuàng)新互聯(lián)
            文章位置:http://www.jbt999.com/article26/shicg.html

            成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設響應式網(wǎng)站、靜態(tài)網(wǎng)站、品牌網(wǎng)站制作

            廣告

            聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

            成都網(wǎng)站建設公司

              <del id="d4fwx"><form id="d4fwx"></form></del>
              <del id="d4fwx"><form id="d4fwx"></form></del><del id="d4fwx"><form id="d4fwx"></form></del>

                    <code id="d4fwx"><abbr id="d4fwx"></abbr></code>
                  • 欧美三级乱抡 | 欧美精品videos | 中国精品久久久久久 | 99re视频在线观看 | 大香蕉在线伊 |