近期微信『 小程序·雲開發 』悄悄的上線了一個叫作「雲調用」的新功能。html
從文檔上看,雲調用是基於雲函數使用小程序開放接口的能力,在雲函數中使用雲調用來調用服務端接口,無需換取access_token,只要是在從小程序端觸發的雲函數中發起的雲調用都會通過微信自動鑑權,開發流程進一步從而進一步Serverless化。 developers.weixin.qq.com/miniprogram…數據庫
這是一個微信和騰訊雲團隊在『 小程序·雲開發 』解決方案中新打磨的功能點,目的應該是進一步下降開發門檻。小程序
微信小程序雲調用上線後帶來哪些好處呢,咱們結合場景來看下開發流程的變化:微信小程序
場景:用戶提交訂單後,經過模板消息觸達用戶進行提示api
雲調用支持先後發送模板消息流程對比 • 開發者服務端調API方式:安全
• 雲調用方式:服務器
對比雲調用支持先後發送模板消息的流程,不通過access_token的校驗去調微信api,讓開發更省事,假設微信的更多服務端接口均能支持這種方式,那小程序開發就更serverless化了。微信
場景:用戶進入客服界面諮詢session
有在小程序開發中用過客服消息的同窗,必定會對客服消息的雲調用能力推崇備至。下面看下雲調用支持先後客服消息流程的對比:less
• 開發者服務端接收消息推送方式
這個流程偏複雜,用戶須要作服務配置, 校驗消息有效性,編寫業務邏輯回覆消息這些操做,其中校驗消息(參數排序,加密,signature對比)及消息接收與回覆(5s內響應微信服務器,微信服務器重試消息排重,回覆消息格式)這些流程中涉及的問題較多,讓開發變的更麻煩。
• 雲調用方式
開發者只需在小程序項目目錄下填寫配置以下:
{ "enable": true, // true 時開啓雲函數消息推送功能 "callbacks": [ // 全部雲函數消息配置 { "msgType": 1, // 消息類型,客服消息爲1 "functionName": "雲函數名", // 接收推送的雲函數名稱 "env": "環境ID" // 雲函數環境 } ] }
當在雲函數的event參數中取到消息內容後,在雲函數中再調用發回復消息的接口(代碼以下),便可完成消息接收與回覆啦
// 雲函數入口文件 const cloud = require('wx-server-sdk')
cloud.init()
// 雲函數入口函數 exports.main = async (event, context) => { const wxContext = cloud.getWXContext()
await cloud.openapi.customerServiceMessage.send({ touser: wxContext.OPENID, msgtype: 'text', text: { content: '收到', }, })
return 'success' }
客服消息的雲調用能力是否是很牛x,不再用檢驗signature後才能接入,不用處理重試消息與消息格式的問題,小程序用戶之後就會更少的投訴‘客服沒法提供服務,請稍後重試’的問題了。
場景: 服務端獲取開放數據
在小程序開發過程當中,開發者本身的服務端有時也須要獲取到小程序的開放數據,下面看看雲調用支持先後分別如何獲取開放數據: • 開發者服務端校驗解密方式
• 雲調用方式
你只須要將敏感數據的 cloudId 傳給雲函數,它就能取到對應的敏感數據,校驗解密這些工做不再會讓人煩惱了。
其餘的雲調用開放能力如獲取留存,獲取小程序碼,校驗圖片或文本內安全這些能力也都頗有用,想一想之前檢查用戶圖片是否非法的流程,用戶須要先將文件上傳到服務端,服務端再調微信校驗接口檢查,如今能夠直接調雲函數就能夠完成檢查。其餘的雲調用能力以下:
總結:經過雲開發的雲調用能力,可讓開發者在簡單的場景下使用雲函數就能完成開發工做,可是一些重要的場景如微信支付,並無相關的開放能力,若是將來能用雲函數來代替開發者的商戶系統與微信服務交互,完成小程序支付功能的開發,那就更厲害了。因此但願將來能有更多,更重要的能力開放,使開發進一步Serverless化。