由于小程序云开发的能力在过去的一段时间内得到了进一步的增强,在简化开发者操作的同时,以业务场景为切入点,为开发者提供了无需技术底层架构能力就能构建功能齐全的小程序的能力。借助云开发能力,小程序开发体验得到了进一步优化。
9月21日,由云+社区(腾讯云官方开发者社区)主办的技术沙龙“小程序·云开发”在北京成功举办,现场5位技术专家与开发者们进行了面对面的交流,深入讲解了小程序·云开发在各个领域、各个场景的深度实践。
小程序云开发技术应用的架构演进
云开发作为国内的最佳实践之一,真正把小程序的特点发挥到了极致。腾讯云高级工程师李开元先生从技术角度揭秘云开发功能的实现,并从免认证/实时推送/一键部署/数据互通等角度介绍了云开发的设计。
分享伊始,李开元老师提出了一个问题:一般来说,如果我们打算开发一个带有后端能力的小程序,我们前期的准备流程是怎样的?答案是注册小程序账号——注册公有云账号——购买服务器和域名——申请SSL证书——登录服务器购买软件配置——域名注册——研发阶段。
可以看到,仅仅开发一个轻量级的小程序,前期就需要如此复杂的准备过程。整个过程走完之后,看似小程序的业务逻辑实现变成了最简单的事情。而这还不是结束,还需要考虑小程序的高可用、高性能、安全性、数据库备份、容灾等问题。
因此作为开发者,我们需要把注意力放在更重要的事情上,那就是产品功能业务逻辑的实现层面。
传统云服务模式与云开发模式对比
传统开发模式下,需要更多关注文件存储、备份、容灾等,而云开发模式下,只需要关注与业务逻辑相关的数据库、文件存储、云函数等功能。现阶段小程序云开发提供了数据库、文件存储、云函数等功能。数据库类似滴滴,提供整体形式的存储解决方案。文件存储是通用的文件对象存储,内置 CDN 网络加速能力。云函数提供远程代码和快速调用能力。
在整体架构实现逻辑上,小程序云端开发分为云端调用、数据库实时推送、增值能力、网络互通四个层级。
云通话
(小程序生态定制,连接云端功能简化认证。腾讯云和微信都有连接认证的功能,使认证工作自动化。)
以前,如果没有云开发,想要调用微信后端API获取数据,就得先购买服务器,在服务器上开发微信中间件,才能获取数据,接入微信后端。而云开发可以省去上述步骤,因为云开发给出了在云函数中实现上述逻辑的功能。同样,在接收微信服务器的数据时,云开发也不需要配置服务器地址等,而是直接在云开发ID中配置App接收的云函数,就可以接收微信服务器的消息了。
从检索信息到接收信息,整个开发过程中,开发者不需要过多关注认证相关的事情,只需要关注自己的业务逻辑,开发者不需要自己去实现认证,更加安全,前面提到的免认证方案,为开发者简化了很多工作。
实时数据库推送
(长期服务,简化实时互动)
实时数据库推送能力是小程序云开发近期上线的新功能,可以在聊天、棋牌游戏、订单状态同步等很多长连接、实时交互的场景下优化升级开发体验,可以说实时数据库推送能力对于小程序的功能提升意义重大。
多层架构实时数据库推送
整个数据推送系统是一个分层的、多层的架构,这里主要讲解一下监控推送层的设计理念,监控推送层的设计主要遵循三个原则:高可靠、高性能、高可用。
l 高可靠放在第一位,单点执行,自增ID方案,支持3分钟断线,两级功能。
l 高性能主要分为三个方向,第一是事件的合并推送,如果网络条件较差,可以将多个事件合并在一起,有效提升推送效率。第二是自动索引算法,可以将检索方案的复杂度从O(n)降低到O(1)。最后是并发流水线,每个步骤由不同的线程处理,利用多重合并的能力,最终的性能可以成倍提升。
l 高可用性分为热备容灾和无损变更两个方面。热备容灾可以保证有额外的节点进行实时处理和替换;无损变更可以保证变更过程中不会有任何请求中断。
增值能力
(无需后端开发,一键发布云函数)
集成图像识别、音视频、短信等腾讯云基础产品的能力,通过模块化一键部署到云函数中,无需后台开发,后期只需要调用这些函数即可实现功能。
网络互联
(整合现有架构,降低云开发成本)
网络互通解决方案
当然,每个开发者都是独立的个体,有不同的历史包袱和熟悉的开发模式,因此通过网络互联互通方案,将现有的架构与云开发融合,接入云开发时无需抛弃原有的开发模式,通过云函数即可访问云上其他能力。具备支持同区/异区内网访问、使用IPIP协议、隔离不同租户网络三大能力。
基于实时数据推送能力的云开发应用实践
微信小程序的一个重要分支是小游戏。在小游戏的开发过程中,实时数据推送能力对于小游戏服务端与游戏端的数据交互非常重要。白鹭科技高级产品经理张宇先生在现场讲解了如何基于白鹭引擎开发和实时数据推送能力更好地服务小程序。
实时数据推送能力
做游戏肯定会涉及到服务端与游戏客户端之间的数据交互,交互方式一般分为短连接和长连接。
短连接和长连接
如上图,左侧的AJAX轮询方式是短连接最常见的方式之一,是类似回合制、问答的模式,这种模式下服务器不能主动向游戏端推送消息,必须游戏端发送请求,服务器才能返回消息。一般来说,开心农场等一些对数据实时性要求不高的游戏会采用这种短连接方式。
还有一种是长连接,是H5中常见的长连接方式。通过保持游戏端和服务器端的状态一致,游戏端可以随时给服务器端发送消息,服务器端也可以随时给游戏端发送消息,可以有效保证数据的实时性。以《王者荣耀》为例,如果使用短连接的方式,游戏过程中会出现延迟过高的情况,所以对实时性要求高的游戏都会使用长连接的方式。
除了以上两种方式之外,还有一种新的形式,就是实时推送数据的功能。这种形式类似于手机上接收微信、QQ等各类APP的实时推送消息。工作流程是,在进入程序的时候,客户端先发送消息给服务端,表示先监控哪些数据,之后只要监控到的数据发生变化,客户端就会接收到变化的数据,并推送过来。
小游戏+云能力
云能力可以有效提升小游戏的开发体验。第一,没有服务器就不需要注册域名了。现在注册域名需要实名认证、办证,有时候需要两三周才能办好,现在使用云能力变得简单很多;第二,不需要防御DDOS攻击,因为没有服务器,黑客就无从下手,当然除非腾讯云关机;
另外从开发者配置来看,由于集成了大部分能力,无需服务器,也不需要后端工程师,可以减少人员成本;当然也省去了前后端联调阶段,开发者在前端直接调用云函数从服务器获取最终数据,缩短了开发周期。
另外,无论是游戏还是其他产品,研发阶段都会分为开发和生产两个阶段,往往在新功能上线时,就会出现各种问题,而云开发则完全避免了这一点,只需要进行修改即可切换开发/生产环境,无需修改游戏中的代码。
基于云端开发的AI智能客服实践
如今人工智能客服已经相当成熟,那么如何巧妙运用AI能力赋能小程序客服功能呢?极速应用后端负责人高文飞先生在现场讲解了如何基于开放AI能力,真正实现机器客服的智能化。
腾讯智能对话平台TBP
AI智能小程序客服基于腾讯智能对话平台TBP构建,以“对话即服务”为核心,全面开放腾讯对话体系核心技术。主要提供机器人中间件能力,普通开发者也能快速使用AI机器人。如果只是想实现一个AI机器人,只需要按照上图给出的步骤,就可以在云端开发中直接调用机器人。
但我们毕竟是开发者,需要了解语义模型,语义模型分为三部分:配置词典、配置意图、配置问答。
l 意图:用户与机器人对话交互背后的目的,用户希望实现什么;
l 词典:用于识别和填充意图中的槽位,可自定义;
l 问答:预设问题和答案,帮助机器人快速识别。
AI智能客服需求功能方面,分为PC端和小程序端两个方向,PC端包括开通云开发、部署云函数、TBP设置、自动回复设置、关键词回复、数据统计等功能;小程序端包括云函数处理、匹配关键词、转TBP、转人工等功能。
PC后台管理实现路径
PC后台代码实现主要通过关键词设置、自动回复、数据统计三个层面完成;云端函数通过微信授权API触发,上传预设的云端函数后可通过API对数据库进行增删改查;机器人设置主要通过腾讯云SDK对TBP平台进行操作。
小程序实现路径
小程序的实现主要通过云函数来实现,客服系统主要需要使用云函数作为客服入口,获取关键词、开场白或者统计信息等,下面就重点讲解客服入口。
客服入口可以说是实现这个功能的核心,在用户第一次进入对话时,会自动回复开场白,如果收到用户消息,会判断是否转人工,如果没有收到用户消息,会判断关键词,当然需要是特殊关键词,不然和AI有冲突,如果关键词回复为否,则会转给AI机器人处理,AI机器人会理解用户的意图,直接回答问题或者调用物流查询、服务预约等API告诉用户,如果再次收到用户消息,则会返回判断是否转人工。这就是小程序客服的实现逻辑。
小程序云开发在猫眼电影运营活动中的应用
接下来,猫眼娱乐高级工程师高英建先生结合猫眼技术团队的实践,现场讲解了小程序开发过程中如何避免重复研发工作。
近年来小程序越来越火爆,不少公司都开发了自己的小程序。为了吸引更多用户使用自家的小程序,各公司也推出了各种运营活动。比如猫眼电影小程序首页就会有各种抽奖、团购、秒杀、砍价、签到、照片墙等活动,流量比较大。而且如果一个活动有效,以后肯定会被重复利用。
传统上,如果要复用一个,可以分为以下四个步骤:
l 定义活动模板的可配置项-[PM/操作+后端+前端]
l 建表及开发活动配置项访问接口 - []
l 管理后台系统添加活动配置项-[+]
l 小程序带活动配置项及活动模板-【前端+后端】
这是一个很常见的操作,如果你是一个一线开发者,你肯定会经历这些步骤。但是现在大部分项目都是前后端分离的,这样就会出现职责分配等问题,另外在前后端联调过程中,还会出现环境、接口不一样等问题,导致项目上线延迟,因此需要探索新的解决方案。
基于腾讯小程序开发的解决方案——唐图
唐图&云&小程序架构图
上的视图层是专门提供给 PM/运营同事编辑的,编辑完成后我们会把数据发送到 Node 端,Node 端会和小程序云进行交互,把活动配置数据存储到小程序云的数据库表中,存储完这条记录之后会返回一个 ID,然后根据 ID 和活动类型生成小程序代码或者活动链接,方便 PM/运营同事快速发起活动。
另外,在活动入口,小程序码和链接都有ID和Type,当你通过入口进入小程序时,小程序会根据ID去小程序云数据库表查找是否有这条记录,如果找到这条记录,就可以结合模板生成新的活动。也就是说,ID是活动的标识,这样就可以实现多个同类型的活动同时上线。
唐图&云,核心数据交互图
为了减少工作量, 中用于生成活动配置数据的模板也是存储在云端数据库中的。上图右侧是一张活动配置模板的数据表,数据表中存储的是活动模板的一些配置项(不是数据),每个配置项的内容就是所需的各种表单属性。
这样做有什么好处呢?保存了这些活动模板的配置项之后,如果有新的字段需要模板化,或者新的活动需要模板化,只需要改一下对应活动配置模板的 json 数据,或者上传新的活动配置模板 json 文件即可。 可以根据这个活动配置模板动态渲染表单(不用改代码上线),并提供给 PM 或者运营同事编辑生成活动配置数据(结合小程序模板进行渲染),即可得到一个新的活动。
数据存储策略
小程序云不同环境之间是相互隔离的,由于小程序云可以创建两个环境,开发环境和线上环境可以对应小程序的开发版和线上版。如果采用之前的数据存储策略,需要在开发环境存储一份数据,再在线上环境存储同样的数据,非常繁琐。
因此需要对数据存储策略进行优化调整,先将数据存储在开发环境小程序云中,再与开发环境进行验证,如果数据没有问题,在 上一键转换为线上环境数据,这样线下环境数据就不会影响线上环境数据。但有一点需要注意,存储和数据库都是权限控制的配置,比如在存储中,如果要上传一张图片,如果权限是私有的,URL 是临时的,那么需要在小程序端通过文件 ID 获取当前的 URL。由于 中存储的内容是配置数据,所以我们将这个数据设置为公开的权限,URL 不会过期,生成的 URL 可以直接存储给小程序使用。
:快速构建SCRM小程序
随着微信小程序的不断壮大,传统 CRM 厂商也在不断迁移到微信,毕竟微信拥有庞大的用户量和流量。那么用微信小程序做 CRM 与以往的做法有何不同呢?腾讯云 TVP 老师大摩琼球带领大家从零开始,亲手实践了搭建一个 SCRM 小程序的全流程。
小程序作为经典的实现方式,只需要开发前端代码,在云端进行大量的简化,开发云端函数,开发云端数据接口。这样运维、部署全部由自动化工具完成。借助腾讯云强大的功能,我们可以节省大量的时间和金钱。这是它的本质。
CRM 是什么?其实就是客户关系维护系统。电商、金融、餐饮、教育、电信、医疗,所有的巨头、大企业都有 CRM 系统。那么既然已经有了很好的桌面 CRM 系统,为什么还要做小程序 CRM?原因有三:
l 微信的用户量非常庞大,现在微信有11亿用户,月活跃用户数非常恐怖,有几亿的月活跃用户。
l 另外我们在微信上有非常完善的营销渠道,很多人会用朋友圈、公众号、小程序等进行裂变营销,这是传统平台没有的巨大优势。
第三,微信背后有微信支付,支付宝和微信是中国最大的两大移动支付巨头,我们利用微信做小程序,会让支付更顺畅,没有任何阻碍。
而且,不只是大型企业才需要使用CRM,零售店等个体经营企业也需要CRM系统来维护客户。
SCRM与CRM之间的区别
将传统CRM的功能全部搬到小程序里肯定是不可能的,所以在功能实现上肯定存在差异;而且SCRM其实更注重利用微信的社交功能来建立和维护客户关系;第三,SCRM更注重利用微信支付功能。
市场上也有类似的产品,比如企业微信、钉钉等,都有类似的SCRM系统,当然如果能在微信上使用,会更加便捷,更具普及性,也更加贴近用户。
最终效果界面
随着小程序应用领域的不断拓展,小程序的实践也越来越广泛,我们有理由相信,日益强大的小程序云开发体系将进一步丰富小程序的体验和生态。
关于+社区
+社区是腾讯云官方开发者社区,是腾讯云开发者生态的重要组成部分,通过提供技术专栏、技术问答、技术沙龙、行业新闻、开发者手册等服务,为开发者打造专业的技术分享社区,构建云计算技术生态。
云+社区技术沙龙是由“云+社区”策划并主办的一场线下技术沙龙活动,希望通过技术的分享让更多的开发者能够学习交流,成为腾讯云连接开发者的平台,共同打造技术影响力。