SlideShare ist ein Scribd-Unternehmen logo
1 von 100
Downloaden Sie, um offline zu lesen
如何使⽤ kamigo 加速
開發 LINE bot
NiJia
2019/11/27
Chatbot Taiwan #14 meetup

@ onramp studio
• Hyena - Backend Developer

• Chatbot Taiwan - Co-organizer

• LINE API Expert

• Farmer / Body builder

• https://nijialin.com

• louis70109@gmail.com
林家煜 NiJia
這是我做的肌⾁仔
https://github.com/louis70109/muscle_man
• 本⾝是重度 LINE 使⽤者

• 熊⼤、莎莉愛好者

• 不太愛安裝⼀堆 APP (懶)

• 做成網⾴誰要⽤ (通常都是有教練在幫忙⽤)
為什麼要做成機器⼈
肌⾁仔期望功能
• 要能 CRUD

• 隨⾝⼀隻⼿機

• 練完就紀錄

• 需要知道訓練時間

• 紀錄的⾝份驗證

• 區間紀錄搜尋

• 上次訓練紀錄
• 要能 CRUD

• 隨⾝⼀隻⼿機

• 練完就紀錄

• 需要知道訓練時間

• 紀錄的⾝份驗證

• 區間紀錄搜尋

• 上次訓練
<— 基本的
肌⾁仔功能
• 要能 CRUD

• 隨⾝⼀隻⼿機

• 練完就紀錄

• 需要知道訓練時間

• 紀錄的⾝份驗證

• 區間紀錄搜尋

• 上次訓練
<— 紀錄⽤ (很多⼈都佔著器材追劇)
肌⾁仔功能
• 要能 CRUD

• 隨⾝⼀隻⼿機

• 練完就紀錄

• 需要知道訓練時間

• 紀錄的⾝份驗證

• 區間紀錄搜尋

• 上次訓練
<— 救救⾦⿂腦
肌⾁仔功能
• 要能 CRUD

• 隨⾝⼀隻⼿機

• 練完就紀錄

• 需要知道訓練時間

• 紀錄的⾝份驗證

• 區間紀錄搜尋

• 上次訓練
<— 控制狀態
肌⾁仔功能
• 要能 CRUD

• 隨⾝⼀隻⼿機

• 練完就紀錄

• 需要知道訓練時間

• 紀錄的⾝份驗證

• 區間紀錄搜尋

• 上次訓練
<—之後做分析才有根據
肌⾁仔功能
• 要能 CRUD

• 隨⾝⼀隻⼿機

• 練完就紀錄

• 需要知道訓練時間

• 紀錄的⾝份驗證

• 區間紀錄搜尋

• 上次訓練
<—特定紀錄 & 某次紀錄
肌⾁仔功能
• 要能 CRUD

• 隨⾝⼀隻⼿機

• 練完就紀錄

• 需要知道訓練時間

• 紀錄的⾝份驗證

• 區間紀錄搜尋

• 上次訓練 <—救救⾦⿂腦
肌⾁仔功能
快速展⽰ 肌⾁仔
Kamigo 是怎麼誕⽣的?
當然沒這麼簡單啦
作者在台下

等等可以問他🤣
還不來按個星星︖ https://github.com/etrex/kamigo
• Rails 的⿊魔法 - Scaffold: CRUD 快速集成

• MVC 架構

• ⼀個請求對應⼀個 controller

• LIFF & Flex message 都在 View 裡

• ⽬前 Rails 6.0.x 會爆
• Rails 的⿊魔法 - Scaffold: CRUD 快速集成

• MVC 架構

• ⼀個請求對應⼀個 controller

• LIFF & Flex message 都在 View 裡

• ⽬前 Rails 6.0.x 會爆
• Rails 的⿊魔法 - Scaffold: CRUD 快速集成

• MVC 架構

• ⼀個請求對應⼀個 controller

• LIFF & Flex message 都在 View 裡

• ⽬前 Rails 6.0.x 會爆
• Rails 的⿊魔法 - Scaffold: CRUD 快速集成

• MVC 架構

• ⼀個請求對應⼀個 controller

• LIFF & Flex message 都在 View 裡

• ⽬前 Rails 6.0.x 會爆
• Rails 的⿊魔法 - Scaffold: CRUD 快速集成

• MVC 架構

• ⼀個請求對應⼀個 controller

• LIFF & Flex message 都在 View 裡

