摘要: 阿里云函数计算是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。微信小程序是一种不需要下载安装即可使用的应用,它可以在微信内被便捷地获取和传播。 当微信小程序遇见serverless,他们会产生奇妙火花,利用函数计算可以快速搭建微信小程序的serverle.

原文:http://click.aliyun.com/m/41953/

前言

这篇文章适合所有的想微信小程序开发新手、老鸟以及想准备学习开发微信小程序的程序猿。本文以开发一个类似"语音口令红包“小程序为例,向您讲解如何使用阿里云函数计算快速构建微信小程序的服务端。通过本文,您将会了解以下内容:

  • demo概览

  • 传统服务器架构 VS Serverless架构

  • Serverless架构详解

  • demo开发配置步骤

demo概览

在本教程中,我们讲解如何利用函数计算一步一步来构建微信小程序的server端,其中小程序参考"口令红包", 实现一个简单版本,该demo中可以展示口令生成,口令转发,口令语音验证。

微信语音红包小程序是基于微信小程序而开发的语音红包,发起者可以写下想要让别人说的话(口令),并且将钱塞入此红包中,其他用户只要读出这句话(口令)就可以获得红包。语音红包可以发到特定的好友、微信群以及朋友圈,朋友需要根据文字口令说出相应的语音,才能获得红包。这种互动行为,在朋友圈或者微信群社交的场景下,可以极大调动互动活跃度,规则简单方便,体验趣味十足,口令的形式丰富多样(恶搞、示爱、祝贺、说口号、甚至是广告语),这些都让口令红包一直维持很高的热度。

demo客户端小程序具体效果截图如下:
  • 生成口令
  • 转发口令
  • 录音验证口令 
  • 传统服务器架构 VS Serverless架构

正常来说,除了少数纯客户端的微信小程序运用,绝大部分的小程序都有自己的server端。用户开发server端服务,常常面临开发效率,运维成本高,机器资源弹性伸缩等痛点,而使用Serverless架构可以很好的解决上述问题。下面是传统架构和Serverless架构的对比:

阿里云函数计算是一个事件驱动的全托管计算服务。通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传。函数计算会为您准备好计算资源,以弹性、可靠的方式运行您的代码,并提供日志查询,性能监控,报警等功能。借助于函数计算,您可以快速构建任何类型的应用和服务,无需管理和运维。

Serverless架构详解

方案大致如上图所示, 主要分为以下三个模块:

  • Login & Auth

微信建议登录时序图如下, 其中第三方服务器用FC实现:

  • 语音识别(包含音频格式转换)

ffmpeg进行音频格式转换
百度语言识别开发文档

  • 方案图下部虚线框柱的是可以拓展的模块,本demo中不展示,用户可以根据需求接入

比如微信小程序直接上传文件到oss保存,函数计算可以从oss拉取对应的数据做处理;如果需要数据库功能,可以采用ots

demo开发配置步骤

准备工作:

1,开通阿里云账号,同时需要开通的产品有函数计算, api网关

2,购买独立域名,同时需对域名备案,以及购买阿里云免费ssl证书,购买步骤可参考免费申请阿里云DV SSL证书

3,开通微信小程序开发认证,以及百度语音识别

4,从github下载相应的源码,里面client目录表示客户端,server表示用于创建函数。

FC端

1,利用源码中的server目录创建服务端函数,比如函数名为wechatEntry,有以下两种方案创建函数:

  • 利用控制台打包上传,设置对应的handler, 函数计算控制台使用可参考hello world, 特别是控制台上传代码包创建函数部分。下面是重要步骤截图:

  • 函数计算熟悉fcli的工具的老用户可以使用函数计算命令行工具fcli, fcli使用说明
    fcli function create -f wechatEntry -h main.handler -d server -t python2.7 -s wechat

注意:上面两种方案创建函数之前都需先把函数中main.py中相关开发配置改成自己申请的,包括微信小程序开发者相关配配置百度语音识别相关配置

2, 以函数计算作为 API 网关后端服务

  • api网关支持https服务,具体可以参考api网关支持https
  • 函数计算作为api网关后端服务
  • api网关中设置函数对应的api分组配置独立域名
  • 最后效果图以及调试界面如下:


client端
  • 按照微信小程序官方教程,创建对应的小程序账号以及工程,需要注意的是要把api网关中配置的域名添加到微信小程序的开发配置中:
  • 直接用微信小程序开发工具打开,修改对应请求域名和appid即可,打开如下图所示:

总结

利用函数计算可以快速搭建微信小程序的serverless运用,结合oss,ots可以丰富server的功能,免服务器,免运维,成本低,不用担心流量,只需要函数就可以实现,你值的拥有!

github源码地址

一些补充FAQ, 仅供参考

怎么调试fc?

fc可以接入sls,通过sls日志,可以查看你函数运行的情况,具体可以参考函数访问日志服务

如果录入的语音文件很大,时间很长,导致语音识别服务时间很长,怎么办?

可以参考函数计算流式处理大文件的分治思想对语音分割进行流式处理,或者直接选用有流式处理的语音识别的服务。

如果想对语音文件或者其他文件做备份处理,怎么办?

