14歲就開發出一款聊天機器人是什麼樣的體驗
譯者按:很多人跟我一樣夢想著從0到1做出一款自己的產品,但卻經常無疾而終。這位14歲的小孩子,讓我羞愧地重新拾起了編程。
我接下來會跟大家分享我在開發一款在Facebook Messenger上的聊天機器人的故事,還有在上線第一周內瘋狂的推廣經歷(包括喬納斯兄弟樂隊的凱文專門為我的產品發了一條推特,某泰國網友在Facebook上對我產品的介紹引起了病毒式傳播,還有BBC的採訪)
1說實在的,真正做出一個有用的東西,比說起來難多了。
跟很多軟體開發者一樣,我之所以想要開發一個有用的東西,最初是為了解決自己的痛點。
我的痛點就是:我一直忘記晚上要做什麼作業。在八年級的時候,我經常得早早爬起來去學校補作業。我想這樣下去可不行,畢竟接下來的四年,我沒法每天早上6:30趕到學校補數學作業。
於是我決定做一個聊天機器人,可以在每節課後提醒我都布置了什麼作業。我也了解到很多學生也遇到同樣的問題。
為什麼是聊天機器人?一方面是因為現在聊天機器人是個熱門開發項目,但更重要的是同學們都機不離手(特別是上課的時候),並且他們也很熟悉打字聊天的方式。
剛開始是通過簡訊來做聊天機器人,但是我很快意識到用美國簡訊服務是需要錢的,不少其他國家也是如此。但好在Facebook Messenger是免費的。
在六七年級的時候,我學了一些PHP,也做過簡單的web應用。但是在Facebookmessenger平台上開發聊天機器人是全新的挑戰,我想這也是學習Ruby on Rails的很好的機會。
我還得學習Messenger的API,以及如何開發一個需要登錄的網站來管理學生的課表。單單這兩樣東西的學習難度就是陡然上升的,但是我一想到能夠把自己的一個點子變成世界各地的學生都會使用的產品,就無比興奮。
2「他還是個孩子啊!」
差不多九個月後,Christopher Bot(下文簡稱CB)誕生了。
但這期間我沒法做到全時間投入,平時得上課,還要足球訓練,並且初期經常反覆推倒重來,所以其實沒有多少大段的寫代碼的時間。
雖然開發過程是斷斷續續的,但是CB最終呈現出來的就是我理想的樣子。他是一個可靠的並且稍微害羞的聊天機器人,非常努力地幫助學生。
接下來我跟大家講講他是如何工作的。
先給CB發條消息,設置好你的課程,他會在每節課快結束的時候給你發消息,問你這節課有沒有作業。在每天結束的時候,CB會發給你一個當天作業清單。
簡單而有效。
我覺得他非常有用,因為學生不需要靠腦子來記作業,CB會及時提醒他們。
當你要度假時,你可以暫停CB的服務,他會問你哪一天恢復消息提醒。如果你下課後忘記告訴他作業是什麼了,你可以在之後補上。
這裡沒什麼複雜的指令。因為大部分學生隨身攜帶手機,CB一直會是他們的貼身助理。
順便說一下Christopher名字的由來:二戰時期圖靈造出了一個機器破解了德軍的恩尼格瑪密碼機,這個機器的名字就叫Christopher。
3想出一個好點子難,真正實現出來更難
對我來說,CB最重要的部分是完美的「記憶力」。他必須要記得及時提醒學生,絕對不能開小差。
簡單的問題和簡單的回應,會讓對話更加高效。CB可能不是最聰明的機器人,但是他很擅長完成自己的任務。
在CB發揮作用前,他需要知道學生的課程信息,所以我得設計一個網頁表單來獲取課表。
我想如果用戶得一格格地填入每天的課表,那太麻煩,可能直接放棄了。所以為了方便大家,我決定設計一個自動填寫的表格,可以把前一天的課表自動複製到當天。
比如說用戶輸入了周一的課表,接著要填寫周二的課表時,就發現周二的課表已經自動填寫上了,要麼直接確認,要麼稍微修改一下。這樣子的話,大部分學生可以在30秒內填寫完課表。
我也努力讓用戶跟CB的對話更快捷,因為課間休息時間非常短。
表情包和GIF動圖比較酷炫,但是我想對話還是簡潔乾淨的好,這樣學生就不需要花很多時間跟CB聊天。(這才是張小龍說的用完即走)
於是我下一個重點就是添加一個「快捷回復」的功能
在輸入框上面有「Yes」和「No」兩個小按鈕,這樣用戶就無需輸入大段文字,並且也使得用戶的回復變得更加可控,我就不必擔心如果用戶輸入「呀」、「喲」、「dei」、「不不不」我該怎麼處理。
最後,我希望CB看上去更加像一個有血有肉的朋友,於是我讓他回復時會稍微延遲一下,來模擬實際聊天時的場景。
如果CB在短於1秒內就回復,有些用戶甚至不會意識到新消息已經發過來了,因為實在太快了。
我覺得輸入延遲是Messenger非常貼心的功能插件,上面還有其他一些工具讓聊天機器人更加擬人化,當然也不至於讓你誤以為跟真人聊天。
4說真的,到底有多少個時區?
開發CB的最大挑戰就是處理世界各地的時區。對時區這個概念我是很清楚的,但是用戶分布在24個不同的時區里,他們上課和提醒記作業的時間需要好好梳理一下,這就需要更深入的思考。
課表時間都是根據用戶的當地時區,每次CB發消息給用戶時,也是依據當地時區的時間。
看上去很簡單,但是CB伺服器生活在某一個特定的時區。
所以當CB在某一時刻查詢資料庫來決定是否要發消息,他首先得檢查一下伺服器時間是否和用戶在當地時區的下課時間是否一致。
我發現最佳的處理辦法就是把所有的時區轉換為UTC時間,這樣我只需要把學生每節課結束時間的旁邊放上UTC時間即可。
5模板萬歲
當你訪問官網 https://www.christopherbot.co/ 時,你會發現網頁還挺漂亮的,但實際上不是我設計的。
我不熟悉HTML/CSS,於是我決定購買一個Bootstrap模板來融入到我的app里。
我估摸著3步就搞定了:
1、購買一個模板
2、把素材放入我的目錄里
3、性感的網站就出爐了
但我還是太傻太天真。
因為CB用的是Ruby框架,但這個模板並不知道我用的是Ruby。於是我就花了好幾天來學習Rail是如何使用JS文件,提取圖片,等等。一周後,我終於搞定了。圖片載入出來了,效果也很不錯。
但是我又遇到其他的問題,JS的圖標動畫太繁雜,導航欄沒法用。最大的問題就是瀏覽器兼容性,在谷歌瀏覽器上頁面滾動太快,Safari和火狐卻是正常的。
我氣得想把電腦扔出窗外,但是一想到扔了還得跟爸媽解釋電腦跑哪兒去了,我想還是老老實實把問題解決了吧。
很顯然我最大的問題就是JS,於是我就採取了比較激進的解決方式。
我把模板中所有的JS代碼都刪了,本以為肯定崩潰的,但是非常神奇的是,正好相反。
不僅滾動速度正常了,兼容性好了,導航欄也能用了,甚至煩人的視覺效果也不見了。
遇到代碼問題,最好不要想著暴力破解法。但是這次卻是完全出乎我意料。所以呢,在放棄之前問問自己,是否已經嘗試過所有的辦法。
6第一批用戶
如何快速獲取用戶量?理想的辦法是通過口碑,甚至是病毒式口碑傳播。
朋友在用什麼新奇的東西,大家都是非常感興趣的。我希望學生會看到自己的朋友在用CB,然後就問他們這是什麼東西。這就是完美的免費營銷,畢竟我沒錢做廣告。
為了促進傳播,我在CB上做了一個分享按鈕。在使用一周後,CB會非常禮貌地詢問用戶是否願意分享到Facebook。用戶只用點擊一下鏈接,就可以輕鬆地與朋友分享了。
但是二月初的時候只有幾個朋友使用CB,用戶基數太小,所以我決定想辦法擴大曝光量。
7歡迎來到論壇世界
在大力推廣之前,我需要從目標用戶那裡獲取反饋。
高中生和大學生上網最喜歡泡在哪些地方?其實網上沒有特別大的高中生社區,但reddit上有很多大學生。
我在某些大學(從我家附近幾所大學開始)標籤下面發布CB的信息,問問他們對於CB大致怎麼看,是否適合給大學生用。
Reddit上有很多高質量用戶,他們積極地分享自己的看法,並且還告訴我高中生和大學生的作業的不同之處。
但有一些人懷疑我的身份,堅稱我肯定不是14歲的孩子…
比如:
偽裝成少年企業家是一個非常牛逼的營銷策略。他才14歲?才怪嘞,肯定是個大叔,只是偽裝成小孩子,好吸引大家的目光。的確,看到這麼小的孩子能做這麼多,大家肯定都忍不住會支持他,因為他...還是個孩子。
下面一個人認為我是營銷狂魔:
「這肯定不是這個孩子做的,絕對是某個營銷老炮的手法。比如說他們甚至能預想到在URL里放一個「ref=reddit」標記。他們在進行病毒營銷!」
所以說都14歲的人了,還不會做簡單的URL?那我只能呵呵了。
8爆發: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。
9激動又緊張的BBC新聞訪談
周四——也就是在Product Hunt發布的那一天——BBC的記者Dave在推特上問我有沒有空接受採訪。
周五下午,我和我爸爸在Skype上跟Dave分享了我的這段經歷。在通話之前,我超級緊張,但是Dave讓我平靜了下來(在此也表示我的感謝)。
Dave跟我們說他當晚就把稿子趕出來,但是我半夜上床時還是沒看到。不過第二天早上我查看了CB的後台,發現一夜之間有超過1000名新用戶。
原來是因為新聞發布了。
這1000名種子用戶反饋了許多bug和新需求。我得從營銷模式轉成全方位客服模式。
72小時後,Dave給我爸爸發了一份郵件:
「之前您孩子問我這篇稿子會有多少閱讀量,我跟他說如果有50萬,就很成功了。而現在我很榮幸地告訴您,這篇文章在周六發布後,閱讀量已經破百萬了。」
10哇!在泰國轉瘋了
根據Facebook分析,超級多新用戶來自英國,主要是因為BBC的那篇文章。
但是另一個國家正在超過英國,那就泰國。
這是什麼鬼?!
然後有一個新用戶發了我一封郵件
原來泰國有個大號在Facebook上推薦了CB,然後收到了11000個贊,3800次分享,和205個評論(當然這些評論我根本看不懂,甚至拿谷歌翻譯也沒用)
11CB的下一步
開發CB對我來說是一個很好學習聊天機器人的方式,我也學會了如何設計友好的聊天機器人的交互。
除了改進課表設置(新用戶的普遍需求),我還想優化CB的聊天技能。
我希望他的理解能力更強,這樣他可以更好地幫助學生。比如說他可以處理用戶回復在表達上的多樣性甚至能夠識別類似「教刻書」「小測付習」的拼寫錯誤。
CB可以變得更加智能。
我還在思考的一個新功能就是「作業分析」。舉個例子,追蹤作業量最大的科目。CB每天都收集到非常多的數據,用戶可以與其他人分享他們正在學的內容。
我在開發和推廣CB的過程收穫了很多的樂趣——好玩的比痛苦的經歷要多得多。
我希望他能在以後引領我涉足更加有趣的領域。
※我是如何從0到1成為一名產品經理
※5000字分析時光相冊憑什麼成為國內版的Google Photos
TAG:職前輩 |
※代表所有睡過頭的人,向起床發出16個天問
※血栓在發作前會給身體發出這5個信號,出現一個就要引起重視
※女人到了排卵期,身體會發出4個「暗號」!此時造人一發就中
※身體發出的求救信號,這7個中了4個就需要好好睡一覺啦
※男人身體發出這5個「信號」,說明在慢慢變老了,你佔了幾個?
※男人想丟下你,會發出這4個「信號」,收到一個就要主動離開
※減肥時身體若發出3個「暗號」,可能你開始變瘦了,特別是第2個
※這個胖200斤的姑娘,消失2年,如今發出照片卻出現了驚人的一幕,她是怎麼做到的
※排卵期,女人身體發出這3個信號時,抓住機會「一擊就中」
※男人開始「厭倦」你了,會發出這3個信號,佔一條就別再付出了!
※身體發出15個「必須要休息」的信號,你收到了嗎
※血栓「鬧事」前,身體會發出這4個信號,很多人一次又一次錯過了
※女人在35-40歲期間,如果身體發出這幾個信號,可能絕經早提前了
※身體發出的8個信號,你收到了嗎?
※當一個男人對你發出這3個信號的時候,還是儘早分手吧!
※女人發出這5個信號,就是想分手了,早點離開吧
※女人過了35歲身上若有這5個表現,是卵巢向你發出「衰老信號」
※女人過了35歲,如果身體向你發出這3個「信號」,很遺憾,你快絕經了
※到了排卵期,身體會發出這4個信號,你的最佳受孕時機來了
※血栓來臨前身體會發出5個「信號」,出現一個最好查下去