译者按:很多人跟我一样梦想着从0到1做出一款自己的产品,但却经常无疾而终。这位14岁的小孩子,让我羞愧地重新拾起了编程。
我接下来会跟大家分享我在开发一款在Facebook Messenger上的聊天机器人的故事,还有在上线第一周内疯狂的推广经历(包括乔纳斯兄弟乐队的凯文专门为我的产品发了一条推特,某泰国网友在Facebook上对我产品的介绍引起了病毒式传播,还有BBC的采访)
说实在的,真正做出一个有用的东西,比说起来难多了。
跟很多软件开发者一样,我之所以想要开发一个有用的东西,最初是为了解决自己的痛点。
我的痛点就是:我一直忘记晚上要做什么作业。在八年级的时候,我经常得早早爬起来去学校补作业。我想这样下去可不行,毕竟接下来的四年,我没法每天早上6:30赶到学校补数学作业。
于是我决定做一个聊天机器人,可以在每节课后提醒我都布置了什么作业。我也了解到很多学生也遇到同样的问题。
为什么是聊天机器人?一方面是因为现在聊天机器人是个热门开发项目,但更重要的是同学们都机不离手(特别是上课的时候),并且他们也很熟悉打字聊天的方式。
刚开始是通过短信来做聊天机器人,但是我很快意识到用美国短信服务是需要钱的,不少其他国家也是如此。但好在Facebook Messenger是免费的。
在六七年级的时候,我学了一些PHP,也做过简单的web应用。但是在Facebook messenger平台上开发聊天机器人是全新的挑战,我想这也是学习Ruby on Rails的很好的机会。
我还得学习Messenger的API,以及如何开发一个需要登录的网站来管理学生的课表。单单这两样东西的学习难度就是陡然上升的,但是我一想到能够把自己的一个点子变成世界各地的学生都会使用的产品,就无比兴奋。
“他还是个孩子啊!”
差不多九个月后,Christopher Bot(下文简称CB)诞生了。
但这期间我没法做到全时间投入,平时得上课,还要足球训练,并且初期经常反复推倒重来,所以其实没有多少大段的写代码的时间。
虽然开发过程是断断续续的,但是CB最终呈现出来的就是我理想的样子。他是一个可靠的并且稍微害羞的聊天机器人,非常努力地帮助学生。
接下来我跟大家讲讲他是如何工作的。
先给CB发条消息,设置好你的课程,他会在每节课快结束的时候给你发消息,问你这节课有没有作业。在每天结束的时候,CB会发给你一个当天作业清单。
简单而有效。
我觉得他非常有用,因为学生不需要靠脑子来记作业,CB会及时提醒他们。
当你要度假时,你可以暂停CB的服务,他会问你哪一天恢复消息提醒。如果你下课后忘记告诉他作业是什么了,你可以在之后补上。
这里没什么复杂的指令。因为大部分学生随身携带手机,CB一直会是他们的贴身助理。
顺便说一下Christopher名字的由来:二战时期图灵造出了一个机器破解了德军的恩尼格玛密码机,这个机器的名字就叫Christopher。
想出一个好点子难,真正实现出来更难
对我来说,CB最重要的部分是完美的“记忆力”。他必须要记得及时提醒学生,绝对不能开小差。
简单的问题和简单的回应,会让对话更加高效。CB可能不是最聪明的机器人,但是他很擅长完成自己的任务。
在CB发挥作用前,他需要知道学生的课程信息,所以我得设计一个网页表单来获取课表。
我想如果用户得一格格地填入每天的课表,那太麻烦,可能直接放弃了。所以为了方便大家,我决定设计一个自动填写的表格,可以把前一天的课表自动复制到当天。
比如说用户输入了周一的课表,接着要填写周二的课表时,就发现周二的课表已经自动填写上了,要么直接确认,要么稍微修改一下。这样子的话,大部分学生可以在30秒内填写完课表。
我也努力让用户跟CB的对话更快捷,因为课间休息时间非常短。
表情包和GIF动图比较酷炫,但是我想对话还是简洁干净的好,这样学生就不需要花很多时间跟CB聊天。(这才是张小龙说的用完即走)
于是我下一个重点就是添加一个“快捷回复”的功能
在输入框上面有“Yes”和“No”两个小按钮,这样用户就无需输入大段文字,并且也使得用户的回复变得更加可控,我就不必担心如果用户输入“呀”、“哟”、“dei”、“不不不”我该怎么处理。
最后,我希望CB看上去更加像一个有血有肉的朋友,于是我让他回复时会稍微延迟一下,来模拟实际聊天时的场景。
如果CB在短于1秒内就回复,有些用户甚至不会意识到新消息已经发过来了,因为实在太快了。
我觉得输入延迟是Messenger非常贴心的功能插件,上面还有其他一些工具让聊天机器人更加拟人化,当然也不至于让你误以为跟真人聊天。
说真的,到底有多少个时区?
开发CB的最大挑战就是处理世界各地的时区。对时区这个概念我是很清楚的,但是用户分布在24个不同的时区里,他们上课和提醒记作业的时间需要好好梳理一下,这就需要更深入的思考。
课表时间都是根据用户的当地时区,每次CB发消息给用户时,也是依据当地时区的时间。
看上去很简单,但是CB服务器生活在某一个特定的时区。
所以当CB在某一时刻查询数据库来决定是否要发消息,他首先得检查一下服务器时间是否和用户在当地时区的下课时间是否一致。
我发现最佳的处理办法就是把所有的时区转换为UTC时间,这样我只需要把学生每节课结束时间的旁边放上UTC时间即可。
模板万岁
当你访问官网 https://www.christopherbot.co/ 时,你会发现网页还挺漂亮的,但实际上不是我设计的。
我不熟悉HTML/CSS,于是我决定购买一个Bootstrap模板来融入到我的app里。
我估摸着3步就搞定了:
- 购买一个模板
- 把素材放入我的目录里
- 性感的网站就出炉了
但我还是太傻太天真。
因为CB用的是Ruby框架,但这个模板并不知道我用的是Ruby。于是我就花了好几天来学习Rail是如何使用JS文件,提取图片,等等。一周后,我终于搞定了。图片加载出来了,效果也很不错。
但是我又遇到其他的问题,JS的图标动画太繁杂,导航栏没法用。最大的问题就是浏览器兼容性,在谷歌浏览器上页面滚动太快,Safari和火狐却是正常的。
我气得想把电脑扔出窗外,但是一想到扔了还得跟爸妈解释电脑跑哪儿去了,我想还是老老实实把问题解决了吧。
很显然我最大的问题就是JS,于是我就采取了比较激进的解决方式。
我把模板中所有的JS代码都删了,本以为肯定崩溃的,但是非常神奇的是,正好相反。
不仅滚动速度正常了,兼容性好了,导航栏也能用了,甚至烦人的视觉效果也不见了。
遇到代码问题,最好不要想着暴力破解法。但是这次却是完全出乎我意料。所以呢,在放弃之前问问自己,是否已经尝试过所有的办法。
第一批用户
如何快速获取用户量?理想的办法是通过口碑,甚至是病毒式口碑传播。
朋友在用什么新奇的东西,大家都是非常感兴趣的。我希望学生会看到自己的朋友在用CB,然后就问他们这是什么东西。这就是完美的免费营销,毕竟我没钱做广告。
为了促进传播,我在CB上做了一个分享按钮。在使用一周后,CB会非常礼貌地询问用户是否愿意分享到Facebook。用户只用点击一下链接,就可以轻松地与朋友分享了。
但是二月初的时候只有几个朋友使用CB,用户基数太小,所以我决定想办法扩大曝光量。
欢迎来到论坛世界
在大力推广之前,我需要从目标用户那里获取反馈。
高中生和大学生上网最喜欢泡在哪些地方?其实网上没有特别大的高中生社区,但reddit上有很多大学生。
我在某些大学(从我家附近几所大学开始)标签下面发布CB的信息,问问他们对于CB大致怎么看,是否适合给大学生用。
Reddit上有很多高质量用户,他们积极地分享自己的看法,并且还告诉我高中生和大学生的作业的不同之处。
但有一些人怀疑我的身份,坚称我肯定不是14岁的孩子…
比如:
伪装成少年企业家是一个非常牛逼的营销策略。他才14岁?才怪嘞,肯定是个大叔,只是伪装成小孩子,好吸引大家的目光。的确,看到这么小的孩子能做这么多,大家肯定都忍不住会支持他,因为他...还是个孩子。
下面一个人认为我是营销狂魔:
“这肯定不是这个孩子做的,绝对是某个营销老炮的手法。比如说他们甚至能预想到在URL里放一个“ref=reddit”标记。他们在进行病毒营销!”
所以说都14岁的人了,还不会做简单的URL?那我只能呵呵了。
爆发:Product Hunt和乔纳斯乐队的Kevin
2月的首要目标就是上架到Product Hunt。我爸爸在Facebook上发了一条关于CB的帖子后,我听到Metalab的Andrew Wilkinson主动帮我在2月16日把CB推上Product Hunt(在此致谢)。
Andrew刚过半夜的时候发布到了Product Hunt,当时我已经入睡了(其实还没睡着)。
不幸的是,当天Google和Facebook也发布了新产品。
虽然说竞争非常激烈,CB仍然拿到了300个投票,和超级多的鼓励评论,最终在当天排名第六。
看到CB出现在了Product Hunt,我超级开心。这段经历也让我学到了很多创业的经验——包括如何把好的产品展示给尽可能多的用户。
比如说像乔纳斯兄弟乐队的Kevin Jonas。
Kevin Jonas那天在推特上向他的510万粉丝介绍了我的CB,我想可能是因为我的年龄,但我更相信这是因为他看到CB能真正帮助到很多学生。
还有另一个人在Product Hunt发现了CB,他就是BBC新闻的记者Dave Lee。
激动又紧张的BBC新闻访谈
周四——也就是在Product Hunt发布的那一天——BBC的记者Dave在推特上问我有没有空接受采访。
周五下午,我和我爸爸在Skype上跟Dave分享了我的这段经历。在通话之前,我超级紧张,但是Dave让我平静了下来(在此也表示我的感谢)。
Dave跟我们说他当晚就把稿子赶出来,但是我半夜上床时还是没看到。不过第二天早上我查看了CB的后台,发现一夜之间有超过1000名新用户。
原来是因为新闻发布了。
这1000名种子用户反馈了许多bug和新需求。我得从营销模式转成全方位客服模式。
72小时后,Dave给我爸爸发了一份邮件:
“之前您孩子问我这篇稿子会有多少阅读量,我跟他说如果有50万,就很成功了。而现在我很荣幸地告诉您,这篇文章在周六发布后,阅读量已经破百万了。”
哇!在泰国转疯了
根据Facebook分析,超级多新用户来自英国,主要是因为BBC的那篇文章。
但是另一个国家正在超过英国,那就泰国。
这是什么鬼?!
然后有一个新用户发了我一封邮件
原来泰国有个大号在Facebook上推荐了CB,然后收到了11000个赞,3800次分享,和205个评论(当然这些评论我根本看不懂,甚至拿谷歌翻译也没用)
CB的下一步
开发CB对我来说是一个很好学习聊天机器人的方式,我也学会了如何设计友好的聊天机器人的交互。
除了改进课表设置(新用户的普遍需求),我还想优化CB的聊天技能。
我希望他的理解能力更强,这样他可以更好地帮助学生。比如说他可以处理用户回复在表达上的多样性甚至能够识别类似“教刻书”“小测付习”的拼写错误。
CB可以变得更加智能。
我还在思考的一个新功能就是“作业分析”。举个例子,追踪作业量最大的科目。CB每天都收集到非常多的数据,用户可以与其他人分享他们正在学的内容。
我在开发和推广CB的过程收获了很多的乐趣——好玩的比痛苦的经历要多得多。
我希望他能在以后引领我涉足更加有趣的领域。
原文链接:What it’s like to build and market a chatbot when you’re only 14 years old
Twitter主页:Alec Jones