• ⽬前 Rails 6.0.x 會爆
• Rails 的⿊魔法 - Scaffold: CRUD 快速集成

• MVC 架構

• ⼀個請求對應⼀個 controller

• LIFF & Flex message 都在 View 裡

• ⽬前 Rails 6.0.x 會爆
• Rails 的⿊魔法 - Scaffold: CRUD 快速集成

• MVC 架構

• ⼀個請求對應⼀個 controller

• LIFF & Flex message 都在 View 裡

• ⽬前 Rails 6.0.x 會爆 (某次 Live demo …)
可以同時開發 Chatbot 與 Web

並共⽤ Controller 以及 Model

設計理念: https://github.com/etrex/kamigo/blob/master/doc/01_intro.md
Kamigo 宗旨
可以同時開發 Chatbot 與 Web

並共⽤ Controller 以及 Model

但我只⽤來開發 Chatbot !!
設計理念: https://github.com/etrex/kamigo/blob/master/doc/01_intro.md
Kamigo 宗旨
可以同時開發 Chatbot 與 Web

並共⽤ Controller 以及 Model

但我只⽤來開發 Chatbot !!
設計理念: https://github.com/etrex/kamigo/blob/master/doc/01_intro.md
因為每次的搜尋都會確認⽤⼾⾝份

(其實只是還沒實作在 Web)
Kamigo 宗旨
參考
⼀般 Webhook 做法
參考
Kamigo 做法
為什麼選⽤ Kamigo?
絕對不會說我是米粉
• ⼀開始就只是覺得很厲害

• ⼀個 Event 交給⼀個 Route(Controller)

• 寫起來很像在寫 Rails

• 組 flex message 不⽤看⼀堆括號

• ⽀援⼀些簡單的語意理解規則

• 懶
帶來的好處
接著來看⼀下路由可以怎麼設計
映射到對應的路由上
同理:
GET /practices/search {xxxx}
也會對應路由
⽀援模糊搜尋
範例
其實我就只判斷 “上次xxx”

其他的交給 Rails 幫忙
到最後沒⼈要的⽂字就會在這
• 只要符合 上次xxx 接送往對應 Controller

• 還有可以判斷中⽂的路由!!

• 不⽤再寫⼀堆 if else,全讓路由去處理

• Rails 寫起來好舒服
所以
Kamiflex

(Flex Message)
這是你看到的訊息
這是原本的樣⼦
我以前就是這樣刻 JSON
這是我寫的內容
1
2
3
4
Kamiflex 幫忙做的事
如此⼀來就可以⽤ Ruby 的風格去開發 Flex message

整個語意看起來就乾淨多了!!
接下來說⼀下 Kamiliff
line://app/1613867810-ymYpONB4?
liff_size=full&path=%2Fpractices%2Fnew
這是我的 LIFF
line://app/1613867810-ymYpONB4?
liff_size=full&path=%2Fpractices%2Fnew
這是⼀般 LIFF 網址
後台的設定
"line://app/1613867810-ymYpONB4?
liff_size=full&path=%2Fpractices%2Fnew"
Kamiliff 加的東⻄
"line://app/1613867810-ymYpONB4?
liff_size=full&path=%2Fpractices%2Fnew"
LIFF 的三種尺⼨在這裡設定
LIFF 尺⼨控制
"line://app/1613867810-ymYpONB4?
liff_size=full&path=%2Fpractices%2Fnew"
斜線 斜線
Url encode
"line://app/1613867810-ymYpONB4?
liff_size=full&path=%2Fpractices%2Fnew"
/practices/new
路由控制
https://railsbook.tw/chapters/11-routes.html
(⽰意圖)
就是這個啦!
https://railsbook.tw/chapters/11-routes.html
(⽰意圖)
需要 LIFF 的 Route
liff_path(path: new_practice_path, liff_size: 'full')
⼀句話 Hack 產⽣ LIFF path
liff_path(path: new_practice_path, liff_size: 'full')
⼀句話 Hack 產⽣ LIFF path
Kamiliff 提供的⽅法
後台只要設定三個就好
其他都讓 Kamiliff 去處理
Kamigo 現在使⽤的還是 v1

但是 LIFF 已經有 v2 囉!
題外話
Kamigo 現在使⽤的還是 v1

但是 LIFF 已經有 v2 囉!
題外話
結尾時間
最後看看我以前寫的東⻄
有夠髒的啦!
讓我能無腦的開發