可以参考微信小程序中客户端utils文件夹下面的uploadAliyun.js

声明

  • 微信小程序使用的图片和部分样式素材来自互联网,在此声明,这个demo仅仅是做学习交流展示使用,并没有涉及商业化,如果原作者看到,请在文章下面留言或者给我发邮件,我注明引用地址。

口令红包-利用函数计算构建微信小程序的server端相关推荐

  1. 10分钟上线 - 利用函数计算构建微信小程序的Server端

    摘要: 阿里云函数计算是一个事件驱动的全托管计算服务.通过函数计算,您无需管理服务器等基础设施,只需编写代码并上传.微信小程序是一种不需要下载安装即可使用的应用,它可以在微信内被便捷地获取和传播. 当 ...

  2. 利用Serverless构建微信小程序的Server端

    前言 这篇文章适合所有的想微信小程序开发新手.老鸟以及想准备学习开发微信小程序的程序猿.本文以开发一个类似"语音口令红包"小程序为例,向您讲解如何使用阿里云函数计算快速构建微信小程 ...

  3. 十分钟上线 - 函数计算构建支付宝小程序的后端

    阿里云函数计算服务(FunctionCompute,FC)是一个事件驱动的全托管计算服务.通过函数计算与云端各个服务的广泛集成,开发者只需要编写函数代码,就能够快速地开发出弹性高可用的后端系统.接下来 ...

  4. 凑单满减计算神器微信小程序源码下载不再掉入网购打折坑

    这是一款优惠计算神器 支持使用淘宝88VIP计算也支持不使用 只需要输入商品的数值和打折的数值然后就可以自动计算出划不划算等等 安装方法: 使用微信开发者工具打开源码 然后提交审核就可以了 PS:该款 ...

  5. MAC系统利用charles抓取微信小程序和手机APP数据包(http和https数据包)

    本文中使用的是mac上的抓包工具charles进行抓包,手机是华为荣耀8 下载并安装Charles for Mac Charles for Mac(HTTP信息抓包工具) V4.2.5 苹果电脑版 要 ...

  6. java webpack web项目_官方出品,微信小程序和 Web 端同构解决方案——kbone

    介绍 最近在琢磨一些小程序开发和移动web开发,偶然间在Github上看到了这样一个项目--kbone,一个致力于微信小程序和 Web 端同构的解决方案.微信小程序的底层模型和 Web 端不同,我们想 ...

  7. 浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务)

    浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) 参考文章: (1)浅谈对腾讯云微信小程序解决方案服务端的理解(主要针对信道服务) (2)https://www.cnblogs.com/ ...

  8. 微信小程序解决苹果端在禁止下拉刷新以后仍可以拖到屏幕的问题

    微信小程序解决苹果端在禁止下拉刷新以后仍可以拖到屏幕的问题 .json文件中----缺点是固定整个页面 {"navigationBarTitleText": "首页&qu ...

  9. uniapp兼容保利威视频,可编译成微信小程序、移动端、h5

    基于uniapp开发,引入保利威视频云, 代码可编译成微信小程序,移动端,h5,其他小程序理论上都支持但是没有验证,demo下载地址 https://download.csdn.net/downloa ...

最新文章

  1. Elasticsearch 6.3.1、Head插件 安装及配置
  2. 任何网站优化都离不开的四个方向是什么?
  3. python爬百度翻译-python爬取百度翻译的问题以及解决方案
  4. 无法执行添加/移除操作,因为代码元素**是只读的
  5. 全志和瑞芯微比较_哪家强_全志瑞芯微海思PK 智能芯片哪家强?
  6. HDUOJ---1754 I Hate It (线段树之单点更新查区间最大值)
  7. SpringBoot - 工作流Activiti开发
  8. IBM heapAnalyzer
  9. 我的内核学习笔记13:x86平台linux系统重启流程跟踪
  10. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_02 递归_2_练习_使用递归计算1-n之间的和...
  11. 【LeetCode】刷题工具
  12. 12.21 linux前戏
  13. Java就业方向有哪些?
  14. 互联网金融指导意见或引发P2P跑路狂潮
  15. insert append需要注意的一个小问题
  16. CPU乱序执行基础 —— Tomasulo算法及执行过程
  17. 字符串_字符串的复制
  18. 符号的英文读法(转)
  19. C#输入三条边判断是否为三角形
  20. 用java将数组中的数字倒过来_有数组a[n],用java 代码将数组元素顺序颠倒

热门文章

  1. 知识图谱从入门到应用——知识图谱的应用
  2. 有什么值得入手的蓝牙耳机品牌?2022年蓝牙耳机品牌排行榜
  3. C#组件系列——NPOI使用手册
  4. Google Chrome Helper CPU占用过高的解决办法
  5. springboot中websocket服务怎么调用其他类的方法
  6. 关于matlab好文推荐
  7. 关于系统安装之U盘制作【install.wim】
  8. 走进小程序【十一】微信小程序【使用Echarts 和 腾讯地图】
  9. Windows实验——DNS劫持演练
  10. 50道MySQL面试题,掌握之后你将获得无上法力,一发不可收拾!