日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

微信公众号 语音转文字api_快速上手——微信公众号开发接入

發(fā)布時(shí)間:2023/12/9 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微信公众号 语音转文字api_快速上手——微信公众号开发接入 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
這個(gè)系列會(huì)介紹如何快速上手進(jìn)行公眾號(hào)、WEB/小程序、釘釘?shù)绕脚_(tái)的開(kāi)發(fā)接入。我肯定不敢說(shuō)自己寫的東西比騰訊、阿里官方文檔更好,而且本身我也對(duì)這些開(kāi)發(fā)并沒(méi)有了解得有多深入,只是希望可以篩繁就簡(jiǎn),盡自己可能做一系列可以快速上手,同時(shí)也能為大家降低試錯(cuò)成本的文檔。由于水平有限,錯(cuò)誤和疏漏再所難免,歡迎討論和指正。從微信服務(wù)的業(yè)務(wù)結(jié)構(gòu)上來(lái)講,訂閱號(hào)和服務(wù)號(hào)屬于同一類應(yīng)用,小程序、WEB屬于另一類應(yīng)用。前一類應(yīng)用關(guān)注的是在微信公眾號(hào)中,訪客與公眾號(hào)本身的互動(dòng)。普通的公眾號(hào)工作流程是:信息發(fā)到公眾號(hào),公眾號(hào)后臺(tái)對(duì)消息進(jìn)行處理,并返回給用戶。接入開(kāi)發(fā)以后,不同的地方在于消息不再由公眾號(hào)后臺(tái)處理,而是由第三方web后端來(lái)處理:公眾號(hào)收到消息 ,轉(zhuǎn)發(fā)到指定URL,由第三方web后端對(duì)消息進(jìn)行處理,進(jìn)入業(yè)務(wù)流程,完成后返回消息,最終由公眾號(hào)后臺(tái)將后端返回的消息推送給客戶。除了消息、事件通知類的業(yè)務(wù)之外,系統(tǒng)相關(guān)的功能由后端應(yīng)用向公眾平臺(tái)api發(fā)起相應(yīng)的請(qǐng)求來(lái)實(shí)現(xiàn)(例如獲取accesstoken、菜單管理等功能)。WEB/小程序應(yīng)用屬于基于微信平臺(tái)的擴(kuò)展應(yīng)用,由項(xiàng)目本身的前端提供交互,微信服務(wù)器只提供鑒權(quán)、功能服務(wù)的接口。小程序項(xiàng)目的前端與后端完全分離,前端代碼直接托管在微信服務(wù)器,后端自行部署在自己的服務(wù)器;而微信web應(yīng)用前后端均需要自行部署。

資源

  • 公眾號(hào)開(kāi)發(fā)文檔
    https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

  • 小程序開(kāi)發(fā)文檔
    https://developers.weixin.qq.com/miniprogram/dev/framework/

  • 消息加解密說(shuō)明

    https://developers.weixin.qq.com/doc/oplatform/Third-party_Platforms/Message_Encryption/Message_encryption_and_decryption.html

公眾號(hào)開(kāi)發(fā)接入

????公眾號(hào)開(kāi)發(fā)最根本的業(yè)務(wù)邏輯就是接收消息、處理消息,與公眾號(hào)平臺(tái)建立聯(lián)系的憑據(jù)就是公眾號(hào)后臺(tái)設(shè)置的服務(wù)器URL,一個(gè)公眾號(hào)項(xiàng)目需要實(shí)現(xiàn)的功能入口全在這個(gè)URL上,可以按自己需求或喜好為公眾號(hào)寫一個(gè)獨(dú)立的WEB后端應(yīng)用,也可以將公眾號(hào)后端服務(wù)作為一個(gè)功能模塊,放到某一個(gè)網(wǎng)站中。

????*?除了消息處理接口,還需要準(zhǔn)備一個(gè)接入驗(yàn)證的接口,公眾號(hào)配置完成后,會(huì)發(fā)送驗(yàn)證消息對(duì)服務(wù)器URL進(jìn)行有效性驗(yàn)證,該過(guò)程只在接入時(shí)使用,一旦接入就再也用不到了。

????在公眾號(hào)后臺(tái)配置好IP白名單、服務(wù)器地址、令牌、消息加解密密鑰,再加上系統(tǒng)分配的開(kāi)發(fā)者ID和開(kāi)發(fā)者密碼,就可以進(jìn)行公眾號(hào)開(kāi)發(fā)了。

????其中服務(wù)器地址要求HTTP/HTTPS標(biāo)準(zhǔn)端口,這就有兩個(gè)選擇:備案過(guò)的國(guó)內(nèi)服務(wù)器,或無(wú)需備案的國(guó)外服務(wù)器(從網(wǎng)絡(luò)穩(wěn)定性上講,有條件的話,盡量使用備案過(guò)的國(guó)內(nèi)服務(wù)器)。這一項(xiàng)要求比WEB/小程序開(kāi)發(fā)要寬松,后者不僅要求使用80/443,而且要求域名必須備案,也就是國(guó)外服務(wù)器無(wú)法使用。