專⼼在機器⼈⾝上
如果寫的語⾔沒有怎麼辦?
沒有就⾃⼰寫⼀個!!
沒有就⾃⼰寫⼀個!!
沒有就⾃⼰寫⼀個!!
或是問剛剛的⼤⼤ 🤩
或卡米哥 (出賣)
徵志⼯、講者!

歡迎休息時間來詢問了解!
⼯商服務時間
謝謝⼤家!!

Weitere ähnliche Inhalte

Was ist angesagt?

Angular從入門到實戰(一)
Angular從入門到實戰(一)Angular從入門到實戰(一)
Angular從入門到實戰(一)志龍 陳
 
Laravel 台灣 南進台中 社群小聚 - 社群現況報馬仔 2015/10
Laravel 台灣 南進台中 社群小聚 - 社群現況報馬仔 2015/10Laravel 台灣 南進台中 社群小聚 - 社群現況報馬仔 2015/10
Laravel 台灣 南進台中 社群小聚 - 社群現況報馬仔 2015/10Shengyou Fan
 
內部微小服務, 隊友開發更快速
內部微小服務, 隊友開發更快速內部微小服務, 隊友開發更快速
內部微小服務, 隊友開發更快速EricLiao39
 
選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅Shengyou Fan
 
Phonagp 简介
Phonagp 简介Phonagp 简介
Phonagp 简介dong yuwei
 
ALPHAhackathon: How to collaborate
ALPHAhackathon: How to collaborateALPHAhackathon: How to collaborate
ALPHAhackathon: How to collaborateWen-Tien Chang
 
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹Shengyou Fan
 

Was ist angesagt? (8)

Angular從入門到實戰(一)
Angular從入門到實戰(一)Angular從入門到實戰(一)
Angular從入門到實戰(一)
 
Laravel 台灣 南進台中 社群小聚 - 社群現況報馬仔 2015/10
Laravel 台灣 南進台中 社群小聚 - 社群現況報馬仔 2015/10Laravel 台灣 南進台中 社群小聚 - 社群現況報馬仔 2015/10
Laravel 台灣 南進台中 社群小聚 - 社群現況報馬仔 2015/10
 
內部微小服務, 隊友開發更快速
內部微小服務, 隊友開發更快速內部微小服務, 隊友開發更快速
內部微小服務, 隊友開發更快速
 
選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅選一個框架當好朋友,讓您成為開心攻城獅
選一個框架當好朋友,讓您成為開心攻城獅
 
Phonagp 简介
Phonagp 简介Phonagp 简介
Phonagp 简介
 
Coffee script
Coffee scriptCoffee script
Coffee script
 
ALPHAhackathon: How to collaborate
ALPHAhackathon: How to collaborateALPHAhackathon: How to collaborate
ALPHAhackathon: How to collaborate
 
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
COSCUP 2016 Laravel 部署工作坊 - 生態圈介紹
 

Ähnlich wie Kamigo reviews 20191127

⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨Wen-Tien Chang
 
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 TaiwanAlan Tsai
 
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...Alan Tsai
 
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overviewAlan Tsai
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程Souyi Yang
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7twMVC
 
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 TaiwanAlan Tsai
 
高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程Souyi Yang
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4Daniel Chou
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages安齊 劉
 
聊天機器人概論 Introduce to chat bot sevices
聊天機器人概論 Introduce to chat bot sevices聊天機器人概論 Introduce to chat bot sevices
聊天機器人概論 Introduce to chat bot sevicesDuran Hsieh
 
Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AIKo Ko
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CDChen-Tien Tsai
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用謝 宗穎
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web frameworkBo-Yi Wu
 
快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚Lorex L. Yang
 
瀏覽器開發與開源經驗 COSCUP 2018
瀏覽器開發與開源經驗 COSCUP 2018瀏覽器開發與開源經驗 COSCUP 2018
瀏覽器開發與開源經驗 COSCUP 2018安齊 劉
 
Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界Gelis Wu
 
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享Leo Zhou
 

Ähnlich wie Kamigo reviews 20191127 (20)

⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨⼤語⾔模型 LLM 應⽤開發入⾨
⼤語⾔模型 LLM 應⽤開發入⾨
 
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
探索 API 開發的挑戰與解決之道 | .NET Conf 2023 Taiwan
 
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...
不會 Javascript 沒關係,用 Blazor 來解決前端需求 - 成為 Full Stack .NET 開發者吧 - .NET Conf 2020...
 
