您的動作可適時向使用者推送通知,例如在接近工作的到期日時傳送提醒。
本指南說明如何設定動作的推播通知。
支援的平台
推播通知支援 Android 和 iOS 裝置 (iOS 裝置必須安裝 Google 助理應用程式才能接收推播通知)。聲控音箱、智慧螢幕或其他介面目前不支援這些功能。
必要條件
專案必須包含至少一個全域意圖,當使用者輕觸收到 Google 助理的推播通知時就會叫用此意圖。
開始使用
以下各節將說明如何在動作中設定推播通知。
建立觸發條件
您在本節中建立的意圖會觸發通知流程。如要建立 操作步驟如下:
- 前往 Actions 主控台,然後按一下頂端選單中的「Develop」(開發)。
- 在左側選單中按一下「Intents」(意圖) 展開該部分。
- 按一下清單底部的 ,然後輸入新意圖的名稱。
- 按下
Enter/Return
即可建立新意圖。 新增觸發通知流程的訓練詞組。例如:
Notify me
Send notifications
Subscribe to notifications
按一下 [儲存]。
轉換至系統意圖
如要設定轉換至 Notifications
系統場景,請按照下列步驟操作:
- 在左選單的「Scenes」下方,點選要新增通知訂閱流程的場景。
- 在情境的「User intent handle」(使用者意圖處理) 部分下方,按一下 +,新增意圖處理常式。
- 在「Intent」(意圖) 底下,選取您在上一節建立的意圖。
在「轉換」下方,選取「通知」系統場景。
按一下 [儲存]。
設定系統情境
如要設定 Notifications
系統場景,請按照下列步驟操作:
- 在左側選單中,選取「Scenes」下方的「通知」系統場景。
- 在「Configure intent」區段下方,按一下 [Select intent] (選取意圖)。
在「選取意圖」區段下方,選取要在使用者輕觸推播通知時比對的意圖。
在「自訂訂閱提示」部分,輸入要在使用者訂閱推播通知時顯示的提示。提示形式為「如果我傳送 $prompt 的推播通知,請問可以嗎?」
按一下 [儲存]。
設定加入
如要設定選擇接收推播通知,請按照下列步驟操作:
- 在「情境」下方,選取「通知」系統場景。
- 在「條件」下方選取「如果使用者說出「是」」。
- 啟用「Call your Webhook」,並提供事件處理常式名稱,例如
subscribe_to_notifications
。 啟用「傳送提示」並提供簡單的提示,讓使用者知道系統將傳送通知:
candidates: - first simple: variants: - speech: 'Great, I'll send you notifications.'
選取「轉換」下方的「結束對話」,即可在使用者訂閱通知後結束對話。
設定停用
如要設定選擇停用推播通知,請按照下列步驟操作:
- 在「條件」下方,選取「如果使用者說出「否」。
啟用「傳送提示」並提供簡單的提示,讓使用者瞭解系統不會傳送通知:
candidates: - first simple: variants: - speech: Okay, I won't send you notifications.
選取「轉換」下方的「結束對話」,在使用者選擇停止通知後結束對話。
設定 Webhook
如要設定 Webhook,請按照下列步驟操作:
在 Webhook 中,新增用來儲存
updatesUserId
的意圖處理常式:app.handle('subscribe_to_notifications', conv => { const intentName = '<name_of_intent_to_trigger>'; const notificationsSlot = conv.session.params['NotificationSlot_${intentName}']; if(notificationsSlot.permissionStatus == 'PERMISSION_GRANTED') { const updateUserId = notificationsSlot.additionalUserData.updateUserId; // Store the user ID and the notification's target intent for later use. // (Use a database, like Firestore, for best practice.) } });
傳送通知
推播通知會透過 Actions API 傳送給使用者。如要使用這個 API,您必須在 Google Cloud 專案中啟用 API,並設定並下載 JSON 服務帳戶金鑰。
接著,您可以使用 Google OAuth2 用戶端程式庫交換服務帳戶金鑰來取得存取權杖,並使用該權杖驗證對 Actions API 的要求。
取得服務帳戶金鑰
- 前往 Google API 控制台,然後從「選取專案」下拉式選單中選取您的專案。
- 按一下「啟用」,為專案啟用 Actions API。
- 前往 Google Cloud 控制台憑證頁面,然後從「選取專案」下拉式選單中選取您的專案。
- 按一下「Create credentials」(建立憑證) >服務帳戶。
- 輸入服務帳戶名稱,然後點選「建立」。
- 在「請選擇角色」下拉式選單中,依序選取「專案」>擁有者。
- 按一下「繼續」。
- 按一下「建立金鑰」,下載服務帳戶 JSON 檔案。
交換存取權杖的金鑰並傳送通知
如要透過 Actions API 傳送推播通知,您必須交換服務帳戶金鑰來取得存取權杖。為此,建議您使用 Google API 用戶端程式庫。在接下來的一系列程式碼片段中,我們使用 Google API Node.js 用戶端程式庫。
安裝 Google API 用戶端程式庫並要求:
npm install googleapis request --save
請使用以下程式碼,從服務帳戶金鑰取得存取權杖並傳送推播通知:
// Use the Actions API to send a Google Assistant push notification. let client = auth.fromJSON(require('./service-account.json')); client.scopes = ['https://www.googleapis.com/auth/actions.fulfillment.conversation']; let notification = { userNotification: { title: 'Example notification title', }, target: { userId: '<UPDATES_USER_ID>', intent: 'Notifications Intent', }, }; client.authorize((err, tokens) => { if (err) { throw new Error('Auth error: ${err}'); } request.post('https://actions.googleapis.com/v2/conversations:send', { 'auth': { 'bearer': tokens.access_token, }, 'json': true, 'body': {'customPushMessage': notification, 'isInSandbox': true}, }, (err, httpResponse, body) => { if (err) { throw new Error('API request error: ${err}'); } console.log('${httpResponse.statusCode}: ' + '${httpResponse.statusMessage}'); console.log(JSON.stringify(body)); }); });