大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

這次 LINE TECHPULSE 2020 的會場選在南港展覽館的 2 館 7 樓。

Image for post
Image for post
LINE TECHPULSE 主看板

LINE API Expert 的攤位

LINE TECHPULSE 的會場有專門提供給 LINE API Expert 的攤位,LINE API Expert 們都各準備了一個主題來發表,我也不例外。

使用 StarUML

大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

今天要來教大家如何快速生成 ERD (Entity-Relationship Diagram)文件。ERD 是以圖像化呈現資料表之間關聯的一種圖表,在做資料庫系統設計時、或在嘗試理解一個既有的資料庫時會用到。

繪圖工具 — StarUML

StarUML 是專門用來畫 UML (Unified Modeling Language) 的付費軟體,而 ERD 是屬於 UML 當中的一種圖,除了 ERD 之外 UML 還有各式各樣用來描述系統的圖表,這裡就不一一介紹了。

Image for post
Image for post

StarUML 可以安裝各種 Extensions 來強化功能,而其中有一個 Extension 叫做「Entity Relationship DataModel Generation」,它的功能是從資料庫生成 ERD。

安裝 StarUML Extension

安裝 Extension 的方法很簡單,在 StarUML 的主選單上選擇 Tools > Extension Manager… 就會看到:

使用 Bottender 開發

大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

今天要來教大家怎麼在 Windows 使用 Node.js 來打造專屬於你的 Slack Bot 聊天機器人,本文將包含以下章節:

  • 安裝 Node.js
  • 安裝 Visual Studio Code
  • 註冊 Slack App
  • 建立及設定 Bottender 專案
  • 設定 Slack App
  • 測試結果

每個章節中都包含所有詳盡的步驟截圖以及對應的說明,確保大家都能從零開始順利製作出屬於自己的 Slack Bot

安裝 Node.js

Node.js 是我們開發 Slack Bot 聊天機器人時所需要使用的執行環境,他能執行 JavaScript 程式語言,這是我們打算要使用的程式語言。

首先開啟網頁:https://nodejs.org/zh-tw

大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

今天要來教大家如何使用 npm link 來進行 node module 的測試,如果你正在開發 node module,或你不想要重複下載多份 node module 到你的專案,那麼你一定要學一下,今天會提到的內容如下:

  1. 如何避免 node module 重複下載
  2. 如何使用 npm link 來進行 node module 的測試
  3. 什麼是 npm
  4. 什麼是 node module
  5. 什麼是 npm link

這次試試看先講結論,再講原理。

如何避免 node module 重複下載

要避免 node module 在每個專案都下載一份的方法就是用 npm link {套件名稱} 來安裝套件,而不要用 np …

以 Bottender 實作假的電商客服為例

大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

今天要來教大家怎麼使用 Node.js 和 Dialogflow 打造一個聰明的 LINE 電商客服機器人。我會按照以下的順序來說明:

  1. 認識 Dialogflow
  2. 使用 Bottender 實作假的電商客服 LINE Bot
  3. 導入 Dialogflow 來優化用戶體驗

認識 Dialogflow 當中會簡單說明 Dialogflow 是什麼,以及使用 Dialogflow 有什麼好處。在使用 Bottender 實作假的電商客服 LINE Bot 當中會說明如何實作以規則解析對話的 LINE Bot,接著在導入 Dialogflow 來優化 …

大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

LINE 官方帳號 2.0 政策

由於 LINE 官方帳號改版 2.0 的關係,發送推播訊息的成本高漲,尤其是發送訊息到 LINE 群組的成本直達天際,每則訊息的價格是群組人數 x 0.2 元,也就是說發送一則訊息到 500 人的群組需要支付 100 元!

除了逃難到 Telegram 之外,真的沒別招了嗎?

我卡米哥身為 LINE API Expert,今天就要來教大家一個祕技,我相信絕大多數的 LINE Bot 開發者都不知道這招。我將說明如何在已經含有 LINE Bot 的 LINE 群組發送免費推播。

免費推播到 LINE 群組的原理

卡米哥沒在跟你藏招的,答案其實很簡單,有一些 LINE 官方帳號可以 …

大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

