Derleme istek karşılama (Dialogflow)

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:

  1. ActionsSdkApp nesnesini başlatın.
  2. Sipariş karşılama mantığınızda istekleri işlemek için işlevler oluşturun.
ziyaret edin.

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:

İşlemler SDK'sı (Node.js)
'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);
Actions SDK (Java)
ResponseBuilder responseBuilder = getResponseBuilder(request).add("Hi!");
return responseBuilder.build();
JSON
{
  "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:

  1. Kullanıcı girişini işlemek için gerekli mantığı uygulayın.

  2. 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:

İşlemler SDK'sı (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
Actions SDK (Java)
ResponseBuilder responseBuilder =
    getResponseBuilder(request).add("Hi! Say something, and I'll repeat it.");
return responseBuilder.build();
JSON
{
  "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.

İşlemler SDK'sı (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
Actions SDK (Java)
@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.

  1. 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:

İşlemler SDK'sı (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
Actions SDK (Java)
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.

İşlemler SDK'sı (Node.js)
conv.data = {something: 10};
let value = conv.data.something;
Actions SDK (Java)
ResponseBuilder rb = getResponseBuilder(request);
rb.getConversationData().put("something", 10);
Object value = rb.getConversationData().get("something");