0.?超時(shí)

公眾號(hào)發(fā)往web后端的請(qǐng)求超時(shí)時(shí)間是5秒,一旦連續(xù)超時(shí)3次,本次請(qǐng)求即視為失敗。為了提高穩(wěn)定性,需要選擇響應(yīng)更快的服務(wù)器(一般而言,國(guó)內(nèi)服務(wù)器響應(yīng)速度遠(yuǎn)快于國(guó)外服務(wù)器),同時(shí)需要減少業(yè)務(wù)的等待時(shí)間(如果業(yè)務(wù)時(shí)間過(guò)長(zhǎng),可先返回響應(yīng),將業(yè)務(wù)放到后臺(tái)慢慢處理)。

1.?接入驗(yàn)證

基本配置頁(yè)面中,填寫完服務(wù)器地址、令牌、消息加解密密鑰,并點(diǎn)擊保存時(shí),公眾平臺(tái)會(huì)主動(dòng)向服務(wù)器地址發(fā)送一個(gè)GET請(qǐng)求進(jìn)行接入驗(yàn)證,這個(gè)驗(yàn)證包含參數(shù):簽名signature、時(shí)間戳timestamp、隨機(jī)數(shù)nonce、隨機(jī)字符串echostr。這就是后端需要實(shí)現(xiàn)的第一個(gè)接口——接入驗(yàn)證:接受微信服務(wù)器GET請(qǐng)求,對(duì)請(qǐng)求中的參數(shù)進(jìn)行校驗(yàn),比對(duì)signature與校驗(yàn)結(jié)果是否一致,如果一致,證明請(qǐng)求來(lái)源于公眾平臺(tái),此時(shí)將echostr原值返回,一旦微信服務(wù)器收到返回值,即視為通過(guò)驗(yàn)證,至此,接入就完成了。校驗(yàn)算法是:timestamp、nonce、token進(jìn)行字典序排序并拼接,對(duì)拼接結(jié)果取sha1。public IActionResult Index() string token = WXToken; string timestamp = Request.Query["timestamp"]; string nonce = Request.Query["nonce"]; string signature = Request.Query["signature"]; string[] plain = { token, timestamp, nonce }; string echostr = Request.Query["echostr"]; Array.Sort(plain); using SHA1CryptoServiceProvider sha = new SHA1CryptoServiceProvider(); string sig2 = BitConverter.ToString(sha.ComputeHash(Encoding.UTF8.GetBytes(string.Join("", plain)))).Replace("-", "").ToLower(); if (sig2 == signature) { return Content(echostr); } else { return Content("SIGNATURE_NOT_MATCH"); }}2.?交互業(yè)務(wù)

交互,是指用戶在公眾號(hào)界面的所有操作,包含關(guān)注/取消關(guān)注公眾號(hào),發(fā)送文字、圖片、語(yǔ)音留言消息,點(diǎn)擊菜單項(xiàng)等動(dòng)作。一旦這些動(dòng)作發(fā)生,公眾平臺(tái)會(huì)將對(duì)應(yīng)的事件以特定的數(shù)據(jù)格式發(fā)送到web后端,web后端處理后,對(duì)此返回的響應(yīng)會(huì)經(jīng)由公眾號(hào)發(fā)送給客戶。

交互業(yè)務(wù)和接入驗(yàn)證均使用公眾號(hào)后臺(tái)配置的服務(wù)器URL,二者的區(qū)別是:交互產(chǎn)生的事件通知會(huì)使用POST發(fā)送具有固定的XML格式數(shù)據(jù),接入驗(yàn)證則是使用GET請(qǐng)求直接在URL傳送參數(shù)。

后端和微信服務(wù)器通信的消息加解密操作可選擇明文模式、兼容模式、安全模式,推薦使用安全模式,此時(shí)消息內(nèi)容會(huì)用公眾號(hào)后臺(tái)設(shè)置的加解密密鑰進(jìn)行AES加密,安全性更高。

關(guān)注公眾號(hào)時(shí)產(chǎn)生的事件(消息結(jié)構(gòu)示例1)

123456789

用戶文本消息留言產(chǎn)生的事件(消息結(jié)構(gòu)示例2)

1348831860 1234567890123456

上報(bào)地理位置產(chǎn)生的事件(消息結(jié)構(gòu)示例3)

123456789 23.137466 113.352425 119.385040

通過(guò)上面的幾類事件不難看出,XML結(jié)構(gòu)固定不變的部分包含:接收人(公眾號(hào))、發(fā)送人(用戶)、時(shí)間、消息類型、事件類型。剩下的就是事件內(nèi)容,由于消息/事件類型不同,事件內(nèi)容也各不相同,處理的時(shí)候區(qū)別一下即可。處理完畢,回復(fù)的消息仍舊是以XML格式發(fā)送。