01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview01 DevOps and Azure DevOps overview
01 DevOps and Azure DevOps overview
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程
 
.NET 7 家族新成員: Microsoft Orleans v7
.NET 7 家族新成員:Microsoft Orleans v7.NET 7 家族新成員:Microsoft Orleans v7
.NET 7 家族新成員: Microsoft Orleans v7
 
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
從 GitHub Copilot 到 Enterprise Copilot:打造符合企業需求的智能開發助手之路 | .NET Conf 2023 Taiwan
 
高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程高雄和春資工系-Axure RP基礎課程
高雄和春資工系-Axure RP基礎課程
 
How to ASP.NET MVC4
How to ASP.NET MVC4How to ASP.NET MVC4
How to ASP.NET MVC4
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages瀏覽器與網頁原理 Principles of Browsers and Webpages
瀏覽器與網頁原理 Principles of Browsers and Webpages
 
聊天機器人概論 Introduce to chat bot sevices
聊天機器人概論 Introduce to chat bot sevices聊天機器人概論 Introduce to chat bot sevices
聊天機器人概論 Introduce to chat bot sevices
 
Langchain and Azure ML and Open AI
Langchain and Azure ML and Open AILangchain and Azure ML and Open AI
Langchain and Azure ML and Open AI
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
 
從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用從軟體開發角度
談 Docker 的應用
從軟體開發角度
談 Docker 的應用
 
How to choose web framework
How to choose web frameworkHow to choose web framework
How to choose web framework
 
快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚
 
瀏覽器開發與開源經驗 COSCUP 2018
瀏覽器開發與開源經驗 COSCUP 2018瀏覽器開發與開源經驗 COSCUP 2018
瀏覽器開發與開源經驗 COSCUP 2018
 
Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界Net 6 的 blazor 開發新視界
Net 6 的 blazor 開發新視界
 
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
NoSQL@VIP — 唯品会NoSQL平台⾃动化发展及运维经验分享
 

Mehr von Jia Yu Lin

Build line notify bot by lotify and create client library by swagger 20200527
Build line notify bot by lotify and create client library by swagger 20200527Build line notify bot by lotify and create client library by swagger 20200527
Build line notify bot by lotify and create client library by swagger 20200527Jia Yu Lin
 
Muscle man light talk 20190917 in chatbotTW
Muscle man light talk 20190917 in chatbotTWMuscle man light talk 20190917 in chatbotTW
Muscle man light talk 20190917 in chatbotTWJia Yu Lin
 
step by step to use LINE Notify - 20190527
step by step to use LINE Notify - 20190527step by step to use LINE Notify - 20190527
step by step to use LINE Notify - 20190527Jia Yu Lin
 
Muscle man bot 20190828
Muscle man bot   20190828Muscle man bot   20190828
Muscle man bot 20190828Jia Yu Lin
 
Twitch bot 20190828
Twitch bot  20190828Twitch bot  20190828
Twitch bot 20190828Jia Yu Lin
 
ChatbotTW 2019 in Modern web
ChatbotTW 2019 in Modern webChatbotTW 2019 in Modern web
ChatbotTW 2019 in Modern webJia Yu Lin
 

Mehr von Jia Yu Lin (6)

Build line notify bot by lotify and create client library by swagger 20200527
Build line notify bot by lotify and create client library by swagger 20200527Build line notify bot by lotify and create client library by swagger 20200527
Build line notify bot by lotify and create client library by swagger 20200527
 
Muscle man light talk 20190917 in chatbotTW
Muscle man light talk 20190917 in chatbotTWMuscle man light talk 20190917 in chatbotTW
Muscle man light talk 20190917 in chatbotTW
 
step by step to use LINE Notify - 20190527
step by step to use LINE Notify - 20190527step by step to use LINE Notify - 20190527
step by step to use LINE Notify - 20190527
 
Muscle man bot 20190828
Muscle man bot   20190828Muscle man bot   20190828
Muscle man bot 20190828
 
Twitch bot 20190828
Twitch bot  20190828Twitch bot  20190828
Twitch bot 20190828
 
ChatbotTW 2019 in Modern web
ChatbotTW 2019 in Modern webChatbotTW 2019 in Modern web
ChatbotTW 2019 in Modern web
 

Kamigo reviews 20191127