HackMD
  • Prime
    Prime  Full-text search on all paid plans
    Search anywhere and reach everything in a Workspace with Prime plan.
    Got it
    • Prime  Full-text search on all paid plans
      Prime  Full-text search on all paid plans
      Search anywhere and reach everything in a Workspace with Prime plan.
      Got it
      • Sharing Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • More (Comment, Invitee)
      • Publishing
        Everyone on the web can find and read all notes of this public team.
        After the note is published, everyone on the web can find and read this note.
        See all published notes on profile page.
      • Commenting Enable
        Disabled Forbidden Owners Signed-in users Everyone
      • Permission
        • Forbidden
        • Owners
        • Signed-in users
        • Everyone
      • Invitee
      • No invitee
      • Options
      • Versions and GitHub Sync
      • Transfer ownership
      • Delete this note
      • Template
      • Insert from template
      • Export
      • Dropbox
      • Google Drive
      • Gist
      • Import
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
      • Download
      • Markdown
      • HTML
      • Raw HTML
    Menu Sharing Help
    Menu
    Options
    Versions and GitHub Sync Transfer ownership Delete this note
    Export
    Dropbox Google Drive Gist
    Import
    Dropbox Google Drive Gist Clipboard
    Download
    Markdown HTML Raw HTML
    Back
    Sharing
    Sharing Link copied
    /edit
    View mode
    • Edit mode
    • View mode
    • Book mode
    • Slide mode
    Edit mode View mode Book mode Slide mode
    Note Permission
    Read
    Owners
    • Owners
    • Signed-in users
    • Everyone
    Owners Signed-in users Everyone
    Write
    Owners
    • Owners
    • Signed-in users
    • Everyone
    Owners Signed-in users Everyone
    More (Comment, Invitee)
    Publishing
    Everyone on the web can find and read all notes of this public team.
    After the note is published, everyone on the web can find and read this note.
    See all published notes on profile page.
    More (Comment, Invitee)
    Commenting Enable
    Disabled Forbidden Owners Signed-in users Everyone
    Permission
    Owners
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Invitee
    No invitee
       owned this note    owned this note      
    Published Linked with GitHub
    Like BookmarkBookmarked
    Subscribed
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    Subscribe
    --- title: COSCUP 2020 共筆 tags: COSCUP2020 --- | Column 1 | Column 2 | Column 3 | | -------- | -------- | -------- | | Text | Text | Text | # 8/2 10:00-16:00 @ Room TR212 :::info [TOC] ::: # Chatbot Taiwan 我們每個月在台北以及台中會舉辦小聚,歡迎各位報名、推薦講者以及閃電秀,介紹自己開發的 chatbot、 分享 chatbot 相關的議題。 - [直播連結](https://flyis.me/chatbottwlive) - [點此加入臉書社團](https://www.facebook.com/groups/chatbot.tw) - [點此加入 LINE 群組](https://lihi1.com/UUdgg) - [每月台北台中小聚公布後可在 KKTIX 報名](https://chatbots.kktix.cc/) # 10:00 ~ 10:40 聊天機器人 Session 管理與多輪對話 - C. T. Lin > [議程簡介](https://coscup.org/2020/zh-TW/agenda/HLEXAD) > [簡報](https://docs.google.com/presentation/d/1eidtEKh1O_gZ4xMLaROKjP11YXORRR7NzzJUC_ufD4E/) > [分享 LINE 數位版簡介](https://liff.line.me/1654437282-8ORYBGgE/?template=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jYXJkcy9jaGF0Ym90LXR3LWNvc2N1cC0yMDIwLnR4dA&csv=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jc3YvY2hhdGJvdC10dy1jb3NjdXAtMjAyMC5jc3Y&key=aWQ&value=MQ) ## Speaker * fullstack js developer * <https://github.com/chentsulin> open source -> 對品質的要求 註解文件 test case ## [Bottender](https://bottender.js.org/) bot = stateless 必須知道整個對話的狀態 把無狀態轉成有狀態 HTTP 的 Session 機制: - 經典:Cookie - 請求 Response 包含 Set Cookie - chatbot 不運用瀏覽器做事,無法使用 cookie - Websocket, command line - 可信任來源後就可以歸納 id - messenger 為例子 - `psid` - fb 的特殊ID - 若是一對一的行為需要多注意 entry session 的事件 - LINE messenger 文字事件 - `userId` 為 unique id - `events` 也一樣可能有針對不同 session 的事件 - LINE 群組的文字事件 - `groupId` 是更好的 unique key;用 `userId` 則無法知道整個頻道的脈絡 - 有兩種對話視窗 room & group 機器人的 Session 機制:利用 Signature Verification 來避免偽造 ## 從 Request 抓出可靠的 Session ID 發出的Request, 包含PSID,就是很好的 Unique Key 有的聊天軟體會在一個 Http request 塞兩個以上的User message 要特別小心。 ## Session 儲存方式 使用標準做法不會害到你XD - 資料庫資源 key-value 都可以支援 - 除了 cookie-based (加密存去 cookie) 不適用之外,其他 key-value based 的 session 處理方式都可以 - ex: PHP Larvel 的 `SessionHandlerInterface` 要實作 `read($sessionId)`、`write($sessionId, data)` 儲存方式: - file: 可以,但無法多主機 - cookie: 聊天機器人不能用 - database: - Dict - Bottender 也是使用相關機制 ## 多輪對話的技術原理 - 需要知道 - 使用者講過的內容 - 機器人問過什麼問題 - 這個情況下有不同的使用機制 ``` State + Event --> Action + Next State ``` - state: 之前累積的資訊、問了什麼問題 - event: 使用者(現在)講什麼 ## 主要應用情境:抓參數的多輪對話 > ex: 訂飲料 要知道杯數品項甜度冰塊 Slot filling - 把參數準備到位 - 驗證使用者輸入,不符合時要求重填 - 現實的對話不會照順序 - 使用者一句話可能包含多個資訊 > ex: 使用者:薯條去鹽加四塊雞 - 不希望機器人像 NPC - 用問句來回答問句 - 使用者要問細節問題 - > EX: 牛奶是用光泉的嗎 - QA用途 - 要設計好 UX - conversional 所需要注意的狀態 ## 對話分支 - 使用者的選擇會觸發特定的問題 點雞塊->雞塊需要糖醋醬嗎? - 條件式作答在 chatbot 中也是很常見的問題 ## 跳多進行中對話 因故無法進行下去,要退出對話狀態? 變成是其他的對話處理 ex: 講到一半不買了、或問廁所在哪 ``` State + Event --> Action + Next State ``` - state: 之前累積的資訊、問了什麼問題 - event: 使用者(現在)講什麼 --> 中間產物:intent Action: 可能需要跳出 ## 各平台應用上的差異 ### Quick Reply 提示使用者接下來要回什麼 更有機會暗示使用者達到我們想做的事情 > Telegram 也有 [name=Eason] > 其實 LINE 也有 [quick reply](https://developers.line.biz/en/docs/messaging-api/using-quick-reply/) [name=mrorz] > > 太棒了,謝謝分享XD 😆 ### Messenger Webview / LINE LIFF 資料不夠只用聊天, 開一個網站來收集需要的資訊 > LIFF -> Web view 很好用喔,如果能別在 chatbot 中做的表單就最好讓 webview 去處理XD [name=NiJia] > ### Slack Modal: 跳出一個表單出來要使用者填寫 ### 模組化的兩難 要表現的聰明自然的多輪對話,要綜觀全局,與模組化背道而馳 > EX: 訂餐與問廁所,不該在同一個 Module > 無論用 Regex 或 ML,都會有誤判 - 當 branch 太多時較容易誤判 - 考慮所有情況去做,開發會不符合成本 只服務大多數使用者 升級版本時,也必須考慮對對話中使用者造成的影響 ## 結論 - 人熟悉的對話式介面,機器人不擅長 - 人很會處理突發狀況,機器人也不擅長 - 目前還無法用低成本開發出 ## QA Q: 如果一句話有多個訊息,推薦如何擷取裡面的資訊? A: 都不太準 XD 有些人只會處理產品要的 case,與業務目標無關的就不處理(如閒聊),少數的 User 會觸發大量的 Case,可以專注在大量主要問題。 Q: 分支的部分,實際上會使用什麼 design pattern?應該不會一直用 if/else A: - if/else 可以抽出成 router - 把它描述成一個 Function # 10:50 ~ 11:10 CBFHSS 專為高中生設計的管家型聊天機器人 - 廖煥杰 > [議程簡介](https://coscup.org/2020/zh-TW/agenda/EL8MH8) > [簡報](https://drive.google.com/file/d/1E-3CVPpzKCl6Cuw01Qx92LoLC7IUjskv/view?usp=sharing) > [分享 LINE 數位版簡介](https://liff.line.me/1654437282-8ORYBGgE/?template=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jYXJkcy9jaGF0Ym90LXR3LWNvc2N1cC0yMDIwLnR4dA&csv=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jc3YvY2hhdGJvdC10dy1jb3NjdXAtMjAyMC5jc3Y&key=aWQ&value=Mg) ## 學生端功能 * 作業 * 考試 * 段考 * 體溫查詢 ## 教師處室端功能 * 查詢班上同學的體溫 ## Other * 每班級一個 channel,30 個同學,四個禮拜,剛好不會超過 pushMessage 的上限 # 11:20 ~ 12:00 Loki: 專為中文開發一個 NLU 意圖分類引擎 - PeterWolf > [議程簡介](https://coscup.org/2020/zh-TW/agenda/8VPX8V) > [簡報](https://bit.ly/Loki_COSCUP2020) > [分享 LINE 數位版簡介](https://liff.line.me/1654437282-8ORYBGgE/?template=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jYXJkcy9jaGF0Ym90LXR3LWNvc2N1cC0yMDIwLnR4dA&csv=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jc3YvY2hhdGJvdC10dy1jb3NjdXAtMjAyMC5jc3Y&key=aWQ&value=Mw) ### Speaker 卓騰語言科技 ### NLU 引擎 - LUIS - DialogFlow - Loki ### 功能 - 意圖分類 - 參數擷取 ### bot type - click bot (靠主選單使用所提供的功能) - keyword bot (只匹配關鍵字) - 關鍵字做不好,就只好給使用者所有可用關鍵字清單 - 背離 chatbot 初衷 - 到底跟 web1.0 有何差別? - 需要大量的關鍵字 (包含縮寫) - 很容易對應不到關鍵字或是對牛彈琴 - 專案活越久就越難維護 - 由於缺少專門為中文設計的 NLU 引擎,所以現在只看的到各種幹話機器人 ### Loki 有何不同? > Rule Based 中文 NLU 引擎 [name=均民] - 利用 ML 來產生穩定的中文模型非常困難 - 中文剛好是已知語言系統中「最缺乏的詞綴系統」的前幾名 - 要解決中文 NLU 問題,需要句法 (grammer) 介入 (文截 Articut) - 以 Articut 為底,我們打造了專為中文 NLU 設計的 Loki # 12:10 ~ 12:30 Dialogflow with LINE bot 應用語意分析於 LINE Bot 開發的小技巧 - Wolke Lin , 林建宏 > [議程簡介](https://coscup.org/2020/zh-TW/agenda/FT8N9V) > [簡報](https://docs.google.com/presentation/d/1_TMyojFblrNTKqvMVG1PE1PHg_ZHQph1qb_xhBsE1nw/edit?usp=sharing) > [分享 LINE 數位版簡介](https://liff.line.me/1654437282-8ORYBGgE/?template=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jYXJkcy9jaGF0Ym90LXR3LWNvc2N1cC0yMDIwLnR4dA&csv=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jc3YvY2hhdGJvdC10dy1jb3NjdXAtMjAyMC5jc3Y&key=aWQ&value=NA) ### Speaker * LINE API Expert * Assistant Google Developer Export * <https://medium.com/wolkesau> * <https://www.facebook.com/voiceappstudio> ### 為什麼要放棄 App 改做聊天機器人? - haagen dazs 取消 app 只做 LINE app - 使用者早已不安裝新的 App - App 營運成本較高 ### 有 LINE bot 就好了嗎? - 只做制式回應的 bot - 請使用者打電話、查官網 - bot 直接不回應 - 候選人 LINE bot 隨機回應,搏感情但答非所問 ### App 與 bot 的 Funnel 差異 App: 看到 --> app store -> download -> install -> open -> register -> member Bot: 看到 --> install (add contact) --> member ### 推撥開信率 - email: 容易進垃圾信箱 - app: 通知發太多容易被關掉授權 - line: 因為使用者每天有使用習慣,所以比較容易讀到,但是 push API 很貴 - 某 official account 發錯訊息、再發一篇更正,來回花 50 萬。 ### Dialogflow 解決問題 - 銀行 app 利用 button 導引 - 使用者回答「利率」則對應到一個 intent # 12:40 ~ 13:00 一份試算表、一台主機、一支機器人 - 奇步老爹(陳佳新) > [議程簡介](https://coscup.org/2020/zh-TW/agenda/EXBECY) > [簡報]() > [分享 LINE 數位版簡介](https://liff.line.me/1654437282-8ORYBGgE/?template=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jYXJkcy9jaGF0Ym90LXR3LWNvc2N1cC0yMDIwLnR4dA&csv=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jc3YvY2hhdGJvdC10dy1jb3NjdXAtMjAyMC5jc3Y&key=aWQ&value=NQ) - 2019 創業歸故里競賽冠軍 - 不會寫程式也能做聊天記器人嗎?可以用 LINE OA 後台來做 ### 賴霸萬 linebot.one 成為快速打造 MVP 的 <https://github.com/jarsing/linebotone> > 開源專案讚讚,快來幫忙按星星 [name=均民] # 13:10 ~ 13:50 在 LINE Chatbot 中串接 Google Analytics 的經驗分享 - 和風信使 > [議程簡介](https://coscup.org/2020/zh-TW/agenda/UR7WGZ) > [簡報](https://hackmd.io/@taichunmin/slide-coscup-2020) > [分享 LINE 數位版簡介](https://liff.line.me/1654437282-8ORYBGgE/?template=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jYXJkcy9jaGF0Ym90LXR3LWNvc2N1cC0yMDIwLnR4dA&csv=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jc3YvY2hhdGJvdC10dy1jb3NjdXAtMjAyMC5jc3Y&key=aWQ&value=Ng) ### 使用者增長框架 AARRR 模型 - A (Acquisition): 獲取用戶 - A (Activation): 產品互動,第一次使用 - R (Retention): 提高留存,讓使用者願意回來 - R (Revenue): 獲取收入 - R (Referral): 使用者推薦其他使用者 ### 如何蒐集增長框架用的數據 1. 網頁跳轉 + UTM - Email 寄出的連結、Facebook 分享的連結加 utm - 加入 (`R/ti/p/@id`) 與預填文字(`R/oaMessage/@id/text`)使用短網址服務,分享短網址時加上 utm 2. 使用 User-ID 功能 - 將 LIFF 與 chatbot 後端 user session 併起來 - GA 內啟用 User-ID 功能、建立 User-ID 視圖(View) - 視圖建了之後才會蒐集資料,越早建越好 - app type 使用「行動應用程式」 3. 後端送資料給 GA (via [measurement protocol](https://developers.google.com/analytics/devguides/collection/protocol/v1/)) - [screenview event](https://developers.google.com/analytics/devguides/collection/analyticsjs/screens) (行動應用程式) - 記得傳 `userId` - 記得先送 screenview 再送 event,不然 event 會蒸發 - 可以用 [Hit builder](https://ga-dev-tools.appspot.com/hit-builder/) 測 payload 4. 批次發送 screenview & events - measurement protocol 支援 `/batch` endpoint - 有限制(一次 20 hits、body < 16KB、單一hit < 8K) - 用 queue time `qt` 參數來補送最久 4 小時前的 hit 5. LIFF 也埋 GA - 把使用者資料對在一起 - 用 `liff.getProfile()` 拿 `userId` - open chat 會拿不到 - 紀錄 LINE 版本號 - 要在 LINE 的 built-in browser 開才拿得到 `getOS()`, `getLineVersion()` 6. Flex message 閱讀裝置數 - pixel image 追蹤 (直接 type image + url 放 `https://www.google-analytics.com/collect` beacon) - LINE 會 cache image 所以要記得塞東西進 URL 做 cache busting - 追蹤 push(LINE 內建的追蹤功能,資料比較少,也無法追到個人) - 如果每個人 pixel 想放不同參數(userId)就無法群播,要用 push 一個一個推 7. 追蹤 LINE notify - 可以送圖,但無法隱藏圖片 - 直接丟 GA 的話會變成破圖的圖,要自架後端送 GA 8. 儲存 LINE 後台 insight - friend demographics 無法取得歷史資料,可以寫爬蟲丟 GA # 14:00 ~ 14:40 不要再叫我當那條龍了!開源機器學習系統部署設計模式—以次世代 Chatbot 客服系統為例 - Toby Liu > [議程簡介](https://coscup.org/2020/zh-TW/agenda/BFCXL9) > [簡報](https://docs.google.com/presentation/d/1F0WvgwE1Tpc5L2lx60gRH-nBoc1ydL03NAME7IU6G4U/edit?usp=sharing) > [分享 LINE 數位版簡介](https://liff.line.me/1654437282-8ORYBGgE/?template=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jYXJkcy9jaGF0Ym90LXR3LWNvc2N1cC0yMDIwLnR4dA&csv=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jc3YvY2hhdGJvdC10dy1jb3NjdXAtMjAyMC5jc3Y&key=aWQ&value=Nw) - C2C 電商平台 - 理解需求上的問題 - 可以把需求放到 k8s 上 - 一般都有樣板記錄下來 - 非同步模式 - 加了 queue/cache機制 - 處理客訴、障害排除、純抱怨 - 大模型的壞處是會有預測跑掉的問題 - 先訓練後部署的樣式 - 要知道現在 model 有沒有比之前好 - 很常變動的話不適合綁在CI上面 ## DVC = 資料科學家的 git 保證模型的一致性 - 怎麼限制 ML model - 使用 async 去處理,除非太肥的 model # 14:50 ~ 15:10 LINE BOT 整合 AI ,隨時隨地聽學外文 - 柯克 > [議程簡介](https://coscup.org/2020/zh-TW/agenda/LJD3YX) > [簡報](https://docs.google.com/presentation/d/1msRqEj4Jz07hXpBiZ53A6Soafl_pThao9SAuhW8x77A/edit?usp=sharing) > [分享 LINE 數位版簡介](https://liff.line.me/1654437282-8ORYBGgE/?template=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jYXJkcy9jaGF0Ym90LXR3LWNvc2N1cC0yMDIwLnR4dA&csv=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jc3YvY2hhdGJvdC10dy1jb3NjdXAtMjAyMC5jc3Y&key=aWQ&value=OA) ## 設計發想 - 台灣工程師的英文困境 閱讀很強,但是口說不太行,很難拼湊出一個句子。 - 工具的缺乏 可以練習句子的工具太少。 - 深度學習的發展: 已更貼近自然發音。因此可以學發音。 ## 為什麼做在LINE平台 - 台灣人每天都在用 - LIFF根本就是在做網頁 - Chatbot Taiwan Developers 是很強的社群 ## 為什麼用AZURE平台 - 用app service 免費送一個 https。 - .NET 體系的整合很順暢。 - 提供大量的AI解決方案,而且有免費的額度。 ## Azure Cognititve Service - 微軟現成的AI解決方案 - 包含影像、聲音、文字、人臉等等的工具。 - 有一定額度的免費!! - 各大語言都有SDK,PYTHON 也有。 ## 日文語音合成的困境 - 用鬼滅來做例子 - 古音和現代發音的不同(如水面斬的水面) - 漢字音讀和訓讀的不同 - 只能用假名來解決 ## LIVE DEMO - 連火山矽肺病的英文都能說 - Looks like love 的 love ,AI 合成語音還會拉長音@@ ### 中華電信有在賣 AWS、Azure、GCP,和自家開發的 Hicloud # 15:20 ~ 16:00 LINE Bot 設計模式 - 郭佳甯 > [議程簡介](https://coscup.org/2020/zh-TW/agenda/JQPSPU) > [簡報](https://docs.google.com/presentation/d/1PlUMItXtx3vTRa2US1kE1-Nr11GwqIePQoBN7IeptHE/edit?usp=sharing) > [分享 LINE 數位版簡介](https://liff.line.me/1654437282-8ORYBGgE/?template=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jYXJkcy9jaGF0Ym90LXR3LWNvc2N1cC0yMDIwLnR4dA&csv=aHR0cHM6Ly90YWljaHVubWluLmlkdi50dy9saWZmLWJ1c2luZXNzY2FyZC9jc3YvY2hhdGJvdC10dy1jb3NjdXAtMjAyMC5jc3Y&key=aWQ&value=OQ) ## Messaging API 功能介紹 ### Rich menu - 有一個圖片可以引導使用者使用,用程式客製化的可以看到不同的 richmenu - limitation: only visible in 1-on-1 chat, not in groups / rooms - 最多 20 可點擊區域 ### quick reply - 點擊之後整排會消失,單選 - mobile only, not in PC ### ImageMap - 50 個可點擊區塊 ### Flex message - 可以使用 json 來展示 Bot 上的前端工程 - 講者覺得可以取代 image map ### LIFF - 可以知道是誰開啟網頁(userId) - liff.sendMessage 送到聊天視窗(開啟 LIFF 的私聊 or 群組) ### LINE Notify :free: - 另一個官方帳號 - 單向通知 - provide by LINE - ### ~~Template message~~ - 不要用 ## 獲取用戶資訊 https://docs.google.com/presentation/d/1PlUMItXtx3vTRa2US1kE1-Nr11GwqIePQoBN7IeptHE/edit#slide=id.g8e99f5982a_0_58 - 群組成員:跟官方申請,若拿到綠色盾牌才能用 - 否則就是默默紀錄加入、離開、講話的時候的使用者 - 有些好友在群組裡面卻沒加官方群組 ### 訊息內容 `@標記`:機器人可以拿到 `@XXX` 文字訊息,但無法分辨是否有 @ 成功 ### LINE bot 訊息被已讀 利用: 1. flex message 可嵌入圖片 2. 用戶在讀取訊息時會圖片被載入 ### 用戶資訊 - 申請 email permission 請 LINE 同意 - 使用者也要同意,就拿得到 - 位置 - LINE beacon 沒有找到案例 XD ### 用戶電話號碼 - 用問的 - 可以再串接簡訊驗證 ### 表單 ![](https://i.imgur.com/jtEwx4w.png) - 一些對話式表單才能做到的東西 - ex: 貼圖 - 大部分可以用網頁式,看情況 ## 提供資訊給用戶 - Rich menu - 多層次:如果選項很多,可以先顯示 5 個然後做個「下一頁」(如youbike today 小幫手) - 群組機器人不適用,如果做群組的話應考慮 flex message 做 menu ### 對話式 vs 點擊式 ![](https://i.imgur.com/mCsRflt.png) - 內容多的狀況(類似搜尋)再用對話式 ### 圖表 Flex message 圖表成本高;Image map 維護成本更高。 ### 地點訊息 講者:分享地點功能真的沒人在用 點按鈕開 google map :thumbsup: ## 訂閱資訊 LINE Notify 跟 LINE bot(一個 channel 只能放一個)可以共存在群組裡 ## 推廣 bot rich menu 的 LINE scheme: 醜,不行 LIFF 內 share target picker:UI 比較漂亮 :thumbsup: ## QA A: LIFF 可以知道自己在哪一個群組點開的

    Import from clipboard

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lost their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template is not available.


    Upgrade

    All
    • All
    • Team
    No template found.

    Create custom template


    Upgrade

    Delete template

    Do you really want to delete this template?

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Tutorials

    Book Mode Tutorial

    Slide Mode Tutorial

    YAML Metadata

    Contacts

    Facebook

    Twitter

    Feedback

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions

    Versions and GitHub Sync

    Sign in to link this note to GitHub Learn more
    This note is not linked with GitHub Learn more
     
    Add badge Pull Push GitHub Link Settings
    Upgrade now

    Version named by    

    More Less
    • Edit
    • Delete

    Note content is identical to the latest version.
    Compare with
      Choose a version
      No search result
      Version not found

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub

        Please sign in to GitHub and install the HackMD app on your GitHub repo. Learn more

         Sign in to GitHub

        HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Available push count

        Upgrade

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Upgrade

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully