SlideShare a Scribd company logo
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Chatbot開發
你的口袋電影百科
Ryan Chung
III Digital Education Institute
未來之星 – 菁英培育計畫
1
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
資策會 數位教育研究所
² 最新科技進修
Ø 在職夜間假日進修
Ø 轉職全天養成班
² 資訊技術充電站
Ø 國際技術趨勢
Ø 職場必備能力
Ø 基本資訊技能
http://taipei.iiiedu.org.tw/
2
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Ryan Chung
² 主要教授科目
Ø 語音助理應用開發
Ø Chatbot應用開發
Ø Web / App 應用
² 資策會數位教育研究所
Ø 課程經理 / 養成班導師
Ø 企業包班 / 政府專案經理
Ø 課程專任講師 /專題輔導
http://mobiledev.tw/ryan
3
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
產品預期畫面
4
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
電影機器人開發 1.0
• 目標
– 輸入:電影名稱
– 回傳:簡介、海報
• 介面
– Line
• 工具/技術
– DialogFlow
– Node.JS
• 資料
– theMovieDB.org
5
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
MovieBot 架構
• 語意分析 + 聊天機器人+ 電影資料庫 + 部署上線
FulFillment • 設定回應
The
Movie
DB
• 電影資料
DialogFlow
意圖:查詢電影簡介
資料:電影名稱
API
Line
6
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Dialogflow
7
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Create New Agent
8
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Create New Agent
• 建立Agent
– 名稱:MovieBot
– 語言:zh-tw
9
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
語意分析常見名詞
• Intent 意圖
– 使用者對談的目的
• Entity 關鍵資訊
– 達成目的的必要輸入資訊
• Utterance 例句
– 使用者常用的句型
10
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Create Intent
11
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
輸入 Intent 名稱後,按下Save
12
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
進入 Training phrases 區塊
• 點擊下方Add Training Phrases
13
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
輸入對應此Intent會出現的句子
• 輸入例句
– ❞我想要查電影簡介
– ❞我想知道教父的劇情
• 把教父反白,選擇 @sys.any,設定變數名稱為MovieName
– @我想知道@sys.any:MovieName 的劇情
• 注意最前面換成@、注意 @sys.any:MovieName 有上色
• 雙逗號:例句輸入、@:文法結構輸入
14
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
進入變數與對應行動的設定
• 點擊下方 Manage Parameters and Action
15
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
標示必要資訊,並引導使用者輸入
• 決定哪些偵測到的資訊是必要的,在前方打勾
• 必要資訊還沒收集到時,設定提示句向使用者索
取必要資訊 (Define prompts...)
• 點擊 Define prompts...
16
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
追問出電影名稱
• 輸入引導使用者說出電影名稱的句子
17
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
設定回應
• 點擊下方的 Add Response
• 意圖確認,並且拿到必要的關鍵資訊
18
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
設定確認回應後,按下右上角Save
• 存檔完成後,過一會右下方會出現訓練完成訊息
Agent	Training	Completed
19
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
在右上角測試看看
20
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
用Web Demo網頁展示
• 點擊左方選單中的 Integrations
• 將Web Demo的開關打開
21
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
用Web Demo網頁展示
• 點擊出現的網址
• 出現網頁對話視窗!測試看看
22
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
DialogFlow Recap
• 建立Agent
– 名稱:MovieBot
– 語言:zh-TW
• 建立Intent
– 名稱:Get Movie Intro
• 輸入例句
– ❞我想要查電影簡介
– ❞我想知道教父的劇情
• 把教父反白,選擇 @sys.any,設定變數名稱為MovieName
– @我想知道@sys.any:MovieName 的劇情
• 注意最前面換成@、注意 @sys.any:MovieName 有上色
23
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
DialogFlow
• 設定需求變數與反問句
– 將MovieName打勾
– 設定反問句:請問你要查詢的電影名稱是?
• 設定確認回饋句
– 了解,馬上為你查詢$MovieName的劇情簡介
24
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
DialogFlow 運作機制
Source:	DialogFlow
25
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Webhook
1. 透過Webhook在雲端運行,DialogFlow透過
Webhook去取得所需的資料,再傳遞給使用者
2. 所有處理程序都在後端,前端可由所有支援的方
式來運作(網站、聊天機器人、語音助理...)
26
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
實作:Webhook建立
確認目標,取得資料
27
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
啟動webhook
• 在DialogFlow中,進入MovieBot專案
• 點擊左邊Intents,然後進入「Get Movie Intro」Intent
• 最下方Fulfillment,點擊 Enable Fulfillment
• 打開 Enable webhook call for this intent
• 右上方點擊Save
28
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
確認設定為V2 API
• 點擊專案名稱旁邊的齒輪
• General -> API Version
• 選擇 V2 API
29
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
開發前準備事項
• 安裝 VS Code
– https://code.visualstudio.com/
• 安裝 Node
– https://nodejs.org/en/download/
• 安裝 Ngrok
– https://ngrok.com/download
30
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
安裝Node.js
• 選擇穩定版 (Recommend For Most Users)
– Windows Installer:下載msi檔
– macOS Installer:下載pkg檔
• 如何確認安裝?
– 打開終端機,輸入:node -v
https://nodejs.org/en/
31
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
安裝Ngrok
• 建議放置位置
– Windows:主要使用者資料夾
– Mac:應用程式
• 設定為在哪裡都可以執行
– Windows:我的電腦 -> 右鍵 -> 內容 ->
進階系統設定 -> 環境變數 -> 系統變數 ->
Path -> 編輯 -> 新增
– Mac:ln -s /Applications/ngrok ngrok
https://ngrok.com/download
32
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
建立開發專案
• 建立專案資料夾:MovieBot
• 建立主要程式檔:index.js
https://github.com/ryan403/MovieBot
33
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
建立index.js 輸入程式碼
注意大小寫
34
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
繼續於index.js 輸入程式碼
35
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
繼續於index.js 輸入程式碼
36
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
設定MovieDB API Key
• 新增config資料夾
• 在config資料夾中新增檔案:default.json
• 增加MovieDB_API_Key (稍後至該網站申請)
Your	API	Key	here
37
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
TheMovieDB.org
• 註冊帳號、填寫相關資料
• 點擊個人頭像 -> 帳戶設定
• 左邊清單點擊API
• 複製API Key(v3 auth)至上一頁
https://www.themoviedb.org/account/signup
38
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
TheMovieDB Search API
https://developers.themoviedb.org/3/search/search-movies
39
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
專案初始化
• 在VS Code中,按下 Ctrl + ~ 開啟終端機
• 輸入npm init
• 按下多次enter,使用預設值建立package.json
安裝需要的套件
• 在VS Code中,按下 Ctrl + ~ 開啟終端機
• 安裝能夠一次安裝需求模組的套件
– 在終端機輸入npm install npm-install-all -g
– 需要管理者權限(Mac加sudo)
• 針對特定檔案中的需求來安裝套件
– 在終端機輸入npm-install-all index.js
40
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
增加Debug與Start Scripts
• 在 package.json 新增
• debug:在地測試、start:伺服器上線
41
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
執行並開啟除錯模式
• 點擊VS Code中左邊選單中的第四個(偵錯)
• 上方Play按鈕右邊下拉新增組態...
• 選擇「{ } Node.js 透過NPM 啟動」
• 按下Play按鈕
• 下方偵錯主控台確認伺服器是否已啟動
42
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
運用Ngrok讓開發機變成伺服器
• 在終端機執行 ngrok http 5000
• 複製產生的公開網址 (Forwarding https://.....)
Copy	this	one
43
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
DialogFlow Fulfillment
• ENABLED、填完URL(後面加上/webhook)後,按下下方的Save
44
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
回到右方測試區進行測試
• 可順利連線,拿到電影資料!
45
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Integrations -> LINE -> 打開
• 跟著步驟建立帳號、啟動Messaging API
• Log in to console
46
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Line Developer Console
• Select provider 選擇既有或新增
https://developers.line.me/console/register/messaging-api/provider/
47
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Create new channel
• 輸入 App icon、name、description
• 選擇 Free Plan
• 設定 Category、Subcategory
• 輸入 Email address
• Confirm
48
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
取得相關資訊
• 進入新建立的Channel -> Channel settings
• 拿到Channel ID、Channel secret 貼至DialogFlow
• Issue to get Channel access token 也貼過去
• 在DialogFlow那邊先按Start
• 回到Line Console,Use webhooks Enabled
• 把Webhook URL從DialogFlow那邊貼過來
• 把Auto-reply messages、Greeting messages
Disabled
49
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
用QR code 加入自己的Chatbot
• 用Line加入自己的Chatbot
• 試著看看能不能看到剛才設定好的對話
50
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
電腦關機怎麼辦?
51
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
node_modules 不上傳
• 增加 .gitignore 檔案
– 裡面寫:node_modules/
52
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
部署至Heroku
• 註冊帳號
• 右上角 New -> Create new app
• 設定App name:movie-bot-XXYYZZ
• 區域:美國
• Create App
https://www.heroku.com/
53
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Deploy using Heroku Git
• 使用Heroku Git (Use Heroku CLI)
• 下載與安裝 Heroku CLI
• 終端機
heroku login
cd my-project-dic
git init
heroku git:remote –a YourProjectNameHere
https://devcenter.heroku.com/articles/heroku-command-line
是你在Heroku中的專案名稱哦!
通常長得像 oo-bot-xxyyzz
切換到專案資料夾路徑下,若已經在裡面則可忽略此步驟
54
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
開始部署上傳(每次更新步驟亦同)
• git add .
• git commit –am "make it better"
• git push heroku master
• heroku restart
雙引號這邊像是你的上傳筆記
在這裡寫上這次更新的內容
之後code更新時再加這一步
第一次不用
55
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
啟動網站
• heroku ps:scale web=1
非常非常關鍵的一步,一定要記得做
56
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
找到Heroku的網址
• Settinges分頁下拉 -> Domains and certificates
https://dashboard.heroku.com/apps/YourAppName/settings
• 其實網址就是
https://YourAppName.herokuapp.com
57
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
回到DialogFlow設定Fulfillment
• Webhook Enabled
https://YourAppName.herokuapp.com/webhook
• 打完記得畫面拉至最下方,按下Save
58
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
再度進行測試
• 本地的Ngrok、VS Code 都可以關掉
• 進入DialogFlow -> 右方測試區
59
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
fulfillmentMessages - card
https://dialogflow.com/docs/fulfillment#response
"fulfillmentMessages":	[
{
"card":	{
"title":	"card	title",
"subtitle":	"card	text",
"imageUri":	"https://assistant.google.com/static/images/molecule/Molecule-Formation-stop.png",
"buttons":	[
{
"text":	"button	text",
"postback":	"https://assistant.google.com/"
}
]
}
}
]
60
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
fulfillmentMessages支援
• Text • Image
https://dialogflow.com/docs/reference/v1-v2-migration-guide-fulfillment#fulfillment_messages_reference
• Quick Reply
61
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
對話流程
人 <-> 人 人 <-> Chatbot/VA
開啟對話
寒暄語
Hello、你好、嗨
喚醒語 Invocation
系統指定啟動語 Alexa, Hi Siri, OK Google
提出需求
台北的天氣如何?
一般人均可直接理解對方的需求
釐清意圖 Intent
透過語句解析,確定對方的意圖是什麼
訓練
釐清意圖
N/A
由於同一意圖有多種表達方式
所以要多提供例句讓機器對應至特定意圖
取得
關鍵資訊
若對方漏說了地方與時間
持續問答取得資訊
取出關鍵資訊 Entity
預先定義好滿足該意圖所需的關鍵資訊
持續與使用者對話取得所有需求關鍵資訊
確認
條件滿足
跟對方確定取得必要資訊後
開始進行查詢
依據關鍵資訊與意圖
進行下一階段資料查詢(API 介接)
回應
回應查詢結果
新聞說今天臺北在下雨,氣溫19度
依據查詢結果
以文字、圖形或語音的方式回應
延伸問答
依據目前資訊的延伸問題
那明天的狀況也一樣嗎?
須將既有輸入資訊暫存
更新資料查詢並進行回應
62
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
人機互動腳本準則
• 以人們真正會說的話來設計,而不是那種文章上的口吻
• 不要假設使用者知道要怎麼做或是知道會發生什麼事
真實
• 避免使用有多重含義的詞句、片語
• 引導使用者提供必要的資訊
明確
• 清楚地把選項呈現出來
• 一般而言,一次不要丟出超過三個選項
• 一次向使用者要一個資訊
簡單
63
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
Recap
• Dialogflow
– 語意分析、前端整合
• TheMovieDB API
– 資料來源
• Ngrok
– 暫時讓本機變成Server
• Heroku
– 雲端主機服務
• 電影其他資訊查詢
– 評分、演員、年代...
• 電影時刻查詢
– 各地電影院時刻資料
• 多媒體
– 電影預告、電影配樂
• 電影推薦
– 測驗、查詢記錄...
Extra
64
Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw
敬請指教
Ryan Chung
Senior Engineer
III Digital Education Institute
Ryan@iii.org.tw
65

More Related Content

Similar to MovieBot

Jira live demo_2020_v20
Jira live demo_2020_v20Jira live demo_2020_v20
Jira live demo_2020_v20
Linktech
 
iOS On Boarding Training
iOS On Boarding TrainingiOS On Boarding Training
iOS On Boarding Training
Ryan Chung
 
Camtasia Studio 7.1 Training
Camtasia Studio 7.1 TrainingCamtasia Studio 7.1 Training
Camtasia Studio 7.1 Training
yunjuli
 
Mochimedia's Success Story - Case Study I (Python-based Company)
Mochimedia's Success Story - Case Study I (Python-based Company)Mochimedia's Success Story - Case Study I (Python-based Company)
Mochimedia's Success Story - Case Study I (Python-based Company)
Sting Chen
 
Tech2IPO周刊第4期2011 04-29
Tech2IPO周刊第4期2011 04-29Tech2IPO周刊第4期2011 04-29
Tech2IPO周刊第4期2011 04-29
Tech2IPO
 
第一科大Chatbot LUIS
第一科大Chatbot LUIS第一科大Chatbot LUIS
第一科大Chatbot LUIS
Ian Chen
 
《氪周刊:互联网创业必读》(第41期)
《氪周刊:互联网创业必读》(第41期)《氪周刊:互联网创业必读》(第41期)
《氪周刊:互联网创业必读》(第41期)36Kr.com
 
01.python.开发最佳实践
01.python.开发最佳实践01.python.开发最佳实践
01.python.开发最佳实践Na Lee
 
《氪周刊:互联网创业必读》(第45期)
《氪周刊:互联网创业必读》(第45期)《氪周刊:互联网创业必读》(第45期)
《氪周刊:互联网创业必读》(第45期)36Kr.com
 
ChatBot
ChatBotChatBot
ChatBot
Ian Chen
 
李昶翰:Microsoft Teams – No Space, No Position, and No Distance
李昶翰:Microsoft Teams – No Space, No Position, and No Distance李昶翰:Microsoft Teams – No Space, No Position, and No Distance
李昶翰:Microsoft Teams – No Space, No Position, and No Distance
開拓文教基金會
 
Make NTU _ 20180324
Make NTU _ 20180324Make NTU _ 20180324
Make NTU _ 20180324
YOCTOL
 
Our experience to start a startup
Our experience to start a startupOur experience to start a startup
Our experience to start a startupYenwen Feng
 
StreamYard vs. Google Meet 自媒體基礎介紹—自媒體軟硬體與平台初體驗(新生醫護專校) - 20220623
StreamYard vs. Google Meet 自媒體基礎介紹—自媒體軟硬體與平台初體驗(新生醫護專校) - 20220623StreamYard vs. Google Meet 自媒體基礎介紹—自媒體軟硬體與平台初體驗(新生醫護專校) - 20220623
StreamYard vs. Google Meet 自媒體基礎介紹—自媒體軟硬體與平台初體驗(新生醫護專校) - 20220623
張大明 Ta-Ming Chang
 
精益创业讨论
精益创业讨论精益创业讨论
精益创业讨论
Robbin Fan
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程
Souyi Yang
 
[VideOhya] Titanium開發經驗分享_1020
[VideOhya] Titanium開發經驗分享_1020[VideOhya] Titanium開發經驗分享_1020
[VideOhya] Titanium開發經驗分享_1020
Taiwan Titanium User Group
 
大獅子與小獅子的分享
大獅子與小獅子的分享大獅子與小獅子的分享
大獅子與小獅子的分享
jo lin
 
台中市創業平台建置計畫
台中市創業平台建置計畫台中市創業平台建置計畫
台中市創業平台建置計畫
Chris 克里斯
 
用简单语言构建复杂系统
用简单语言构建复杂系统用简单语言构建复杂系统
用简单语言构建复杂系统
Leo Zhou
 

Similar to MovieBot (20)

Jira live demo_2020_v20
Jira live demo_2020_v20Jira live demo_2020_v20
Jira live demo_2020_v20
 
iOS On Boarding Training
iOS On Boarding TrainingiOS On Boarding Training
iOS On Boarding Training
 
Camtasia Studio 7.1 Training
Camtasia Studio 7.1 TrainingCamtasia Studio 7.1 Training
Camtasia Studio 7.1 Training
 
Mochimedia's Success Story - Case Study I (Python-based Company)
Mochimedia's Success Story - Case Study I (Python-based Company)Mochimedia's Success Story - Case Study I (Python-based Company)
Mochimedia's Success Story - Case Study I (Python-based Company)
 
Tech2IPO周刊第4期2011 04-29
Tech2IPO周刊第4期2011 04-29Tech2IPO周刊第4期2011 04-29
Tech2IPO周刊第4期2011 04-29
 
第一科大Chatbot LUIS
第一科大Chatbot LUIS第一科大Chatbot LUIS
第一科大Chatbot LUIS
 
《氪周刊:互联网创业必读》(第41期)
《氪周刊:互联网创业必读》(第41期)《氪周刊:互联网创业必读》(第41期)
《氪周刊:互联网创业必读》(第41期)
 
01.python.开发最佳实践
01.python.开发最佳实践01.python.开发最佳实践
01.python.开发最佳实践
 
《氪周刊:互联网创业必读》(第45期)
《氪周刊:互联网创业必读》(第45期)《氪周刊:互联网创业必读》(第45期)
《氪周刊:互联网创业必读》(第45期)
 
ChatBot
ChatBotChatBot
ChatBot
 
李昶翰:Microsoft Teams – No Space, No Position, and No Distance
李昶翰:Microsoft Teams – No Space, No Position, and No Distance李昶翰:Microsoft Teams – No Space, No Position, and No Distance
李昶翰:Microsoft Teams – No Space, No Position, and No Distance
 
Make NTU _ 20180324
Make NTU _ 20180324Make NTU _ 20180324
Make NTU _ 20180324
 
Our experience to start a startup
Our experience to start a startupOur experience to start a startup
Our experience to start a startup
 
StreamYard vs. Google Meet 自媒體基礎介紹—自媒體軟硬體與平台初體驗(新生醫護專校) - 20220623
StreamYard vs. Google Meet 自媒體基礎介紹—自媒體軟硬體與平台初體驗(新生醫護專校) - 20220623StreamYard vs. Google Meet 自媒體基礎介紹—自媒體軟硬體與平台初體驗(新生醫護專校) - 20220623
StreamYard vs. Google Meet 自媒體基礎介紹—自媒體軟硬體與平台初體驗(新生醫護專校) - 20220623
 
精益创业讨论
精益创业讨论精益创业讨论
精益创业讨论
 
HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程HPX台南讀書會-Axure RP基礎課程
HPX台南讀書會-Axure RP基礎課程
 
[VideOhya] Titanium開發經驗分享_1020
[VideOhya] Titanium開發經驗分享_1020[VideOhya] Titanium開發經驗分享_1020
[VideOhya] Titanium開發經驗分享_1020
 
大獅子與小獅子的分享
大獅子與小獅子的分享大獅子與小獅子的分享
大獅子與小獅子的分享
 
台中市創業平台建置計畫
台中市創業平台建置計畫台中市創業平台建置計畫
台中市創業平台建置計畫
 
用简单语言构建复杂系统
用简单语言构建复杂系统用简单语言构建复杂系统
用简单语言构建复杂系统
 

More from Ryan Chung

Voice-First Games for Alexa
Voice-First Games for AlexaVoice-First Games for Alexa
Voice-First Games for Alexa
Ryan Chung
 
AI Service Integration - Education
AI Service Integration - EducationAI Service Integration - Education
AI Service Integration - Education
Ryan Chung
 
AI Service Integration
AI Service IntegrationAI Service Integration
AI Service Integration
Ryan Chung
 
AI Adoption in the Enterprise
AI Adoption in the EnterpriseAI Adoption in the Enterprise
AI Adoption in the Enterprise
Ryan Chung
 
AI in Classroom
AI in ClassroomAI in Classroom
AI in Classroom
Ryan Chung
 
AWS re:Invent 2018 Recap
AWS re:Invent 2018 RecapAWS re:Invent 2018 Recap
AWS re:Invent 2018 Recap
Ryan Chung
 
Introduction to DialogFlow
Introduction to DialogFlow Introduction to DialogFlow
Introduction to DialogFlow
Ryan Chung
 
Udacity Meet Up - 0413
Udacity Meet Up - 0413Udacity Meet Up - 0413
Udacity Meet Up - 0413
Ryan Chung
 
Amazon Alexa Development Part II
Amazon Alexa Development Part IIAmazon Alexa Development Part II
Amazon Alexa Development Part II
Ryan Chung
 
Amazon Alexa Development
Amazon Alexa DevelopmentAmazon Alexa Development
Amazon Alexa Development
Ryan Chung
 
Microsoft Professional Program - AI
Microsoft Professional Program - AIMicrosoft Professional Program - AI
Microsoft Professional Program - AI
Ryan Chung
 
AI Service Integration
AI Service IntegrationAI Service Integration
AI Service Integration
Ryan Chung
 
Intro to AI
Intro to AIIntro to AI
Intro to AI
Ryan Chung
 
Hour of Code - Amazon Alexa
Hour of Code - Amazon AlexaHour of Code - Amazon Alexa
Hour of Code - Amazon Alexa
Ryan Chung
 
Intro to DialogFlow(API.ai) / Wit.ai / Luis.ai
Intro to DialogFlow(API.ai) / Wit.ai / Luis.aiIntro to DialogFlow(API.ai) / Wit.ai / Luis.ai
Intro to DialogFlow(API.ai) / Wit.ai / Luis.ai
Ryan Chung
 
資料科學的第一堂課 Data Science Orientation
資料科學的第一堂課 Data Science Orientation資料科學的第一堂課 Data Science Orientation
資料科學的第一堂課 Data Science Orientation
Ryan Chung
 
Intro to API.ai / Wit.ai / Luis.ai
Intro to API.ai / Wit.ai / Luis.aiIntro to API.ai / Wit.ai / Luis.ai
Intro to API.ai / Wit.ai / Luis.ai
Ryan Chung
 
Voice Assistant / Chatbot Development 101
Voice Assistant / Chatbot Development 101Voice Assistant / Chatbot Development 101
Voice Assistant / Chatbot Development 101
Ryan Chung
 
Intro to Python - BMI Case Practice
Intro to Python - BMI Case PracticeIntro to Python - BMI Case Practice
Intro to Python - BMI Case Practice
Ryan Chung
 
[微軟x資策會]資料科學線上課程證照(Openedx.iiiedu.org.tw)
[微軟x資策會]資料科學線上課程證照(Openedx.iiiedu.org.tw)[微軟x資策會]資料科學線上課程證照(Openedx.iiiedu.org.tw)
[微軟x資策會]資料科學線上課程證照(Openedx.iiiedu.org.tw)
Ryan Chung
 

More from Ryan Chung (20)

Voice-First Games for Alexa
Voice-First Games for AlexaVoice-First Games for Alexa
Voice-First Games for Alexa
 
AI Service Integration - Education
AI Service Integration - EducationAI Service Integration - Education
AI Service Integration - Education
 
AI Service Integration
AI Service IntegrationAI Service Integration
AI Service Integration
 
AI Adoption in the Enterprise
AI Adoption in the EnterpriseAI Adoption in the Enterprise
AI Adoption in the Enterprise
 
AI in Classroom
AI in ClassroomAI in Classroom
AI in Classroom
 
AWS re:Invent 2018 Recap
AWS re:Invent 2018 RecapAWS re:Invent 2018 Recap
AWS re:Invent 2018 Recap
 
Introduction to DialogFlow
Introduction to DialogFlow Introduction to DialogFlow
Introduction to DialogFlow
 
Udacity Meet Up - 0413
Udacity Meet Up - 0413Udacity Meet Up - 0413
Udacity Meet Up - 0413
 
Amazon Alexa Development Part II
Amazon Alexa Development Part IIAmazon Alexa Development Part II
Amazon Alexa Development Part II
 
Amazon Alexa Development
Amazon Alexa DevelopmentAmazon Alexa Development
Amazon Alexa Development
 
Microsoft Professional Program - AI
Microsoft Professional Program - AIMicrosoft Professional Program - AI
Microsoft Professional Program - AI
 
AI Service Integration
AI Service IntegrationAI Service Integration
AI Service Integration
 
Intro to AI
Intro to AIIntro to AI
Intro to AI
 
Hour of Code - Amazon Alexa
Hour of Code - Amazon AlexaHour of Code - Amazon Alexa
Hour of Code - Amazon Alexa
 
Intro to DialogFlow(API.ai) / Wit.ai / Luis.ai
Intro to DialogFlow(API.ai) / Wit.ai / Luis.aiIntro to DialogFlow(API.ai) / Wit.ai / Luis.ai
Intro to DialogFlow(API.ai) / Wit.ai / Luis.ai
 
資料科學的第一堂課 Data Science Orientation
資料科學的第一堂課 Data Science Orientation資料科學的第一堂課 Data Science Orientation
資料科學的第一堂課 Data Science Orientation
 
Intro to API.ai / Wit.ai / Luis.ai
Intro to API.ai / Wit.ai / Luis.aiIntro to API.ai / Wit.ai / Luis.ai
Intro to API.ai / Wit.ai / Luis.ai
 
Voice Assistant / Chatbot Development 101
Voice Assistant / Chatbot Development 101Voice Assistant / Chatbot Development 101
Voice Assistant / Chatbot Development 101
 
Intro to Python - BMI Case Practice
Intro to Python - BMI Case PracticeIntro to Python - BMI Case Practice
Intro to Python - BMI Case Practice
 
[微軟x資策會]資料科學線上課程證照(Openedx.iiiedu.org.tw)
[微軟x資策會]資料科學線上課程證照(Openedx.iiiedu.org.tw)[微軟x資策會]資料科學線上課程證照(Openedx.iiiedu.org.tw)
[微軟x資策會]資料科學線上課程證照(Openedx.iiiedu.org.tw)
 

MovieBot

  • 1. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Chatbot開發 你的口袋電影百科 Ryan Chung III Digital Education Institute 未來之星 – 菁英培育計畫 1
  • 2. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 資策會 數位教育研究所 ² 最新科技進修 Ø 在職夜間假日進修 Ø 轉職全天養成班 ² 資訊技術充電站 Ø 國際技術趨勢 Ø 職場必備能力 Ø 基本資訊技能 http://taipei.iiiedu.org.tw/ 2
  • 3. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Ryan Chung ² 主要教授科目 Ø 語音助理應用開發 Ø Chatbot應用開發 Ø Web / App 應用 ² 資策會數位教育研究所 Ø 課程經理 / 養成班導師 Ø 企業包班 / 政府專案經理 Ø 課程專任講師 /專題輔導 http://mobiledev.tw/ryan 3
  • 4. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 產品預期畫面 4
  • 5. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 電影機器人開發 1.0 • 目標 – 輸入:電影名稱 – 回傳:簡介、海報 • 介面 – Line • 工具/技術 – DialogFlow – Node.JS • 資料 – theMovieDB.org 5
  • 6. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw MovieBot 架構 • 語意分析 + 聊天機器人+ 電影資料庫 + 部署上線 FulFillment • 設定回應 The Movie DB • 電影資料 DialogFlow 意圖:查詢電影簡介 資料:電影名稱 API Line 6
  • 7. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Dialogflow 7
  • 8. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Create New Agent 8
  • 9. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Create New Agent • 建立Agent – 名稱:MovieBot – 語言:zh-tw 9
  • 10. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 語意分析常見名詞 • Intent 意圖 – 使用者對談的目的 • Entity 關鍵資訊 – 達成目的的必要輸入資訊 • Utterance 例句 – 使用者常用的句型 10
  • 11. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Create Intent 11
  • 12. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 輸入 Intent 名稱後,按下Save 12
  • 13. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 進入 Training phrases 區塊 • 點擊下方Add Training Phrases 13
  • 14. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 輸入對應此Intent會出現的句子 • 輸入例句 – ❞我想要查電影簡介 – ❞我想知道教父的劇情 • 把教父反白,選擇 @sys.any,設定變數名稱為MovieName – @我想知道@sys.any:MovieName 的劇情 • 注意最前面換成@、注意 @sys.any:MovieName 有上色 • 雙逗號:例句輸入、@:文法結構輸入 14
  • 15. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 進入變數與對應行動的設定 • 點擊下方 Manage Parameters and Action 15
  • 16. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 標示必要資訊,並引導使用者輸入 • 決定哪些偵測到的資訊是必要的,在前方打勾 • 必要資訊還沒收集到時,設定提示句向使用者索 取必要資訊 (Define prompts...) • 點擊 Define prompts... 16
  • 17. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 追問出電影名稱 • 輸入引導使用者說出電影名稱的句子 17
  • 18. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 設定回應 • 點擊下方的 Add Response • 意圖確認,並且拿到必要的關鍵資訊 18
  • 19. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 設定確認回應後,按下右上角Save • 存檔完成後,過一會右下方會出現訓練完成訊息 Agent Training Completed 19
  • 20. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 在右上角測試看看 20
  • 21. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 用Web Demo網頁展示 • 點擊左方選單中的 Integrations • 將Web Demo的開關打開 21
  • 22. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 用Web Demo網頁展示 • 點擊出現的網址 • 出現網頁對話視窗!測試看看 22
  • 23. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw DialogFlow Recap • 建立Agent – 名稱:MovieBot – 語言:zh-TW • 建立Intent – 名稱:Get Movie Intro • 輸入例句 – ❞我想要查電影簡介 – ❞我想知道教父的劇情 • 把教父反白,選擇 @sys.any,設定變數名稱為MovieName – @我想知道@sys.any:MovieName 的劇情 • 注意最前面換成@、注意 @sys.any:MovieName 有上色 23
  • 24. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw DialogFlow • 設定需求變數與反問句 – 將MovieName打勾 – 設定反問句:請問你要查詢的電影名稱是? • 設定確認回饋句 – 了解,馬上為你查詢$MovieName的劇情簡介 24
  • 25. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw DialogFlow 運作機制 Source: DialogFlow 25
  • 26. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Webhook 1. 透過Webhook在雲端運行,DialogFlow透過 Webhook去取得所需的資料,再傳遞給使用者 2. 所有處理程序都在後端,前端可由所有支援的方 式來運作(網站、聊天機器人、語音助理...) 26
  • 27. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 實作:Webhook建立 確認目標,取得資料 27
  • 28. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 啟動webhook • 在DialogFlow中,進入MovieBot專案 • 點擊左邊Intents,然後進入「Get Movie Intro」Intent • 最下方Fulfillment,點擊 Enable Fulfillment • 打開 Enable webhook call for this intent • 右上方點擊Save 28
  • 29. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 確認設定為V2 API • 點擊專案名稱旁邊的齒輪 • General -> API Version • 選擇 V2 API 29
  • 30. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 開發前準備事項 • 安裝 VS Code – https://code.visualstudio.com/ • 安裝 Node – https://nodejs.org/en/download/ • 安裝 Ngrok – https://ngrok.com/download 30
  • 31. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 安裝Node.js • 選擇穩定版 (Recommend For Most Users) – Windows Installer:下載msi檔 – macOS Installer:下載pkg檔 • 如何確認安裝? – 打開終端機,輸入:node -v https://nodejs.org/en/ 31
  • 32. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 安裝Ngrok • 建議放置位置 – Windows:主要使用者資料夾 – Mac:應用程式 • 設定為在哪裡都可以執行 – Windows:我的電腦 -> 右鍵 -> 內容 -> 進階系統設定 -> 環境變數 -> 系統變數 -> Path -> 編輯 -> 新增 – Mac:ln -s /Applications/ngrok ngrok https://ngrok.com/download 32
  • 33. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 建立開發專案 • 建立專案資料夾:MovieBot • 建立主要程式檔:index.js https://github.com/ryan403/MovieBot 33
  • 34. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 建立index.js 輸入程式碼 注意大小寫 34
  • 35. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 繼續於index.js 輸入程式碼 35
  • 36. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 繼續於index.js 輸入程式碼 36
  • 37. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 設定MovieDB API Key • 新增config資料夾 • 在config資料夾中新增檔案:default.json • 增加MovieDB_API_Key (稍後至該網站申請) Your API Key here 37
  • 38. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw TheMovieDB.org • 註冊帳號、填寫相關資料 • 點擊個人頭像 -> 帳戶設定 • 左邊清單點擊API • 複製API Key(v3 auth)至上一頁 https://www.themoviedb.org/account/signup 38
  • 39. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw TheMovieDB Search API https://developers.themoviedb.org/3/search/search-movies 39
  • 40. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 專案初始化 • 在VS Code中,按下 Ctrl + ~ 開啟終端機 • 輸入npm init • 按下多次enter,使用預設值建立package.json 安裝需要的套件 • 在VS Code中,按下 Ctrl + ~ 開啟終端機 • 安裝能夠一次安裝需求模組的套件 – 在終端機輸入npm install npm-install-all -g – 需要管理者權限(Mac加sudo) • 針對特定檔案中的需求來安裝套件 – 在終端機輸入npm-install-all index.js 40
  • 41. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 增加Debug與Start Scripts • 在 package.json 新增 • debug:在地測試、start:伺服器上線 41
  • 42. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 執行並開啟除錯模式 • 點擊VS Code中左邊選單中的第四個(偵錯) • 上方Play按鈕右邊下拉新增組態... • 選擇「{ } Node.js 透過NPM 啟動」 • 按下Play按鈕 • 下方偵錯主控台確認伺服器是否已啟動 42
  • 43. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 運用Ngrok讓開發機變成伺服器 • 在終端機執行 ngrok http 5000 • 複製產生的公開網址 (Forwarding https://.....) Copy this one 43
  • 44. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw DialogFlow Fulfillment • ENABLED、填完URL(後面加上/webhook)後,按下下方的Save 44
  • 45. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 回到右方測試區進行測試 • 可順利連線,拿到電影資料! 45
  • 46. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Integrations -> LINE -> 打開 • 跟著步驟建立帳號、啟動Messaging API • Log in to console 46
  • 47. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Line Developer Console • Select provider 選擇既有或新增 https://developers.line.me/console/register/messaging-api/provider/ 47
  • 48. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Create new channel • 輸入 App icon、name、description • 選擇 Free Plan • 設定 Category、Subcategory • 輸入 Email address • Confirm 48
  • 49. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 取得相關資訊 • 進入新建立的Channel -> Channel settings • 拿到Channel ID、Channel secret 貼至DialogFlow • Issue to get Channel access token 也貼過去 • 在DialogFlow那邊先按Start • 回到Line Console,Use webhooks Enabled • 把Webhook URL從DialogFlow那邊貼過來 • 把Auto-reply messages、Greeting messages Disabled 49
  • 50. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 用QR code 加入自己的Chatbot • 用Line加入自己的Chatbot • 試著看看能不能看到剛才設定好的對話 50
  • 51. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 電腦關機怎麼辦? 51
  • 52. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw node_modules 不上傳 • 增加 .gitignore 檔案 – 裡面寫:node_modules/ 52
  • 53. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 部署至Heroku • 註冊帳號 • 右上角 New -> Create new app • 設定App name:movie-bot-XXYYZZ • 區域:美國 • Create App https://www.heroku.com/ 53
  • 54. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Deploy using Heroku Git • 使用Heroku Git (Use Heroku CLI) • 下載與安裝 Heroku CLI • 終端機 heroku login cd my-project-dic git init heroku git:remote –a YourProjectNameHere https://devcenter.heroku.com/articles/heroku-command-line 是你在Heroku中的專案名稱哦! 通常長得像 oo-bot-xxyyzz 切換到專案資料夾路徑下,若已經在裡面則可忽略此步驟 54
  • 55. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 開始部署上傳(每次更新步驟亦同) • git add . • git commit –am "make it better" • git push heroku master • heroku restart 雙引號這邊像是你的上傳筆記 在這裡寫上這次更新的內容 之後code更新時再加這一步 第一次不用 55
  • 56. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 啟動網站 • heroku ps:scale web=1 非常非常關鍵的一步,一定要記得做 56
  • 57. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 找到Heroku的網址 • Settinges分頁下拉 -> Domains and certificates https://dashboard.heroku.com/apps/YourAppName/settings • 其實網址就是 https://YourAppName.herokuapp.com 57
  • 58. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 回到DialogFlow設定Fulfillment • Webhook Enabled https://YourAppName.herokuapp.com/webhook • 打完記得畫面拉至最下方,按下Save 58
  • 59. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 再度進行測試 • 本地的Ngrok、VS Code 都可以關掉 • 進入DialogFlow -> 右方測試區 59
  • 60. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw fulfillmentMessages - card https://dialogflow.com/docs/fulfillment#response "fulfillmentMessages": [ { "card": { "title": "card title", "subtitle": "card text", "imageUri": "https://assistant.google.com/static/images/molecule/Molecule-Formation-stop.png", "buttons": [ { "text": "button text", "postback": "https://assistant.google.com/" } ] } } ] 60
  • 61. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw fulfillmentMessages支援 • Text • Image https://dialogflow.com/docs/reference/v1-v2-migration-guide-fulfillment#fulfillment_messages_reference • Quick Reply 61
  • 62. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 對話流程 人 <-> 人 人 <-> Chatbot/VA 開啟對話 寒暄語 Hello、你好、嗨 喚醒語 Invocation 系統指定啟動語 Alexa, Hi Siri, OK Google 提出需求 台北的天氣如何? 一般人均可直接理解對方的需求 釐清意圖 Intent 透過語句解析,確定對方的意圖是什麼 訓練 釐清意圖 N/A 由於同一意圖有多種表達方式 所以要多提供例句讓機器對應至特定意圖 取得 關鍵資訊 若對方漏說了地方與時間 持續問答取得資訊 取出關鍵資訊 Entity 預先定義好滿足該意圖所需的關鍵資訊 持續與使用者對話取得所有需求關鍵資訊 確認 條件滿足 跟對方確定取得必要資訊後 開始進行查詢 依據關鍵資訊與意圖 進行下一階段資料查詢(API 介接) 回應 回應查詢結果 新聞說今天臺北在下雨,氣溫19度 依據查詢結果 以文字、圖形或語音的方式回應 延伸問答 依據目前資訊的延伸問題 那明天的狀況也一樣嗎? 須將既有輸入資訊暫存 更新資料查詢並進行回應 62
  • 63. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 人機互動腳本準則 • 以人們真正會說的話來設計,而不是那種文章上的口吻 • 不要假設使用者知道要怎麼做或是知道會發生什麼事 真實 • 避免使用有多重含義的詞句、片語 • 引導使用者提供必要的資訊 明確 • 清楚地把選項呈現出來 • 一般而言,一次不要丟出超過三個選項 • 一次向使用者要一個資訊 簡單 63
  • 64. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw Recap • Dialogflow – 語意分析、前端整合 • TheMovieDB API – 資料來源 • Ngrok – 暫時讓本機變成Server • Heroku – 雲端主機服務 • 電影其他資訊查詢 – 評分、演員、年代... • 電影時刻查詢 – 各地電影院時刻資料 • 多媒體 – 電影預告、電影配樂 • 電影推薦 – 測驗、查詢記錄... Extra 64
  • 65. Chatbot開發 – 你的口袋電影百科 Ryan@iii.org.tw 敬請指教 Ryan Chung Senior Engineer III Digital Education Institute Ryan@iii.org.tw 65