1. 簡介
在這個研究室中,您將使用 Dialogflow 建構簡單的動作,並瞭解如何與 Google 助理整合。
這些練習經過排序,以反映常見的雲端開發人員體驗:
- 建立 Dialogflow v2 虛擬服務專員
- 建立實體
- 建立意圖
- 使用 GCP Cloud 函式設定 Webhook
- 使用知識庫匯入常見問題
- 測試聊天機器人
- 啟用 Google 助理整合功能
建構目標
我們將為 Women in Voice 聚會團體打造 Google 助理應用程式。能夠詢問下一場聚會的時間、文章與預訂有關聚會團體的提示或一般問題。 |
課程內容
- 如何使用 Dialogflow v2 建立聊天機器人
- 如何使用 Dialogflow 建立線性對話
- 如何利用實體
- 如何善用知識庫
- 如何使用 Dialogflow 和 GCP 函式設定 Webhook 執行要求
- 如何透過 Actions on Google 將應用程式與 Google 助理整合
必要條件
- 您需要有 Google 身分 / Gmail 地址,才能建立 Dialogflow 虛擬服務專員。
- 我們會針對 GCP Cloud Functions 的使用提供 GCP Cloud 抵免額
- 您必須存取這份公開的 Google 試算表,才能取得代理程式資料。
- 在新分頁中開啟:https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit?usp=sharing
- 您不一定要具備 JavaScript 的基本知識,但這有助於您變更 Webhook 執行要求程式碼。
2. 開始設定
在瀏覽器中啟用網路活動
- 確認應用程式活動已啟用:
建立 Dialogflow 虛擬服務專員
- 在左側列的標誌下方,選取 [Create New Agent] (建立新代理程式)。如果您有現有服務專員,請先點選下拉式選單。
- 指定代理程式名稱:
yourname-wiv
(使用自己的名稱) - 預設語言為 [英文 - en]。
- 將時區設為預設時區,請選擇離你最近的時區。
- 「請勿」選取 Mega Agent。(有了這項功能,您就可以建立整體代理程式,並在「子」代理程式之間進行自動化調度管理,我們現在不需要這項資訊)。
- 按一下 [建立]
設定 Dialogflow
- 在左側選單中,按一下專案名稱旁邊的「齒輪」圖示。
- 輸入以下虛擬服務專員說明:Women in Voice agent
- 向下捲動至「Beta 版功能」並切換切換鈕,即可啟用 Beta 版功能。
- 向下捲動至「Log Settings」(記錄設定),然後左右切換兩個開關,以記錄 Dialogflow 互動,並在 Google Cloud Stackdriver 中記錄所有互動。稍後需要輸入這個 ID,以便對動作進行偵錯。
- 點選「儲存」。
- 然後按一下 [完成]。
設定 Actions on Google
- 在右側面板中點選「瞭解 Google 助理的運作方式」中的「Google 助理」連結。
隨即開啟:http://console.actions.google.com。
注意:請務必使用與 Dialogflow 相同的 Google 帳戶登入。
如果您是第一次使用 Actions on Google,請先填妥這份表單:
- 按一下專案名稱,嘗試在模擬器中開啟動作**。**
- 選取選單列中的「開發」
取消勾選「比對使用者的語言設定」。確保 Google 助理預設語言不會取代文字轉語音合成器。
- 點選「儲存」。
- 在選單列中選取「測試」
- 確認模擬工具已設為「English」,然後按一下「Talk to my test-app」
這項操作將以基本 Dialogflow 預設意圖向您問候。也就是說,與 Action on Google 整合的設定可順利運作!
設定 Google Cloud
在本教學課程中,您需要擁有已連結帳單帳戶的 GCP 帳戶。如果你還沒有 Google 帳戶,可以按照下列步驟建立帳戶。
一般來說,帳單帳戶需要提供信用卡等付款方式。我們可以利用研討會的抵免額來略過這項程序。
- 前往這個網址並登入
- 按一下:按這裡取得抵免額
- 按一下 [接受並]繼續
大功告成!您已建立一筆 $25 美元的帳單帳戶,金額應足以長時間使用 Cloud Functions。
啟用 Google Sheets API
如果您的代理程式需要靜態意圖回應以外的內容 (例如從網路服務、資料庫或試算表擷取資料),則您必須使用執行要求將網路服務連結至代理程式。連結網路服務後,即可根據使用者表達內容執行動作,並將動態回應傳回給使用者。
舉例來說,如果使用者想要接收網誌或書籍小費,您的網路服務可以登記資料庫,並回覆使用者想閱讀的文章。
在這個教學課程中,我們不會使用資料庫,而是使用 Google 試算表。工作表更新後,Google 助理動作也會一併更新。真棒!
- 在新的瀏覽器分頁中開啟這份 Google 試算表 (如果尚未開啟):
- https://docs.google.com/spreadsheets/d/1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY/edit#gid=1240329448
- 重要事項:複製這份工作表。按一下「檔案」>建立副本
- 試算表複製完成後,按一下「共用」。
- 我們必須授予 Dialogflow 服務帳戶編輯權限。方法是開啟 Dialogflow >「設定」(設定齒輪圖示)。
- 向下捲動至「Google 專案」。
- 複製服務帳戶 (電子郵件地址) 地址。如下所示:dialogflow-<someid>@<my-gcp-project>.iam.gserviceaccount.com
- 將這個服務帳戶貼到 Google 試算表的「共用」彈出式視窗中,然後授予「編輯」權限。
- 接著,請記下你正在使用的工作表 ID。
The Sheets URL will look something like this:
https://docs.google.com/spreadsheets/d/1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o/edit#gid=1240329448
But we are only interested in the Sheet id, which is the part between:
https://docs.google.com/spreadsheets/d/ 和 /edit#gid=1240329448 (不含斜線)。
So it will look something like this: **1fPd8b_z19U7ZzAaY327QhYoogn6q8c1rpGSNF8KIR_o**
**Write this Sheet ID down**, or copy it to Notepad. In the Webhook steps we will use this again.
- 在另一個瀏覽器分頁中開啟;http://console.cloud.google.com.(如果您有更多 Google Cloud 專案,請啟用新的 Dialogflow 專案:yourname-wiv)。- 在搜尋列中搜尋:Google Sheets API
- 請按這裡,然後點選頂端的「啟用」Google Sheets API 按鈕。
3. 自訂實體
實體是指應用程式或裝置對其執行動作的物件。您可將其視為參數 / 變數。在本活動中,我們會詢問:
"我想掌握有關
聊天機器人
/ 我想掌握有關
聲音*"*
無論你選擇的是聊天機器人、Voice 或兩者,這項資訊都會從自訂實體收集,並做為我向網路服務要求的參數。
如要進一步瞭解 Dialogflow 實體,請參閱本文。
建立 Channel 實體
- 在 Dialogflow 控制台中,按一下選單項目:[Entities] (實體)
- 按一下「建立實體」。
- 實體名稱:
tech
(必須全部為小寫) - 使用同義詞指定選項。(您可透過 Tab 鍵存取介面)。
Chatbots - Chatbots, Chat, Web
Voice - Voice, Voicebots, Voice Assistants
Both - Both, All
5**.**按一下藍色儲存按鈕旁的選單按鈕,切換至「原始編輯」模式。
- 請注意,您也可以輸入 CSV 格式的所有實體。如果需要建立大量實體,這項功能就很實用。
"Chatbots","Chatbots","Chat","Web"
"Voice","Voice","Voicebots","Voice Assistants"
"Both","Both","All"
- 按一下「儲存」
4. 意圖
Dialogflow 使用意圖來分類使用者的意圖。意圖包含訓練詞組,這是使用者可能會向代理程式說的內容範例。
舉例來說,如果使用者想知道想知道下次活動何時可能會問:
「下一場聚會是什麼時候?」
當使用者撰寫或說出特定內容時 (稱為「使用者運算式」),Dialogflow 會將使用者表達內容與代理程式中最相符的意圖進行比對。比對意圖的作業也稱為「意圖分類」。
修改預設歡迎意圖
建立新的 Dialogflow 代理程式時,系統會自動建立兩個預設意圖。預設歡迎意圖是您與代理程式開始對話時進入的第一個流程。「預設備用意圖」是指在代理程式無法理解您,或無法將意圖與您剛剛說的內容配對時,您所使用的流程。
- 按一下意圖 >預設歡迎意圖
如果是 Google 助理,系統會自動以預設歡迎意圖自動啟動。這是因為 Dialogflow 正在監聽歡迎事件。不過,您也可以說出輸入的其中一個訓練詞組來叫用意圖。
以下是預設歡迎意圖的歡迎訊息:
使用者 | 代理程式 |
「Ok Google,說出「<你的名稱>-WIV」 | 「你好,我是女性 Voice 的虛擬服務專員 Anna」。「你可以詢問我想知道的見面會、《女用 Voice》或閱讀提示。你想知道哪些資訊?」 |
- 向下捲動至「回應」。
- 清除所有簡訊回應。
- 在預設分頁中建立下列 3 個回應。(請在每一行中按一下 [新增回應] > [文字] 或 SSML 回應:)
- 大家好,我是 Voice in Voice 的虛擬服務專員 Anna。
- 你可以詢問我「聚會」、「女用 Voice」或閱讀提示的相關資訊。
- 您想瞭解什麼資訊?
設定應類似於這張螢幕截圖。
- 先前的輸出內容用於聊天機器人,我們可以稍微修改輸出內容,特別是 Google 助理。我們會使用 SSML (語音合成標記語言) 來建立句子中的停頓點。按一下「Google 助理」分頁標籤。
- 「不要」啟用預設切換鈕,以免重複使用聊天機器人訊息。
- 按一下 [新增回應]>簡要回覆
- 新增下列文字版本:
Hey there, I'm Anna, the virtual agent of Women in Voice.
You can ask me for information about meetups, Women in Voice or a reading tip. What would you like to know?
- 然後點選「自訂音訊輸出」。
- 並新增下列 SSML 版本:
<speak><p><s>Hey there, I'm Anna, the virtual agent of Women in Voice.</s><s>
You can ask me for information about meetups, Women in Voice or a reading tip.</s></p><break time="500ms"/><p><s>
What would you like to know?</s></p></speak>
設定應類似於這張螢幕截圖。
- 點選「儲存」。
如要進一步瞭解 Actions on Google 的 SSML,請參閱這篇文章。
- 我們來測試這項意圖。首先,我們要在 Dialogflow 模擬器中進行測試。
類型:Hello。系統應會傳回這則訊息。
- 現在,請切換回 Actions on Google 控制台。
(您可能會想保留在其他分頁中)。
按一下「與我的測試應用程式交談」。然後聆聽新的歡迎訊息
修改預設備用意圖
- 按一下意圖 >預設備用意圖
- 向下捲動至「回應」。
- 清除所有簡訊回應。
- 在預設分頁中,請逐行建立下列回應,讓各選項在選項間切換:
Sorry, can you repeat this?
I didn't understand you. You can ask me questions about Women in Voice, a book or article tip or when the next meetup will be.
- 點選「儲存」。
請注意,如果你未輸入 Google 助理輸出內容,系統會採用預設輸出方式。
建立停止意圖
- 按一下「Intents」選單項目。
- 點選「建立意圖」。
- 輸入意圖名稱:
Stop Intent
- 按一下「新增訓練詞組」。
No
That's it
Bye
I don't want that
Goodbye
It's ok for now
Quit
I want to stop
Close this
End the conversation
- 向下捲動至「回應」。>新增回覆
- 新增下列文字選項:
Alright! Hopefully we will see you at one of our meetups!
No problem. See you at one of our meetups!
- 切換切換鈕:將這項意圖設為對話結束。這麼做可確保系統在比對出這項意圖後,就會關閉 Google 助理動作。
- 按一下 [儲存]。
建立 Meetup 意圖
Meetup 意圖會包含以下對話內容:
使用者 | 代理程式 |
「下一場聚會是什麼時候?」 | "下一場聚會將於 <日期><time>位於<location>。主題會是「<topic>」。揚聲器是:<speakers>。你可以透過我們的電子報報名。」 |
- 按一下「Intents」選單項目。
- 點選「建立意圖」。
- 輸入意圖名稱:
Meetup Intent
(請務必使用大寫 M 和大寫 I。- 如果拼寫出不同的意圖,後端服務將無法運作!) - 按一下「新增訓練詞組」。
When is the next meetup?
Do you have any events?
Which events are in the planning?
Are there meetup events soon?
I would love to attend a meetup
Can I join a virtual meetup?
When will you get together?
Can I join?
What does your calendar look like?
- 按一下「執行要求」>「執行要求」啟用執行要求
- 翻轉「Enable Webhook call for this intent」切換鈕。
- 按一下「儲存」
建立提示意圖
小費意圖會包含對話中的以下部分:
使用者 | 代理程式 |
「我想獲得閱讀提示。」 | 「你想要進一步瞭解聊天機器人、語音,還是兩者?」 |
「語音服務」 | "好的,以下是今日的秘訣!<type><title><author>。需要其他書籍或文章的小秘訣嗎?此外,我可以協助你進一步瞭解聚會或我們的活動。需要什麼協助嗎?」 |
- 再次按一下「Intents」(意圖) 選單項目。
- 點選「建立意圖」。
- 輸入意圖名稱:
Tip Intent
(請務必使用大寫 L 和大寫 I。- 如果拼寫出不同的意圖,後端服務將無法運作!) - 按一下 [新增訓練詞組],並新增下列內容:
Can I get a tip for an article?
I would like to receive a reading tip
Any book tips?
What's nice to read?
I want to learn more about Chatbots, what should I read?
What are nice blogs?
Do you have book suggestions?
I want to receive information about Both
Can I have Chatbots reading tip
I would like to read more about Voice
Voice please
Both are okay.
Reading tip
Tip
Blog
Article
Book
Book suggestions
Yes
Yeah
Another tip
Yes one more
- 向下捲動至「動作和參數」。
- 將 tech 標示為 quired
點選「定義提示」,然後輸入以下內容:
Do you want to read more about Chatbots, Voice or Both?
- 按一下「執行要求」>「執行要求」啟用執行要求
這次,我們不會將回應寫死。回應將來自 Cloud 函式!因此,請翻轉「Enable Webhook call for this intent」切換鈕。
按一下「執行要求」>「執行要求」啟用執行要求
- 翻轉「Enable Webhook call for this intent」切換鈕。
- 按一下「儲存」
5. 知識連接器
知識連接器可與已定義的意圖互補。專家會剖析知識文件,找出自動回覆。(例如 CSV 檔案、線上網站或 PDF 檔案的常見問題或文章)。如要設定知識庫,您必須定義一或多個知識庫 (即知識文件集合)。
我們來試試。
- 選取「en」標記,在頂端選單中選取英文。
- 選取選單中的「Knowledge」(Beta 版)。
- 按一下右側藍色按鈕:Create Knowledge Base
- 輸入知識庫名稱;按一下「Women in Voice」,然後點選「儲存」。
- 按一下「建立第一個連結」連結。
- 開啟視窗後,
請使用下列設定:
文件名稱:Women in Voice 常見問題表
知識類型:常見問題
Mime 類型:CSV
- 我們需要這份工作表中的資料,確認你已開啟資料工作表,然後選取「常見問題」分頁標籤
- 選取「檔案」>下載 >CSV
- 返回 Dialogflow,按一下「Upload File from Computer」,然後選取您下載的 CSV 檔案。按一下「建立」。
已建立知識庫:
- 按一下「新增回應」。
建立下列答案,然後按一下「儲存」:
$Knowledge.Answer[1]
- 按一下「查看詳細資料」。
當中會顯示您在 Dialogflow 中實作的所有常見問題。
這太簡單了!
請注意,您也可以連結至線上 HTML 網站,查看常見問題,將常見問題匯入代理程式。你甚至可以上傳含有一段文字的 PDF 檔案,Dialogflow 會提出問題。
- 按一下 Dialogflow 選單中的「Knowledge (Beta 版)」,返回所有知識庫連接器。
- 知識庫的強度和弱點都可能改變,只要您知道常見問題的勝出組合為何都勝過個人意圖,這個做法就很合理。因為我們沒有太多意圖,所以讓我們的知識庫更強大。將資源調度率變更為 -0.2。拖曳滑桿後,滑桿就會自動儲存數值。
現在常見問題應該會顯示為「額外項目」新增至代理程式,就在意圖流程旁邊。知識庫常見問題無法訓練模型。因此,以截然不同的方式提問,可能會因為沒有使用自然語言理解 (機器學習模型) 而成為相符項目。因此,有時建議你將常見問題轉換成意圖。
6. Webhook 執行要求
建立 Google Cloud 函式
- 請在另一個瀏覽器分頁中前往 http://console.cloud.google.com。
- 選取左選單中的「Cloud Functions」
- 按一下「建立函式」
- 指定下列設定:
- 名稱:
dialogflow
- 分配的記憶體:256MiB
- 觸發條件:HTTP
- 將網址複製到剪貼簿。
- 選取「Inline Editor」(內嵌編輯器)
- 執行階段:NodeJS 8
- 要執行的函式:
dialogflow
- 請確定已勾選這個驗證核取方塊:
- 以下是 package.json 的內容。複製此項目並貼到編輯器的 package.json 分頁中。
這段程式碼會將正確的 npm 程式庫載入 Google Cloud:
{
"name": "dialogflow",
"description": "Cloud Functions",
"engines": {
"node": "8"
},
"dependencies": {
"request": "^2.85.0",
"request-promise": "^4.2.5",
"dialogflow-fulfillment": "^0.6.1",
"actions-on-google": "^2.2.0",
"googleapis": "^48.0.0",
"moment": "^2.24.0"
},
"devDependencies": {
"eslint": "^5.12.0",
"eslint-plugin-promise": "^4.0.1",
"ngrok": "^3.2.7"
},
"private": true
}
- 以下是 index.js 的內容。複製此項目並貼到編輯器的「index.js」分頁中。
這段程式碼會與 googleapis 程式庫整合,以便從 Google 試算表擷取資料。會運用 actions-on-google 程式庫,在 Google 助理裝置上顯示資訊卡。並使用程式庫 dialogflow-fulfillment 將 Dialogflow 意圖分類。而且會利用程式庫的「時刻」來處理日期和時間物件。
/* jshint esversion: 8 */
'use strict';
process.env.DEBUG = 'dialogflow:debug';
const ACCOUNTS_SHEET_ID = '1UWx3WYVCrqz0D4uJ_pO56WeqEPa9rQDG1cfc_H11kgY';
const {
BasicCard,
Button,
} = require('actions-on-google');
const {google} = require('googleapis');
const moment = require('moment');
moment.locale('nl');
const { WebhookClient } = require('dialogflow-fulfillment');
var books;
var meetups;
const SHEETS_SCOPE = 'https://www.googleapis.com/auth/spreadsheets.readonly';
/**
* Authenticates the Sheets API client for read-only access.
*
* @return {Object} sheets client
*/
async function getSheetsClient() {
// Should change this to file.only probably
const auth = await google.auth.getClient({
scopes: [SHEETS_SCOPE],
});
return google.sheets({version: 'v4', auth});
}
/**
* Return a natural spoken date
* @param {string} date in 'YYYY-MM-DD' format
* @returns {string}
*/
var getSpokenDate = function(date){
let datetime = moment(date, 'YYYY-MM-DD');
return `${datetime.format('D MMMM')}`;
};
/* When the tipIntent Intent gets invoked. */
function tipIntent(agent) {
var par = agent.parameters.tech;
var selection = [];
//console.log(par);
//console.log(books);
for(var i = 0; i<books.length; i++){
if(books[i][2].toLowerCase() == par.toLowerCase()) {
selection.push(books[i]);
}
}
var random = Math.floor(Math.random() * selection.length);
var booktip = selection[random];
//console.log(selection[random]);
let spokenText = `<p><s>Alright, here's the tip of the day!</s></p><p>The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.</p>`;
let writtenText = `Alright, here's the tip of the day! The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`;
//console.log(booktip[8]);
if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
let conv = agent.conv();
conv.ask(`<speak>${spokenText}</speak>`);
conv.ask(new BasicCard({
title: `Tip of the day!`,
subtitle: `${par}`,
text: `The ${booktip[6]} ${booktip[0]} of ${booktip[1]}.`,
buttons: new Button({
title: 'Read',
url: `${booktip[8]}`,
})
}));
conv.ask(`<speak><p><s>Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?</s></p></speak>`);
// Add Actions on Google library responses to your agent's response
agent.add(conv);
} else {
agent.add(writtenText + ' Do you want another book or article tip? Also, I can tell you more about meetups or what we do. How can I help?');
}
}
function meetupIntent(agent) {
let conv = agent.conv();
let record;
console.log(meetups);
for(var i = 0; i<meetups.length; i++){
let d = moment(meetups[i][0], 'YYYY-MM-DD');
let today = moment(new Date());
if(moment(d).isSameOrAfter(today)) {
// the i event is not in the past
record = meetups[i];
console.log(record);
break;
}
}
let date = getSpokenDate(record[0]);
let spokenText1 = `The next meetup will be ${date} at ${record[1]} in ${record[3]}.`;
let spokenText2 = `The topic will be <emphasis level="moderate">${record[2]}.</emphasis>`;
let spokenText3 = `You can register via our newsletter.`;
let writtenText = `${spokenText1} The topic will be ${record[2]}. ${spokenText3}`;
if (agent.requestSource === agent.ACTIONS_ON_GOOGLE) {
conv.ask(`<speak>${spokenText1} ${spokenText2} ${spokenText3}</speak>`);
conv.ask(new BasicCard({
title: `Meetup`,
subtitle: `${record[2]}`,
text: `${record[0]} ${record[1]} - ${record[3]}`,
buttons: new Button({
title: 'Register',
url: `http://www.meetup.com`
})
}));
conv.ask('<speak><p><s>Is there anything else I can help you with?</s></p></speak>');
agent.add(conv);
} else {
agent.add(`${writtenText} Is there anything else I can help you with?`);
}
}
exports.dialogflow = async (request, response) => {
var agent = new WebhookClient({ request, response });
console.log('Dialogflow Request headers: ' + JSON.stringify(request.headers));
console.log('Dialogflow Request body: ' + JSON.stringify(request.body));
const client = await getSheetsClient();
const allBooks = await client.spreadsheets.values.get({
spreadsheetId: ACCOUNTS_SHEET_ID,
range: 'Books&Blogs!A:I',
});
const allEvents = await client.spreadsheets.values.get({
spreadsheetId: ACCOUNTS_SHEET_ID,
range: 'Meetups!A:D',
});
books = allBooks.data.values;
meetups = allEvents.data.values;
books.shift();
meetups.shift();
var intentMap = new Map();
intentMap.set('Tip Intent', tipIntent);
intentMap.set('Meetup Intent', meetupIntent);
agent.handleRequest(intentMap);
};
- 按一下「環境變數、網路、逾時等」連結
- 選取「Dialogflow Integrations」服務帳戶。
(根據預設,這個帳戶是使用 GAE App Engine 服務帳戶,但這個帳戶應與您在 Google 試算表內共用的服務帳戶,在本教學課程的第一步中相同。)
- 部署 Cloud 函式之前。我們會變更 index.js 分頁中的一行程式碼。第 3 行程式碼:
const
ACCOUNTS_SHEET_ID = '1Yo_E8KONgSiUm00ZmTOqtjXCwULmc2JuI3sjxRyvrkE';
在第一個步驟中,我們在記事本中把這個鍵寫入記事本。因此,請複製這個 ID 並貼到程式碼中。
- 現在我們已做好萬全準備。按一下 [Create] (建立) 按鈕。請稍候,系統正在部署無伺服器函式。
在 Dialogflow 中啟用執行要求
- 切換回 Dialogflow
- 按一下主選單中的「Fulfillment」。
- 啟用「Webhook」切換鈕。
- 輸入已複製到剪貼簿的 Cloud 函式網址。
例如:https://us-central1-leeboonstra-wiv-uhtefa.cloudfunctions.net/dialogflow
- 按一下 [儲存]。
- 我們來測試 Webhook,看看程式碼是否正常運作,並直接在 Dialogflow 模擬工具中測試流程。
7. Actions on Google
Actions on Google 是 Google 助理的開發平台,Gemini 可讓第三方開發「動作」,也就是為 Google 助理提供擴充功能的小工具。
您必須叫用 Google 動作,方法是要求 Google 開啟或對應用程式說話。
這項操作會開啟動作、變更語音,選擇保留「母語」Google 助理範圍。換句話說,您在此階段要求服務專員的所有資訊都必須由您建立。你無法自行執行動作,突然要求 Google 助理提供 Google 天氣資訊 (如果這是想取得的資訊)請先保留 (關閉) 目前動作 (應用程式) 的範圍。
在 Google 助理模擬工具中測試動作
我們來測試下列對話:
使用者 | Google 助理 |
「Ok Google,和我的測試應用程式交談。」 | 「取得測試版應用程式。」 |
使用者 | 您的姓名-WIV |
- | 「你好,我是 Voice in Voice 的虛擬服務專員 Anna。你可以詢問參加聚會、「有聲女」或是閱讀提示的相關資訊。請問你想瞭解什麼資訊?」 |
我可以提供經營網誌的訣竅嗎? | 「你想要進一步瞭解聊天機器人、語音,還是兩者?」 |
聊天機器人 | "好的,以下是今日的秘訣!《Cobus Greyling》報導聊天機器人和隱形容錯的挑戰。想再讀一本書或閱讀秘訣嗎?此外,我可以協助你進一步瞭解聚會或我們的活動。需要什麼協助嗎?」 |
下一場聚會是什麼時候? | 「下一場聚會將於 4 月 29 日下午 6:00 透過虛擬 Hangouts 舉行,主題為線上研討會:使用 Dialogflow 建立 Google Actions!歡迎透過我們的電子報報名。還有其他問題需要我們協助嗎?" |
網站網址為何? | 「我們的網站:www.womeninvoice.com,還有其他問題需要我協助嗎?」 |
不,謝謝 | 「好的。希望你能在我們的聚會上相見!」 |
- 切換回 Google 助理模擬器
開啟: https://console.actions.google.com
- 按一下麥克風圖示,並詢問下列事項:
Talk to my test app.
- 現在,請思考:
Can I have a tip for a blog?
這應該會傳回:
「你想要進一步瞭解聊天機器人、語音,還是兩者?」
Chatbots
"好的,以下是今日的秘訣!《The Article Chatbots and the Challenge Of Cobus Greylings of Cobus Greyling》(科巴斯 Greyling 無形難題的挑戰)。
需要另本書或文章的小秘訣嗎?此外,我可以協助你進一步瞭解聚會或我們的活動。需要什麼協助嗎?」
- 請參考同一個問題的其他版本:
"Yes, I want to read more about Voice"
"好的,以下是今日的秘訣!The Book Designing Voice Interfaces:對話體驗的原則,...是貓咪珍珠。
需要另本書或文章的小秘訣嗎?此外,我可以協助你進一步瞭解聚會或我們的活動。需要什麼協助嗎?」
請注意,您之前從未在 Dialogflow 中使用這個訓練詞組。只是找到了正確的意圖
另請注意,由於您提供的資訊足以讓 Dialogflow 繼續進行,因此沒有後續回答問題。
- 使用下列詞組繼續進行 Dialogflow:
What's the URL for your website
Bye
發生錯誤?請查看記錄檔!
每次在 Cloud 函式程式碼中使用 console.log()
時,資料都會寫入 GCP 記錄 (Stackdriver)。如要存取這些記錄,請開啟 Cloud 控制台 >記錄:
在第一個下拉式選單中,您可以選取「Cloud Function」對話方塊來篩選記錄。
8. 恭喜
您已成功透過 Dialogflow 建立第一個 Google 助理動作!
您可能已經注意到,您的動作是以與 Google 帳戶連結的「測試模式」執行。請在 iOS 或 Android 手機上的 Nest 裝置或 Google 助理應用程式中使用相同的帳戶。您也可以測試動作。
這是研討會示範不過,如果你是為 Google 助理開發人員打造應用程式,可以提交該項動作申請核准。詳情請參閱這份指南。
涵蓋內容
- 如何使用 Dialogflow v2 建立聊天機器人
- 如何透過 Dialogflow 建立自訂實體
- 如何使用 Dialogflow 建立線性對話
- 如何使用 Dialogflow 和 Google Cloud Functions 設定 Webhook 執行要求
- 如何透過 Actions on Google 將應用程式與 Google 助理整合
後續步驟
喜歡這個程式碼研究室嗎?快去看看這些實用的研究室功能吧!