Bottender 0.15 正式發佈

C.T. Lin
YOCTOL.AI
Published in
5 min readJul 20, 2018

在經過半年的開源旅程之後,非常興奮能在今天向大家介紹 Bottender v0.15,我們在這次 Release 中加入了許多來自實務經驗的改進以及社群的回饋,同時也感謝各位參與者的貢獻與支持。

只要一行簡單的指令就可以馬上從 npm 安裝最新的套件。請在你的 Terminal 輸入以下指令來進行升級:

$ npm i bottender@latest

如果你是使用 yarn 來安裝,請使用這個指令:

$ yarn add bottender@latest

我們相當重視開發者體驗,在版本的更動時盡量避免 Breaking Change,這樣平緩的升級軌跡,讓大多數開發者都能無痛的升級。

所有的 Breaking Change 以及完整的 CHANGELOG 請見 GitHub release 頁面

改善開發體驗

開發者的體驗一直都是我們最重視的一個環節,在 v0.15,我們加入了兩個對於開發者來說相當實用的功能,不但能加速開發,更能大幅提升除錯的速度。

ConsoleBot

使用 ConsoleBot ,可以直接在終端機 Console 檢視開發成果,大幅度減少開發初期佈署、平台設置或是權限審核的煩惱等。在部分情況下,甚至無需連接網路就可以開發,以便達到更加敏捷的開發體驗。

使用 fallbackMethods 的效果

debug

我們利用了 debug 套件來整理除錯所需要的詳細資訊,你可以藉由調整 DEBUG環境變數來設定想要的偵錯訊息,目前支援的有下列幾種:

DEBUG=bottender:*
DEBUG=bottender:request
DEBUG=bottender:session:read
DEBUG=bottender:session:write

在開發期間完整的監控收到的 Request 以及 Session 的讀寫,方便追蹤錯誤以及了解程式的運作流程。

藉由 Batch 提升效能

在這個版本中, 我們針對 Messenger 和 LINE 平台分別推出了 Batch 設定,可以大幅減少呼叫平台 API 的次數。

Messenger Batch

在 Messenger 上,利用 Graph API 所支援的 Batch 功能,在最好的情況下可以把 HTTP 的 Request 次數降至 1/50,並在超過 Request 次數限制時進行 Retry 以確保 Chatbot 在高流量下的可用性:

const { isError613 } = require(‘messenger-batch’);new MessengerBot({
// …
batchConfig: {
delay: 1000,
shouldRetry: isError613, // (#613) Calls to this api have exceeded the rate limit.
retryTimes: 2,
},
});

LINE Batch

而在 LINE 上,能把 5 個訊息合併在一個 Request 送出。如此一來,在使用 Reply API 時就能最大限度的去利用 Reply Token:

new LineBot({
// …
shouldBatch: true, // Default: false
});

更完善的平台功能

在 v0.14.x,我們導入了新的平台 Viber,並讓各平台功能漸趨完善。v0.15 更支援了幾個最近才推出的平台功能,例如:

LINE Flex Message 範例圖片

自定義 Connector

Bottender 的設計理念之一,就是要提供彈性且功能完善的 Connector,讓連接任何平台成為可能。

除了目前 Bottender 內建提供的 Console、Messenger、LINE、Slack、Telegram、Viber Connector 外,你想接什麼就接什麼!詳細的使用方法可以參考這份文件

如果你自己開發了新的 Connector,歡迎發佈到 npm 並加上 bottender-connector 的 keyword 跟大家分享!

擁抱社群

在這段時間我們持續地在 Twitter 與 GitHub 上聽到許多社群的聲音,為了得到更多開發者的回饋,我們在 Discord 建立了新的 Bottender 開發者社群,提供一個更方便的交流管道,快加入 Discord Bottender 頻道進行討論並得到第一手資訊!

此外,為了協助開發者順利解決 Bottender 相關的開發問題,我們也在 Stackoverflow 建立了 bottender 的 Tag,有任何問題都歡迎在上面進行發問!

邁向未來

我們的理念是不斷的提升易用性以及精進效能,以下是未來發展的主要的方向:

更友善的開發環境

我們將持續地跟許多開發友善的專案學習(例如:React),為常見的問題提供易懂的錯誤訊息與解決步驟,並提供更多有效的偵錯手段。

支援更多的平台

除了計畫持續開發既有平台的新功能外,我們也收到社群對於 WeChat、Discord、Web 這些平台的期待。

經由累積開發 Connector 的經驗,未來也能讓自定義 Connector 的介面與文件更完善。

Serverless

我們已經開始在幾個主要的雲端提供商上嘗試 Serverless 的實驗,例如:AWS Lambda、Google Cloud Functions、Azure Functions 等等。在營運較低頻率對話服務時,能夠大幅度降低所需要的成本,而我們希望能同時確保使用者的體驗不會受到影響。

--

--

C.T. Lin
YOCTOL.AI

Architect @ Dcard. Author of Electron React Boilerplate and Bottender. JavaScript Developer.