开发者自述:我如何用云函数快速搞定「模板消息推送功能」

作者:Rebecca Qian

在知晓云云函数公测开放一周后,我们收到了用户 @Rebecca Qian 的使用反馈,他利用云函数完成了模板消息推送功能。以下就是他的开发过程,同时云函数第二批公测名额已经开放。戳 ? 报名

用知晓云做小程序开发已经有几个月的时间了,目前在做的是一个旅游线路类的小程序。

从开始的旅游线路展示,到后来相对复杂的预订,费用支付,邮件通知等功能,感觉使用知晓云开发小程序是很方便快捷的,稍有遗憾的是我所需的定时通知用户信息的功能还不能满足。因此当得知知晓云开放了云函数服务,了解后感觉刚好可以满足我这方面的需求,我第一时间申请成为了第一批云函数公测用户。

作为上手的第一个云函数,我写的是一个模板消息推送功能。升级了知晓云触发模板只能通过后台数据表更新和支付行为即时触发的功能,使其更加灵活。

看过文档说明后,开始了我的第一次云函数尝试:

1. 编写云函数

登陆知晓云账号, 在知晓云控制台,进入引擎,选择添加云函数。知晓云提供了基础的函数模板供用户使用,选择创建后,一个简单的函数就自动在代码编辑器生成了,在它的基础上我写进了自己的代码。

exports.main = function helloWorld(event, callback) {
  callback(null, "hello world")
}

云函数中已经提供了 BaaS.sendTemplateMessage(data) 用于发送模板消息,我在这里指定了使用的模板 ID 和触发条件为表单提交(form id),接收模板信息的用户 ID 等则通过参数传递。具体的代码在云函数文档中已经说明了,按照自己的需求稍作修改即可。

2. 测试函数

知晓云提供了云函数测试功能,完成代码后可以直接在编辑页面进行调试,我感觉是很直观方便的。

因为我设置的模板触发条件是表单提交,而微信模板要求需有 form id 的提交,所以在测试前我先到微信开发工具中,用手机预览方法在小程序里提交了一次 form id。

回到云函数的编辑页面,点击右上角的“测试”,打开测试窗口,选择选择触发源为 SDK,然后输进了我自己的知晓云用户 ID,跳转链接等作为参数。在这里,如果你选择的触发源是微信支付或者数据表,会给你提供默认的测试数据,按照自己的需要修改后就可以测试,可以节省不少时间。

点击「执行」,「执行结果」栏显示成功,同时我的微信也收到了推送的模板消息。所以我的这个云函数已经成功创建啦。

3. 小程序内调用函数

函数成功创建后我准备在小程序端进行调用了。看了一下文档,在 SDK 中调用云函数只需使用 wx.BaaS.invokeFunction(functionName, params, sync) 方法即可。

这里有个小 tips 分享给大家:参数 functionName,即云函数名,实际指的是一开始创建云函数时填写的名称,即下面左侧栏位的名字,而我在开发时误以为是代码中的 function 名,所以调用一直报错。之后向知晓云的工程师咨询了解后,调用就成功通过了。

我就顺利完成了第一个云函数的尝试了。因为首次使用,在测试和调用中碰到了一些小阻碍,但除此外总体感觉都是比较流畅的,使用云函数实现业务,正常服务量级,大概可以节省 60%~70% 的成本。而通过这次尝试,我以后就可以灵活的在小程序里面发送模板消息了,接下来我准备继续使用云函数开发我的新功能啦!

原文发布于微信公众号 - 知晓程序(zxcx0101)

原文发表时间:2018-05-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java架构

Dubbo架构原理

Remoting:远程通讯,提供对多种NIO框架抽象封装,包括“同步转异步”和“请求-响应”模式的信息交换方式。

1143
来自专栏自由而无用的灵魂的碎碎念

如何清理photoshop cs6 被升级的烦人的adobe creative cloud组件

安装photoshop cs6(虽然目前已经退出到cc 2015,不过因激活成熟度等,我还是偏向于使用cs6,够用!),默认安装adobe applicatio...

982
来自专栏Java技术栈

架构必备「RESTful API」设计技巧经验总结

【译者注】本文是作者在自己的工作经验中总结出来的RESTful API设计技巧,虽然部分技巧仍有争议,但总体来说还是有一定的参考价值的。以下是译文。

1233
来自专栏葡萄城控件技术团队

作为JavaScript开发人员,这些必备的VS Code插件你都用过吗?

如今,Visual Studio Code无疑是最流行的轻量级代码编辑器。它确实从其他代码编辑器那借鉴了很多,最主要是从Sublime和Atom那里。然而它的成...

951
来自专栏小狼的世界

如何让你的Mac Lion朗读中文

Mac Lion的新特性中提到,这次的更新提供了22中新语言支持,但是我们利用浏览器或者文本编辑器进行语音的朗读时,默认都是使用的英文,那么如何让Lion来朗读...

862
来自专栏派森公园

如何监控Elasticsearch

Elasticsearch是一个开源的分布式文档存储和搜索引擎,可以近乎实时地存储和检索数据结构,它很大程度上依赖于Apache Lucence--一个用Jav...

1603
来自专栏Rainbond开源「容器云平台」

Rainbond插件体系设计简介

过去几年,利用容器打包和部署代码的方式日益流行,越来越多企业开始测试或是已经在生产环境中运行了微服务架构应用,开始直接面对和解决分布式服务化架构演变中出现的各种...

3469
来自专栏EAWorld

有状态容器实践:k8s集成ceph分布式存储

? 大家好,今天由我为大家介绍一下我们对于k8s与ceph集成的预研成果。对于k8s与ceph,我们也了解有限,有些理解不对的地方,还请大家指正。 ? 今天将...

5306
来自专栏大数据和云计算技术

Redis 4.0的了解以及使用

Redis作为时下最火爆的NoSQL数据库以性能强悍、数据结构丰富著称,同时其成长的脚步也从未停止,自诞生伊始已经历多次蜕变不断推出新功能。

1003
来自专栏芋道源码1024

从客户端的角度设计后端的接口

2.请求Path,http://www.online.com/api/ [path]

673

扫码关注云+社区