Column 1 | Column 2 | Column 3 |
---|---|---|
Text | Text | Text |
我們每個月在台北以及台中會舉辦小聚,歡迎各位報名、推薦講者以及閃電秀,介紹自己開發的 chatbot、 分享 chatbot 相關的議題。
open source -> 對品質的要求
註解文件 test case
bot = stateless
必須知道整個對話的狀態
把無狀態轉成有狀態
HTTP 的 Session 機制:
psid
- fb 的特殊IDuserId
為 unique idevents
也一樣可能有針對不同 session 的事件groupId
是更好的 unique key;用 userId
則無法知道整個頻道的脈絡機器人的 Session 機制:利用 Signature Verification 來避免偽造
發出的Request, 包含PSID,就是很好的 Unique Key
有的聊天軟體會在一個 Http request 塞兩個以上的User message
要特別小心。
使用標準做法不會害到你XD
SessionHandlerInterface
要實作 read($sessionId)
、write($sessionId, data)
儲存方式:
file: 可以,但無法多主機
cookie: 聊天機器人不能用
database:
Dict
Bottender 也是使用相關機制
State + Event --> Action + Next State
ex: 訂飲料 要知道杯數品項甜度冰塊
Slot filling
ex: 使用者:薯條去鹽加四塊雞
EX: 牛奶是用光泉的嗎
使用者的選擇會觸發特定的問題
點雞塊->雞塊需要糖醋醬嗎?
條件式作答在 chatbot 中也是很常見的問題
因故無法進行下去,要退出對話狀態?
變成是其他的對話處理
ex: 講到一半不買了、或問廁所在哪
State + Event --> Action + Next State
Action: 可能需要跳出
提示使用者接下來要回什麼
更有機會暗示使用者達到我們想做的事情
Telegram 也有 Eason
其實 LINE 也有 quick reply mrorz太棒了,謝謝分享XD 😆
資料不夠只用聊天,
開一個網站來收集需要的資訊
LIFF -> Web view 很好用喔,如果能別在 chatbot 中做的表單就最好讓 webview 去處理XD NiJia
要表現的聰明自然的多輪對話,要綜觀全局,與模組化背道而馳
EX: 訂餐與問廁所,不該在同一個 Module
無論用 Regex 或 ML,都會有誤判
只服務大多數使用者
升級版本時,也必須考慮對對話中使用者造成的影響
Q: 如果一句話有多個訊息,推薦如何擷取裡面的資訊?
A: 都不太準 XD 有些人只會處理產品要的 case,與業務目標無關的就不處理(如閒聊),少數的 User 會觸發大量的 Case,可以專注在大量主要問題。
Q: 分支的部分,實際上會使用什麼 design pattern?應該不會一直用 if/else
A:
卓騰語言科技
Rule Based 中文 NLU 引擎 均民
App: 看到 –> app store -> download -> install -> open -> register -> member
Bot: 看到 –> install (add contact) –> member
成為快速打造 MVP 的
https://github.com/jarsing/linebotone
開源專案讚讚,快來幫忙按星星 均民
AARRR 模型
R/ti/p/@id
) 與預填文字(R/oaMessage/@id/text
)使用短網址服務,分享短網址時加上 utmuserId
/batch
endpointqt
參數來補送最久 4 小時前的 hitliff.getProfile()
拿 userId
getOS()
, getLineVersion()
https://www.google-analytics.com/collect
beacon)
保證模型的一致性
@標記
:機器人可以拿到 @XXX
文字訊息,但無法分辨是否有 @ 成功
利用:
Flex message 圖表成本高;Image map 維護成本更高。
講者:分享地點功能真的沒人在用
點按鈕開 google map
LINE Notify 跟 LINE bot(一個 channel 只能放一個)可以共存在群組裡
rich menu 的 LINE scheme: 醜,不行
LIFF 內 share target picker:UI 比較漂亮
A: LIFF 可以知道自己在哪一個群組點開的