比如,新用戶關(guān)注的時(shí)候,會(huì)收到一條MsgType=Event,Event=subscribe的消息(格式可參考消息結(jié)構(gòu)示例1),這時(shí)HTTPResponse里返回一條Content為“歡迎關(guān)注”的文本消息XML,新關(guān)注的用戶即可收到“歡迎關(guān)注”的問(wèn)候語(yǔ)(消息結(jié)構(gòu)示例4):

12345678

業(yè)務(wù)應(yīng)用

類似上面這種對(duì)任意事件通知、留言進(jìn)行處理的過(guò)程,即是公眾后臺(tái)開(kāi)發(fā)所需實(shí)現(xiàn)的業(yè)務(wù)過(guò)程。簡(jiǎn)單一點(diǎn),可以將公眾號(hào)打造成一個(gè)BOT;復(fù)雜一點(diǎn),則可以將公眾號(hào)打造成功能完備的可提供各類服務(wù)的全能型應(yīng)用中心。整個(gè)業(yè)務(wù)流程全部圍繞著收消息、執(zhí)行動(dòng)作、響應(yīng)三個(gè)環(huán)節(jié)。尤其是執(zhí)行動(dòng)作環(huán)節(jié),幾乎可以處理任何需求,無(wú)論是操作服務(wù)器本地資源(硬件、軟件、文件、數(shù)據(jù)庫(kù)),還是通過(guò)接口(HTTP、SOCKET、COM)收發(fā)消息或進(jìn)行設(shè)備控制,都可以和公眾號(hào)聯(lián)系起來(lái)。

消息/事件類型

正如前面所介紹,公眾號(hào)發(fā)往后端服務(wù)的消息分為兩類:普通消息,包含文本、圖片、語(yǔ)音、視頻、短視頻、地理位置、鏈接消息,MsgType對(duì)應(yīng)為text、image、voice、video、shortvideo、location、link;事件推送,包含關(guān)注/取消關(guān)注、掃描帶參數(shù)的二維碼、上報(bào)地理位置、自定義菜單相關(guān)操作的消息,MsgType統(tǒng)一為event,不同事件通過(guò)Event值進(jìn)行區(qū)分。

在對(duì)用戶進(jìn)行回復(fù)時(shí),消息類型也是多種多樣,支持的MsgType有文本(text)、圖片(image)、語(yǔ)音(voice)、視頻(video)、音樂(lè)(music)、圖文(news),可在回復(fù)時(shí)按需選擇。

語(yǔ)音轉(zhuǎn)文字

如果在接口權(quán)限中,開(kāi)啟了接收語(yǔ)音識(shí)別結(jié)果,voice類型的消息將會(huì)額外多出一個(gè)Recognaition字段,其值為語(yǔ)音識(shí)別結(jié)果。

Access token

除去以上涉及到用戶交互的業(yè)務(wù),公眾號(hào)開(kāi)發(fā)還支持管理類的業(yè)務(wù)操作(比如自定義菜單、素材管理、用戶管理、獲取統(tǒng)計(jì)數(shù)據(jù)等操作)。實(shí)現(xiàn)該類操作的時(shí)候,向指定API地址發(fā)送POST/GET請(qǐng)求即可。全局范圍的access_token是API請(qǐng)求中最重要的一個(gè)參數(shù),獲取方式是以GET方式請(qǐng)求?https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET,有效期7200秒。

公眾平臺(tái)只接受來(lái)自白名單IP的access_token請(qǐng)求。

使用場(chǎng)景舉例,新增圖片類型的臨時(shí)素材

接口地址:https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE

TYPE按素材類型取不同的值:圖片(image)、語(yǔ)音(voice)、視頻(video)、縮略圖(thumb)。

新增素材需要以表單形式進(jìn)行POST提交到該接口,表單字段media即為需要上傳的素材文件,調(diào)用成功,服務(wù)器即會(huì)返回包含type、media_id、created_at的JSON格式消息。

加解密

在公眾號(hào)后臺(tái)設(shè)置消息加解密方式為安全模式時(shí),公眾平臺(tái)會(huì)向后端服務(wù)發(fā)送加密過(guò)的內(nèi)容,同時(shí)也要求后端返回消息時(shí)也進(jìn)行加密。加解密過(guò)程可以直接照搬官方提供的DEMO(c++, php, java, python, c#),下載地址:https://res.wx.qq.com/op_res/-serEQ6xSDVIjfoOHcX78T1JAYX-pM_fghzfiNYoD8uHVd3fOeC0PC_pvlg4-kmP

收到的消息格式如下,Encrypt為原始消息加密結(jié)果,服務(wù)器收到消息后,對(duì)Encrypt字段的內(nèi)容進(jìn)行解密即可還原出原始內(nèi)容(解密用到的參數(shù)從QueryString中獲取,QueryString形如

?signature=……&timestamp=……&nonce=……&openid=……&encrypt_type=aes&msg_signature=……):

返回消息時(shí),也要進(jìn)行加密:

???? xml>

總結(jié)

以上是生活随笔為你收集整理的微信公众号 语音转文字api_快速上手——微信公众号开发接入的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。