انجام ساخت (Dialogflow)

Fulfillment رابط مکالمه ای را برای پروژه Actions شما برای به دست آوردن ورودی کاربر و منطق پردازش ورودی و در نهایت انجام Action تعریف می کند.

نمای کلی

انجام شما درخواست‌هایی را از دستیار دریافت می‌کند، درخواست را پردازش می‌کند و پاسخ می‌دهد. این فرآیند درخواست و پاسخ رفت و برگشت، مکالمه را به جلو می برد تا زمانی که در نهایت درخواست اولیه کاربر را برآورده کنید.

مراحل زیر توضیح می‌دهد که چگونه می‌توانید با استفاده از Actions SDK با Node.js یا کتابخانه سرویس گیرنده Java/Kotlin، اجرا ایجاد کنید:

  1. شی ActionsSdkApp را راه اندازی کنید .
  2. توابعی برای رسیدگی به درخواست ها در منطق تحقق خود ایجاد کنید .

ساخت دیالوگ ها

شی ActionsSdkApp راه اندازی کنید

کد زیر ActionsSdkApp را نمونه‌سازی می‌کند و مقداری Boilerplate Node.js را برای توابع Google Cloud انجام می‌دهد:

Actions SDK (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 (جاوا)
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\":{}}"
}

ایجاد توابع برای رسیدگی به درخواست ها

وقتی کاربران عبارتی را بیان می کنند، درخواستی از دستیار Google دریافت می کنید. برای تحقق اهدافی که در درخواست‌ها می‌آیند، توابعی ایجاد کنید که قصد راه‌اندازی را مدیریت می‌کنند.

برای رسیدگی به درخواست ها:

  1. هر منطق مورد نیاز برای پردازش ورودی کاربر را انجام دهید.

  2. تابع conv.ask() را که پاسخی را که می خواهید به عنوان آرگومان نشان دهید ارسال می کند، فراخوانی کنید.

کد زیر نحوه ساخت یک پاسخ ساده را نشان می دهد:

Actions SDK (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
Actions SDK (جاوا)
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\":{}}"
}

رسیدگی به مقاصد

هنگامی که تمام توابع خود را برای مدیریت intent های راه اندازی شده در اختیار دارید، از app.intent برای اختصاص کنترل کننده ها به intent ها استفاده کنید.

Actions SDK (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
Actions SDK (جاوا)
@ForIntent("actions.intent.MAIN")
public ActionResponse main(ActionRequest request) {
  // handle main intent
  // ...
}

@ForIntent("actions.intent.TEXT")
public ActionResponse text(ActionRequest request) {
  // handle text intent
  // ...
}

پایان دادن به مکالمات

هنگامی که دیگر هیچ ورودی کاربر را نمی خواهید و می خواهید مکالمه را پایان دهید، تابع conv.close() را فراخوانی کنید. این عملکرد به دستیار گوگل می گوید که متن را به کاربر بازگو کند و با بستن میکروفون مکالمه را پایان دهد.

رسیدگی به قصد فراخوانی اصلی

وقتی کاربران برنامه app.intent.action.MAIN فعال می کنند، معمولاً نیازی به پردازش ورودی کاربر ندارید. اگر بسته اکشن شما شامل اکشن های زیادی است و موارد استفاده زیادی را پوشش می دهد، بهتر است با گفتن چند کار به کاربر جهت دهی کنید.

  1. تابع conv.ask() را که پاسخ شما را به عنوان آرگومان ارسال می کند، فراخوانی کنید. Google Assistant پاسخ شما را به کاربر می‌گوید و سپس منتظر می‌ماند تا کاربر یکی از اهدافی را که شما مشخص کرده‌اید فعال کند.

قطعه زیر نشان می دهد که چگونه می توان با یک هدف خوشامدگویی ساده برخورد کرد:

Actions SDK (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
Actions SDK (جاوا)
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) {
  return rb.add(input).build();
}

حالت مکالمه

اگر از مکالمه HTTP/JSON webhook API استفاده می‌کنید، می‌توانید وضعیت مکالمه‌های خود را با یک شی قالب‌بندی شده JSON ( conversationToken ) که بین شما و دستیار Google ارسال می‌شود، حفظ کنید. اگر از کتابخانه مشتری Node.js استفاده می کنید، می توانید مستقیماً در قسمت conv.data بنویسید و از آن بخوانید. این فیلد به طور خودکار بین درخواست ها و پاسخ ها ارسال می شود.

Actions SDK (Node.js)
conv.data = {something: 10};
let value = conv.data.something;
Actions SDK (جاوا)
ResponseBuilder rb = getResponseBuilder(request);
rb.getConversationData().put("something", 10);
Object value = rb.getConversationData().get("something");