国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
1、微信語(yǔ)音接口的定義0
2、語(yǔ)音的處理操作
Rumah applet WeChat pembangunan WeChat C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理

C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理

Feb 17, 2017 pm 03:18 PM

我們知道,微信最開(kāi)始就是做語(yǔ)音聊天而使得其更加流行的,因此語(yǔ)音的識(shí)別處理自然也就成為微信交流的一個(gè)重要途徑,微信的開(kāi)發(fā)接口,也提供了對(duì)語(yǔ)音的消息請(qǐng)求處理。本文主要介紹如何利用語(yǔ)音的識(shí)別,對(duì)C#開(kāi)發(fā)的微信門(mén)戶應(yīng)用的整個(gè)事件鏈的處理操作,使得在我們的微信賬號(hào)里面,更加方便和多元化對(duì)用戶的輸入進(jìn)行處理。

1、微信語(yǔ)音接口的定義0

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

語(yǔ)音的消息格式如下所示。

<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 開(kāi)發(fā)者微信號(hào)
FromUserName 發(fā)送方帳號(hào)(一個(gè)OpenID)
CreateTime 消息創(chuàng)建時(shí)間 (整型)
MsgType 語(yǔ)音為voice
MediaId 語(yǔ)音消息媒體id,可以調(diào)用多媒體文件下載接口拉取數(shù)據(jù)。
Format 語(yǔ)音格式,如amr,speex等
MsgID 消息id,64位整型

根據(jù)以上微信接口的定義,我們可以定義一個(gè)實(shí)體類來(lái)對(duì)消息的傳遞進(jìn)行處理,如下所示。

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

????}

我們看到,這里我們最感興趣的是語(yǔ)音的識(shí)別結(jié)果,也就是Recognition的字段,這個(gè)就是微信服務(wù)器自動(dòng)根據(jù)用戶的語(yǔ)音轉(zhuǎn)換過(guò)來(lái)的內(nèi)容,我測(cè)試過(guò),識(shí)別率還是非常高的。

這個(gè)實(shí)體類,在整個(gè)微信應(yīng)用的消息傳遞中的關(guān)系如下所示:

C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理

2、語(yǔ)音的處理操作

明確了上面的語(yǔ)音對(duì)象實(shí)體,我們就可以看看它們之間是如何處理的。

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

C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理

其中我們來(lái)看看語(yǔ)音的處理操作,我的代碼處理邏輯如下所示。

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

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

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

C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理

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

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

????????///?<summary>
????????///?如果用戶用語(yǔ)音讀出菜單的內(nèi)容,那么我們應(yīng)該先根據(jù)菜單對(duì)應(yīng)的事件觸發(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?如果找到菜單對(duì)象的處理????????????????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
????????????????{????????????????????//由于無(wú)法自動(dòng)切換到連接,????????????????????//轉(zhuǎn)換為連接文本供用戶進(jìn)入
????????????????????string?content?=?string.Format("請(qǐng)單擊鏈接進(jìn)入<a href=\"{0}\">{1}</a>?",?menuInfo.Url,?menuInfo.Name);

????????????????????ResponseText?textInfo?=?new?ResponseText(info);
????????????????????textInfo.Content?=?content;????????????????????xml?=?textInfo.ToXml();
????????????????}?
????????????????#endregion
????????????}????????????else
????????????{????????????????//交給事件機(jī)制處理
????????????????if?(string.IsNullOrEmpty(xml))
????????????????{
????????????????????xml?=?HandleText(info,?voiceText);
????????????????}
????????????}????????????//最后如果沒(méi)有處理到,那么提示用戶的語(yǔ)音內(nèi)容
????????????if?(string.IsNullOrEmpty(xml))
????????????{
????????????????ResponseText?textInfo?=?new?ResponseText(info);
????????????????textInfo.Content?=?string.Format("非常抱歉,您輸入的語(yǔ)音內(nèi)容沒(méi)有找到對(duì)應(yīng)的處理方式。您的語(yǔ)音內(nèi)容為:{0}",?voiceText);????????????????xml?=?textInfo.ToXml();
????????????}????????????return?xml;
????????}

微信門(mén)戶測(cè)試界面效果如下所示。

C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理 ? ? ? ? ? ? ? ? ?C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理 ? ?

?C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理

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

C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理

?當(dāng)然,微信后臺(tái)的管理界面,也能夠查到相應(yīng)的語(yǔ)音記錄,界面如下所示。

C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理

以上就是我對(duì)微信語(yǔ)音的消息定義和事件處理的邏輯,其實(shí)語(yǔ)音是一個(gè)重要的輸入,如果正確的識(shí)別內(nèi)容,比手工輸入的效果更好,給用戶提供另外一種高效的輸入和事件處理操作。

這樣的處理模式,能夠使得我們整個(gè)微信門(mén)戶框架,不管是對(duì)于用戶的語(yǔ)音輸入,還是文本輸入,還是菜單事件的處理,都可以融為一體,實(shí)現(xiàn)更加完美的銜接。

更多C#開(kāi)發(fā)微信門(mén)戶及應(yīng)用-使用語(yǔ)音處理?相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276