تنفيذ النموذج (Dialogflow)

يحدِّد التنفيذ واجهة المحادثة التي يجب أن يحصل عليها مشروع "المهام مع مساعد Google" البيانات التي أدخلها المستخدم والمنطق لمعالجة المدخلات وتنفيذ الإجراء في النهاية.

نظرة عامة

يتلقّى تطبيقك طلبات من "مساعد Google" ويعالج الطلب ويستجيب. تؤدي عملية الطلب والاستجابة هذه المتبادلة إلى إعادة توجيه المحادثة إلى أن تفي في النهاية بطلب المستخدم الأولي.

توضّح الخطوات التالية كيفية تحقيق النتائج المرجوة باستخدام قسم "المهام مع مساعد Google". حزمة تطوير البرامج (SDK) تتضمّن Node.js أو مكتبة برامج Java/Kotlin:

  1. إعداد كائن ActionSdkApp.
  2. إنشاء دوال للتعامل مع الطلبات في منطق التنفيذ:

إنشاء مربّعات الحوار

إعداد كائن ActionsSdkApp

ينشئ التعليمة البرمجية التالية مثيلاً ActionsSdkApp وهل يتم إعداد بعض عناصر Node.js النموذجية لدوال Google Cloud:

حزمة تطوير البرامج للإجراءات (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);
حزمة تطوير البرامج (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\":{}}"
}

إنشاء دوال لمعالجة الطلبات

عندما يقول المستخدمون عبارة، ستتلقّى طلبًا من "مساعد Google". إلى تحقق المقاصد التي تأتي في الطلبات، وإنشاء الدوال التي تعالج نية العميل.

لمعالجة الطلبات:

  1. تنفيذ أي منطق مطلوب لمعالجة إدخالات المستخدم.

  2. يمكنك استدعاء الدالة conv.ask() لتمرير الرد الذي تريده كوسيطة.

توضح التعليمة البرمجية التالية كيفية إنشاء استجابة بسيطة:

حزمة تطوير البرامج للإجراءات (Node.js)
conv.ask(`Hi! Say something, and I'll repeat it.`);
حزمة تطوير البرامج (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\":{}}"
}

النية في التعامل مع البيانات

بعد أن يصبح لديك جميع الدوال للتعامل مع الأهداف والنتائج، استخدِم app.intent من أجل تعيين معالِجات الأهداف.

حزمة تطوير البرامج للإجراءات (Node.js)
app.intent('actions.intent.TEXT', (conv) => {
  // handle text intent.
});
app.intent('actions.intent.MAIN', (conv) => {
  // handle main intent.
});
حزمة تطوير البرامج (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
  // ...
}

إنهاء المحادثات

إذا لم تعد تريد أي بيانات يُدخلها المستخدم في المقابل وتريد إنهاء المحادثة، لاستدعاء الدالة conv.close(). تطلب هذه الوظيفة من "مساعد Google" إعادة قول النص إلى المستخدم وإنهاء المحادثة من خلال إغلاق الميكروفون.

التعامل مع الغرض الرئيسي من الاستدعاء

وعندما يشغّل المستخدمون نية app.intent.action.MAIN، لا يتم تنفيذها عادةً بحاجة إلى إجراء أي معالجة لإدخالات المستخدم. إذا كانت حزمة الإجراءات الخاصة بك تحتوي على العديد الإجراءات ويتناول العديد من حالات الاستخدام، فمن الجيد توجيه المستخدم من خلال إخبار ببعض الأشياء التي يمكنهم القيام بها.

  1. يمكنك استدعاء الدالة conv.ask() لتمرير ردك كوسيطة. يجيب "مساعد Google" ردّك على المستخدم، ثم ينتظر المستخدم تشغيل أحد الأهداف التي حدّدتها.

يوضح المقتطف التالي كيفية التعامل مع نيّة ترحيب بسيطة:

حزمة تطوير البرامج للإجراءات (Node.js)
// handle the initialTrigger
function handleMainIntent(conv, input) {
  conv.ask(input);
}
حزمة تطوير البرامج (SDK) للإجراءات (Java)
private ActionResponse handleMainIntent(ResponseBuilder rb, String input) {
  return rb.add(input).build();
}

حالة المحادثة

إذا كنت تستخدم واجهة برمجة تطبيقات الردّ التلقائي على الويب للمحادثة HTTP/JSON، يمكنك الاحتفاظ حالة محادثاتك باستخدام كائن بتنسيق JSON (conversationToken) يتم إرسالها بينك وبين "مساعد Google" من حين لآخر. إذا كنت باستخدام مكتبة برامج Node.js، يمكنك يمكنه الكتابة إلى حقل conv.data والقراءة منه مباشرةً. هذا الحقل يتم تمريرها مرارًا وتكرارًا بين الطلبات والردود.

حزمة تطوير البرامج للإجراءات (Node.js)
conv.data = {something: 10};
let value = conv.data.something;
حزمة تطوير البرامج (SDK) للإجراءات (Java)
ResponseBuilder rb = getResponseBuilder(request);
rb.getConversationData().put("something", 10);
Object value = rb.getConversationData().get("something");