Akcja może przekazywać użytkownikom powiadomienia zawsze, gdy jest to konieczne, np. wysyłając przypomnienie, gdy zbliża się termin wykonania zadania.
Z tego przewodnika dowiesz się, jak skonfigurować powiadomienia push dotyczące akcji.
Obsługiwane platformy
Powiadomienia push są dostępne na urządzeniach z Androidem i iOS (aby je otrzymywać, na urządzeniach z iOS musi być zainstalowana aplikacja Asystent). Obecnie nie obsługujemy ich na głośnikach aktywowanych głosem, inteligentnych ekranach ani innych platformach.
Wymagania wstępne
Projekt musi zawierać co najmniej 1 intencję globalną, która jest wywoływana, gdy użytkownik kliknie powiadomienie push otrzymane od Asystenta.
Rozpocznij
W sekcjach poniżej opisujemy, jak skonfigurować powiadomienia push w akcji.
Utwórz intencję do aktywowania
Intencja utworzona w tej sekcji aktywuje przepływ powiadomień. Aby utworzyć wykonaj te czynności:
- Otwórz konsolę Actions i w menu u góry kliknij Programowanie.
- W menu po lewej stronie kliknij Intents (Intencje), aby rozwinąć sekcję.
- Kliknij na dole listy i wpisz nazwę nowej intencji.
- Naciśnij
Enter/Return
, aby utworzyć nową intencję. Dodaj wyrażenia na potrzeby nauki, które będą uruchamiać przepływ powiadomień. Przykłady:
Notify me
Send notifications
Subscribe to notifications
Kliknij Zapisz.
Przejdź na intencję systemową
Aby skonfigurować przejście na scenę systemową Notifications
, wykonaj te czynności:
- W sekcji Sceny w menu po lewej stronie kliknij scenę, do której chcesz dodać subskrypcję powiadomień.
- W sekcji Obsługa intencji użytkownika kliknij +, aby dodać nowy moduł obsługi intencji.
- W sekcji Intent (Intencja) wybierz intencję utworzoną w poprzedniej sekcji.
W sekcji Przejście wybierz scenę systemową Powiadomienia.
Kliknij Zapisz.
Skonfiguruj scenę systemową
Aby skonfigurować scenę systemową Notifications
, wykonaj te czynności:
- W sekcji Sceny w menu po lewej stronie wybierz nową scenę systemową Powiadomienia.
- W sekcji Skonfiguruj intencję kliknij Wybierz intencję.
W sekcji Wybierz zamiar wybierz intencję, która ma być dopasowywana, gdy użytkownik kliknie powiadomienie push.
W polu Dostosuj prośbę o wyrażenie zgody wpisz prompt, który będzie wyświetlany, gdy użytkownicy otrzymają prośbę o zasubskrybowanie powiadomień push. Może on mieć postać „Czy mogę wysyłać powiadomienia push na temat $prompt”.
Kliknij Zapisz.
Skonfiguruj akceptację
Aby skonfigurować włączanie powiadomień push, wykonaj te czynności:
- W sekcji Sceny wybierz scenę systemową Powiadomienia.
- W sekcji Warunki wybierz Jeśli użytkownik powie „tak”.
- Włącz opcję Wywołaj webhooka i podaj nazwę modułu obsługi zdarzeń, np.
subscribe_to_notifications
. Włącz Wysyłaj potwierdzenia i w prosty sposób daj użytkownikowi znać, że będą otrzymywać powiadomienia:
candidates: - first simple: variants: - speech: 'Great, I'll send you notifications.'
W sekcji Przenoszenie wybierz Zakończ rozmowę, aby zakończyć rozmowę, gdy użytkownik zasubskrybuje powiadomienia.
Skonfiguruj rezygnację
Aby skonfigurować rezygnację z powiadomień push:
- W sekcji Warunki wybierz Jeśli użytkownik mówi „nie”.
Włącz Wysyłaj potwierdzenia i w prosty sposób zaproponuj użytkownikowi informację, że nie będzie otrzymywać powiadomień:
candidates: - first simple: variants: - speech: Okay, I won't send you notifications.
W sekcji Przenoszenie wybierz Zakończ rozmowę, aby zakończyć rozmowę, gdy użytkownik zrezygnuje z powiadomień.
Skonfiguruj webhooka
Aby skonfigurować webhooka, wykonaj te czynności:
Do webhooka dodaj moduł obsługi intencji do przechowywania elementu
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.) } });
Wyślij powiadomienia
Powiadomienia push są wysyłane do użytkowników za pomocą interfejsu Actions API. Aby używać tego interfejsu API, musisz go aktywować w swoim projekcie Google Cloud oraz skonfigurować i pobrać klucz konta usługi JSON.
Następnie za pomocą biblioteki klienta Google OAuth2 możesz wymienić klucz konta usługi na token dostępu i używać go do uwierzytelniania żądań do interfejsu Actions API.
Uzyskiwanie klucza konta usługi
- Otwórz konsolę interfejsów API Google i wybierz swój projekt z menu Wybierz projekt.
- Kliknij Włącz, aby włączyć w projekcie interfejs Actions API.
- Otwórz stronę danych logowania do konsoli Google Cloud i wybierz swój projekt z menu Wybierz projekt.
- Kliknij Utwórz dane logowania > Konto usługi.
- Wpisz nazwę konta usługi i kliknij Utwórz.
- W menu Wybierz rolę kliknij Projekt > Właściciel.
- Kliknij Dalej.
- Kliknij Utwórz klucz, aby pobrać plik JSON konta usługi.
Wymień klucz na token dostępu i wyślij powiadomienie
Aby wysyłać powiadomienia push za pomocą interfejsu Actions API, musisz wymienić klucz konta usługi na token dostępu. Zalecamy użycie do tego biblioteki klienta interfejsów API Google. W serii poniższych fragmentów kodu używamy biblioteki klienta Node.js interfejsu API Google.
Zainstaluj bibliotekę klienta interfejsów API Google i poproś o wykonanie tych czynności:
npm install googleapis request --save
Aby uzyskać token dostępu z klucza konta usługi i wysłać powiadomienie push, użyj tego kodu:
// 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)); }); });