10分鐘上線 - 利用函數計算構建微信小程序的Server端

前言

這篇文章適合全部的想微信小程序開發新手、老鳥以及想準備學習開發微信小程序的程序猿。本文以開發一個相似"語音口令紅包「小程序爲例,向您講解如何使用阿里雲函數計算快速構建微信小程序的服務端。經過本文,您將會了解如下內容:html

demo概覽

在本教程中,咱們講解如何利用函數計算一步一步來構建微信小程序的server端,其中小程序參考"口令紅包", 實現一個簡單版本,該demo中能夠展現口令生成,口令轉發,口令語音驗證。python

微信語音紅包小程序是基於微信小程序而開發的語音紅包,發起者能夠寫下想要讓別人說的話(口令),而且將錢塞入此紅包中,其餘用戶只要讀出這句話(口令)就能夠得到紅包。語音紅包能夠發到特定的好友、微信羣以及朋友圈,朋友須要根據文字口令說出相應的語音,才能得到紅包。這種互動行爲,在朋友圈或者微信羣社交的場景下,能夠極大調動互動活躍度,規則簡單方便,體驗趣味十足,口令的形式豐富多樣(惡搞、示愛、祝賀、說口號、甚至是廣告語),這些都讓口令紅包一直維持很高的熱度。
demo客戶端小程序具體效果截圖以下:
  • 生成口令

image

  • 轉發口令

image

  • 錄音驗證口令

image

傳統服務器架構 VS Serverless架構

正常來講,除了少數純客戶端的微信小程序運用,絕大部分的小程序都有本身的server端。用戶開發server端服務,經常面臨開發效率,運維成本高,機器資源彈性伸縮等痛點,而使用Serverless架構能夠很好的解決上述問題。下面是傳統架構和Serverless架構的對比:git

Item Serverless 傳統方式搭建服務
維護成本 維護成本低,無需管理服務器等基礎設施,只需編寫代碼並上傳,程序員從底層設備維護中解放出來,只考慮實際業務邏輯便可。 維護成本高,自行維護服務器,須要處理服務器宕機、服務器擴容等一系列底層瑣碎的事情
可用性 可用性高,函數計算爲用戶準備彈性、可靠的計算資源,具備根據流量自動scale特性,對有明顯波峯波谷的運用效果奇佳 服務器故障會對應用服務產生嚴重影響
費用 按需付費,只爲實際使用的計算資源付費,代碼未運行則不產生費用 須要支付服務器的費用,代碼運行與否都要收費

阿里雲函數計算是一個事件驅動的全託管計算服務。經過函數計算,您無需管理服務器等基礎設施,只需編寫代碼並上傳。函數計算會爲您準備好計算資源,以彈性、可靠的方式運行您的代碼,並提供日誌查詢,性能監控,報警等功能。藉助於函數計算,您能夠快速構建任何類型的應用和服務,無需管理和運維。程序員

Serverless架構詳解

image

方案大體如上圖所示, 主要分爲如下三個模塊:github

  • Login & Auth
微信建議 登陸時序圖以下, 其中第三方服務器用FC實現:
image
  • 語音識別(包含音頻格式轉換)
ffmpeg進行音頻格式轉換
百度語言識別開發文檔
  • 方案圖下部虛線框柱的是能夠拓展的模塊,本demo中不展現,用戶能夠根據需求接入
好比微信小程序直接上傳文件到oss保存,函數計算能夠從oss拉取對應的數據作處理;若是須要數據庫功能,能夠採用ots

demo開發配置步驟

準備工做:

1,開通阿里雲帳號,同時須要開通的產品有函數計算, api網關數據庫

2,購買獨立域名,同時需對域名備案,以及購買阿里雲免費ssl證書,購買步驟可參考免費申請阿里雲DV SSL證書小程序

3,開通微信小程序開發認證,以及百度語音識別後端

4,從github下載相應的源碼,裏面client目錄表示客戶端,server表示用於建立函數。微信小程序

FC端

1,利用源碼中的server目錄建立服務端函數,好比函數名爲wechatEntry,有如下兩種方案建立函數:api

  • 利用控制檯打包上傳,設置對應的handler, 函數計算控制檯使用可參考hello world, 特別是控制檯上傳代碼包建立函數部分。下面是重要步驟截圖:

image

image

  • 函數計算熟悉fcli的工具的老用戶可使用函數計算命令行工具fcli, fcli使用說明

fcli function create -f wechatEntry -h main.handler -d server -t python2.7 -s wechat

注意:上面兩種方案建立函數以前都需先把函數中main.py中相關開發配置改爲本身申請的,包括 微信小程序開發者相關配配置百度語音識別相關配置

2, 以函數計算做爲 API 網關後端服務

image

  • 最後效果圖以及調試界面以下:

image
image
image

client端
  • 按照微信小程序官方教程,建立對應的小程序帳號以及工程,須要注意的是要把api網關中配置的域名添加到微信小程序的開發配置中:

image

  • 直接用微信小程序開發工具打開,修改對應請求域名和appid便可,打開以下圖所示:

image
image

總結

利用函數計算能夠快速搭建微信小程序的serverless運用,結合oss,ots能夠豐富server的功能,免服務器,免運維,成本低,不用擔憂流量,只須要函數就能夠實現,你值的擁有!

github源碼地址

一些補充FAQ, 僅供參考

怎麼調試fc?

fc能夠接入sls,經過sls日誌,能夠查看你函數運行的狀況,具體能夠參考函數訪問日誌服務

若是錄入的語音文件很大,時間很長,致使語音識別服務時間很長,怎麼辦?

能夠參考函數計算流式處理大文件的分治思想對語音分割進行流式處理,或者直接選用有流式處理的語音識別的服務。

若是想對語音文件或者其餘文件作備份處理,怎麼辦?

能夠參考微信小程序中客戶端utils文件夾下面的uploadAliyun.js

聲明

  • 微信小程序使用的圖片和部分樣式素材來自互聯網,在此聲明,這個demo僅僅是作學習交流展現使用,並無涉及商業化,若是原做者看到,請在文章下面留言或者給我發郵件,我註明引用地址。
  • 歡迎你們經過掃碼加入咱們用戶羣中,搭建過程當中有問題或者有其餘問題能夠在羣裏提出來。

    image

相關文章
相關標籤/搜索