今天要來教大家怎麼在 Windows 使用 Node.js 來打造專屬於你的 LINE Bot 聊天機器人,本文將包含以下章節:

  • 安裝 Node.js
  • 安裝 Visual Studio Code
  • 註冊 LINE Bot 聊天機器人
  • 建立及設定 Bottender 專案
  • 設定 LINE Bot 聊天機器人
  • 測試結果

每個章節中都包含所有詳盡的步驟截圖以及對應的說明,確保大家都能從零開始順利製作出屬於自己的 LINE Bot 聊天機器人。

安裝 Node.js

Node.js 是我們開發 LINE Bot 聊天機器人時所需要使用的執行環境,他能執行 JavaScript 程式語言,這 …

大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

本篇文章將嘗試說明人工智慧、聊天機器人以及他們之間的關係,以及目前在聊天機器人上的應用。為了讓一般人也能讀懂,我會使用一些比喻,也許不是那麼精確,請各位大大們指教時小力一點。

人工智慧

人工智慧顧名思義就是可以用電腦作到一些看起來只有人類能做到的事,比方說分析、預測、決策等這方面的事情。早期是由人類設計數學模型並且寫成程式碼,電腦只負責做計算,不過目前比較主流的解法是使用機器學習的方式來解決問題。

機器學習

機器學習其實就是人類想要把設計數學模型這步也交給電腦去做,目前電腦的做法其實就是在大量的數學模型當中找到一個表現比較好的模型。當然人類必須告訴電腦什麼是「好」,電腦才有辦法做學習。所以人類要提供訓練資料或者價值觀給電腦,我們這裡關注訓練資料的部分就好。關於價值觀的部分,那又是另外一個世界了。

訓練資料

一筆訓練資料是由題目和答案所組成。電腦會嘗試使用許多個數學模型去閱讀訓練資料,看看哪一個模型的表現比較好。用一個簡單的比喻來說,數學模型就是學生,訓練資料就是老師,而訓練過程其實就是老師在上課。上完課之後當然就是挑出品質最好的學生,雇用他來工作。

既然訓練資料是老師,那麼老師的品質會影響學生的表現嗎?當然會!

聊天機器人

聊天機器人顧名思義就是可以聊天的機器人,我把他們簡單分為兩種:聽覺系和視覺系,比方說在智慧音箱或手機上的 Apple Siri、Google Assistant 這種語音類型的服務是屬於聽覺系聊天機器人,而例如 Messenger、LINE、Telegram、Slack 等通訊平台上的自動回覆系統算是視覺系聊天機器人。

聽覺系聊天機器人

聽覺系聊天機器人目前的處理方式是會先將語音轉成文字,後面走文字處理的流程,最後再將聊天機器人回覆的內容轉回語音播放。關於語音轉文字以及文字轉語音這塊目前是用人工智慧來解決的,似乎也沒有比人工智慧更好的解法。

對聽覺系聊天機器人來說,語音轉文字以及文字轉語音是硬需。

視覺系聊天機器人

當你傳一句話給聊天機器人的時候,聊天機器人是怎麼知道你在講什麼呢?這部分是透過文字比對法、搜尋引擎法、自然語言理解等方法來做的。

文字比對法

文字比對法就像是早期的人工智慧,是由工程師寫下一堆範例句型,當用戶說出滿足任何一個範例句型的話時,就能知道用戶想要表達的意思。這裡有個大問題就是用戶說出的句子可能同時滿足多個句型,這時候該怎麼辦呢?工程師必須事先決定好每個範例句型的優先級,並且祈禱不會發生任何的衝突。想當然在規則越多的時候,炸裂的機率也就跟著越高。

搜尋引擎法

搜尋引擎是把所有的內容都放到搜尋引擎當中,用戶說出一句話時,就從內容中找到最接近的,直接傳回第一筆內容做為答案。其實要傳回多筆內容也不是不行,只是在聊天機器人上面通常沒有那麼大的版面。

自然語言理解

自然語言理解則是透過機器學習的方式來迴避掉工程師需要維護規則優先級以及句型衝突的問題。事實上,在複雜的情況下根本不可能用人類寫規則的方式來滿足需求,透過大量的訓練資料讓電腦自行生成規則才是正解。

按鈕式介面

