Sipariş karşılama, Actions projeniz için kullanıcı girişi elde etmek amacıyla kullanılan sohbet arayüzünü ve girişi işlemek ve nihayetinde İşlemi gerçekleştirmek için kullanılan mantığı tanımlar.
Genel bakış
İstek yerine getirmeniz Asistan'dan istek alır, isteği işler ve yanıt verir. Bu karşılıklı istek ve yanıt süreci, siz ilk kullanıcı isteğini yerine getirene kadar sohbeti ilerletir.
Aşağıdaki adımlarda, Actions SDK'sını Node.js veya Java/Kotlin istemci kitaplığı ile kullanarak nasıl istek karşılama oluşturabileceğiniz açıklanmaktadır:
- ActionsSdkApp nesnesini başlatın.
- İstek karşılama mantığınızda istekleri işleyecek işlevler oluşturun.
Oluşturma iletişim kutuları
ActionsSdkApp
nesnesini başlatın
Aşağıdaki kod, ActionsSdkApp
örneğini belirtir ve Google Cloud Functions için bazı ortak Node.js kurulumu 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. İsteklerdeki amaçları yerine getirmek için tetiklenen amacı işleyen işlevler oluşturun.
İstekleri işlemek için:
Kullanıcı girişini işlemek için gereken tüm mantığı yürütün.
Bağımsız değişken olarak göstermek istediğiniz yanıtı ileten
conv.ask()
işlevini çağırın.
Aşağıdaki kod, basit bir yanıtın nasıl oluşturulacağını gösterir:
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 niyetleri işleyecek tüm işlevlerinizi topladıktan sonra amaçlara işleyici atamak için app.intent
özelliğini kullanı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üşmeler sonlandırılıyor
Artık karşılığında herhangi bir kullanıcı girişi olmasını istemiyorsanız ve görüşmeyi sonlandırmak istiyorsanız conv.close()
işlevini çağırın.
Bu işlev, Google Asistan'a metni kullanıcıya söylemesini ve mikrofonu kapatarak konuşmayı 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şleme yapmanız gerekmez. İşlem paketiniz çok sayıda işlem içeriyor ve birçok kullanım alanını kapsıyorsa yapabilecekleri birkaç şeyi söyleyerek kullanıcıyı yönlendirmek iyi bir fikirdir.
- Yanıtınızı bağımsız değişken olarak ileten
conv.ask()
işlevini çağırın. Google Asistan, yanıtınızı kullanıcıya söyler ve ardından kullanıcının belirlediğ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 görüşmelerinizin durumunu, sizinle Google Asistan arasında karşılıklı olarak iletilen JSON biçimli bir nesne (conversationToken
) ile koruyabilirsiniz. Node.js istemci kitaplığını kullanıyorsanız doğrudan conv.data
alanına yazabilir ve bu alandan okuma yapabilirsiniz. Bu alan, istekler ve yanıtlar arasında otomatik olarak karşılıklı aktarılır.
conv.data = {something: 10}; let value = conv.data.something;
ResponseBuilder rb = getResponseBuilder(request); rb.getConversationData().put("something", 10); Object value = rb.getConversationData().get("something");