Sipariş karşılama, Actions projenizin edineceği sohbet arayüzünü tanımlar girişi işleme ve sonunda Eylemi yerine getirme mantığına bağlıdır.
Genel Bakış
Sipariş karşılama işleminiz Asistan'dan istek alır, isteği işler ve yanıt veriyor. Bu karşılıklı istek ve yanıt süreci, ilk kullanıcı isteğini yerine getirene kadar ileti dizisinden devam eder.
Aşağıdaki adımlarda, İşlemler özelliğini kullanarak istek karşılama Node.js veya Java/Kotlin istemci kitaplığına sahip SDK:
- ActionsSdkApp nesnesini başlatın.
- Sipariş karşılama mantığınızda istekleri işlemek için işlevler oluşturun.
Derleme iletişim kutuları
ActionsSdkApp
nesnesini başlatın
Aşağıdaki kod örneklenir
ActionsSdkApp
ve Google Cloud Functions için bazı temel Node.js kurulumları yapar:
'use strict'; const {actionssdk} = require('actions-on-google'); const functions = require('firebase-functions'); const app = actionssdk({debug: true}); app.intent('actions.intent.MAIN', (conv) => { conv.ask('Hi!'); }); // More intent handling if needed exports.myFunction = functions.https.onRequest(app);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!"); return responseBuilder.build();
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Hi!" } } ] } }, "possibleIntents": [ { "intent": "actions.intent.TEXT" } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
İstekleri işlemek için işlevler oluşturma
Kullanıcılar bir ifade söylediğinde Google Asistan'dan bir istek alırsınız. Alıcı: amaçları yerine getirmek, Tetiklenen intent
İstekleri işlemek için:
Kullanıcı girişini işlemek için gerekli mantığı uygulayın.
Göstermek istediğiniz yanıtı ileten
conv.ask()
işlevini çağırın kullanabilirsiniz.
Aşağıdaki kodda basit bir yanıtın nasıl oluşturulacağı gösterilmektedir:
conv.ask(`Hi! Say something, and I'll repeat it.`);
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi! Say something, and I'll repeat it."); return responseBuilder.build();
{ "expectUserResponse": true, "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Hi! Say something, and I'll repeat it." } } ] } }, "possibleIntents": [ { "intent": "actions.intent.TEXT" } ] } ], "conversationToken": "{\"data\":{}}", "userStorage": "{\"data\":{}}" }
Amaçları işleme
Tetiklenen amaçları işleyecek tüm işlevleriniz olduğunda app.intent
işlevini kullanarak
amaçlara işleyici atayın.
app.intent('actions.intent.TEXT', (conv) => { // handle text intent. }); app.intent('actions.intent.MAIN', (conv) => { // handle main intent. });
@ForIntent("actions.intent.MAIN") public ActionResponse main(ActionRequest request) { // handle main intent // ... } @ForIntent("actions.intent.TEXT") public ActionResponse text(ActionRequest request) { // handle text intent // ... }
Görüşmeleri sonlandırma
Karşılığında kullanıcı girişi olmasını istemiyor ve görüşmeyi sonlandırdığınızda
conv.close()
işlevini çağırın.
Bu işlev, Google Asistan'a metni kullanıcıya seslendirmesini ve mikrofonu kapatarak görüşmeyi sonlandırmasını söyler.
Ana çağrı amacını işleme
Kullanıcılar app.intent.action.MAIN
amacını tetiklediğinde normalde
kullanıcı girişi işlemesi
gerektiğini unutmayın. İşlem paketinizde
birçok kullanım durumunu kapsadığından
başka şeyler yapabileceklerini
düşünüyorum.
- Yanıtınızı bağımsız değişken olarak ileten
conv.ask()
işlevini çağırın. Google Asistan, kullanıcıya yanıtınızı söyler, ardından kullanıcının belirttiğiniz amaçlardan birini tetiklemesini bekler.
Aşağıdaki snippet'te, basit bir karşılama niyetinin nasıl ele alınacağı gösterilmektedir:
// handle the initialTrigger function handleMainIntent(conv, input) { conv.ask(input); }
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) { return rb.add(input).build(); }
Görüşme durumu
Görüşme HTTP/JSON webhook API'sini kullanıyorsanız
JSON biçimli bir nesneyle (conversationToken
) görüşmelerinizin durumu
Google Asistan'la Google Asistan arasında aktarılan içeriktir. Şu durumda:
Node.js istemci kitaplığını kullanarak
doğrudan conv.data
alanına yazabilir ve okuyabilir. Bu alan
istekler ve yanıtlar arasında otomatik olarak ileri geri iletilir.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");