在視覺系聊天機器人上,經常可以看到按鈕的出現。這是聽覺系無法做到的事,或者說在聽覺系上做這件事情就會顯得彆扭,想像一下目前自動客服系統都是怎麼做的:「… 轉接真人客服請按【9】」。

自然語言理解在聽覺系聊天機器人上可能是硬需。

在視覺系上提供按鈕的好處顯而易見,如果用戶能夠點擊一下畫面就解決事情,那麼用戶絕對不會想要打字,想像一下打字要點擊多少下啊!這也就是為什麼在通訊平台上的主流聊天機器人都是按鈕式介面,因為這實在是太方便了。使用按鈕的聊天機器人不只用戶體驗好,開發者也不用解決困難的問題。

按鈕在視覺系聊天機器人上是硬需,讓用戶用點擊按鈕能有效降低開發成本,也能獲得好的用戶體驗。

難道自然語言理解在視覺系上沒搞頭嗎?

其實視覺系聊天機器人那一堆按鈕的畫面呈現方式很像 Yahoo 入口網站,由於內容漸漸越來越多、越來越複雜,使用目錄來呈現內容的方式,很難讓用戶迅速找到想要的東西,最後這種純目錄式的設計最終還是輸給了 Google 搜尋引擎。至今,幾乎所有的大型網站上都提供了搜尋框。

搜尋框在大型專案上是必備的。

其實視覺系聊天機器人天生就有搜尋框,那就是文字輸入介面。我們可以把文字輸入直接視為搜尋功能,使用自然語言理解技術,讓用戶迅速找到對應的內容,並且以按鈕呈現,讓用戶不用一直打字。

可是我的內容很少

很多案主通常會以為他只要付錢,其他什麼事都不用做,就能獲得一個品質良好的聊天機器人。殊不知開發者做完功能時,系統上可是一點內容都沒有的呢!想像一下如果 Google 只有幾筆資料,卻不直接顯示資料列表,而是顯示一個搜尋框,到底是想要氣死誰?也就是說,內容不多的情況下,自然語言理解確實是沒什麼搞頭的。

⚠️注意:如果你的內容很少,做搜尋框給用戶會降低用戶體驗

人工智慧在聊天機器人上的應用

做個總結,在聽覺系聊天機器人上必備的人工智慧有「語音轉文字」、「文字轉語音」、「自然語言理解」,然而這些酷炫的東西在視覺系聊天機器人卻都只是選配而已。

大人的想法當然會是「我全都要」這應該不用解釋吧?

不過要使用自然語言理解的話,記得要請專業人士來輸入訓練資料,要不然訓練出智障機器人是很常見的,不要因為機器人很智障就覺得是開發者智障,因為智障的人通常是…

巧婦難為無米之炊啊~

我們正在開發的 Bottender:Node.js 上的聊天機器人框架,目前主要是針對視覺系聊天機器人來設計。作為一個高品質的聊天機器人框架,我們當然也有提供串接到自然語言理解服務的功能,如果你想要做個豐富內容的視覺系聊天機器人,那麼 Bottender 就是你最好的選擇。

都看到這裡了,不拍個手嗎?

大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

今天我要教大家如何在 Bottender 當中使用 LIFF

Bottender 是使用 Node.js 開發的多平台聊天機器人框架(multi-platform chatbot framework),而 LIFF 則是 LINE 提供的前端框架(LINE Front-end Framework)。

LIFF 主要的功能是讓用戶可以在 LINE 當中,只佔用部分版面的情況下開啟網頁,而這個網頁可以和 LINE App 進行互動,比方說獲取用戶資訊、代替用戶傳送訊息、掃描 QR Code 等功能。

因為開發 LIFF 需要寫網頁,而在 Botte …

大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

今天要來帶給大家的是一個用 Bottender 實作的 LINE Bot 範例程式,核心功能是當用戶在 LINE 上發送訊息時,就將訊息儲存至 Google Sheets 上。

動線設計

當用戶隨便打字的時候就會顯示一個 Flex Message,點擊 Flex Message 上的按鈕後會看到一個 LIFF:

Image for post
Image for post
點擊按鈕後彈跳出 LIFF

這是為了使用 LIFF 的「用外部瀏覽器開啟網頁」功能。如果用戶已經在外部瀏覽器上登入 Google,就不必重新輸入帳號密碼。

卡米哥

在追求真理的道路上

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store