إنشاء المهام الحوارية (Dialogflow)

أنت تحدّد المحادثة المتعلقة بالإجراء من خلال التنفيذ. وهو رمز برمجي تمّ نشره كردّ تلقائي على الويب يحتوي على رمز الاستجابة السريعة لوكيل Dialogflow منطق المحادثة. يحدد التنفيذ الإجراء المطلوب تنفيذه عندما يتخذ المستخدمون الطلبات.

بالنسبة إلى لوحة الرسم التفاعلية، تعرض طريقة التنفيذ أيضًا معلومات عن تطبيق الويب إلى "مساعد Google". يمكنك استخدام HtmlResponse لتطلب من "مساعد Google" تنفيذ ما يلي: لعرض تطبيق الويب الخاص بك. يمكن أيضًا لـ HtmlResponse تقديم تعديلات على data، والتي الذي يستخدمه المنطق المخصص لتطبيق الويب لإجراء تغييرات على تطبيق الويب.

تتناول هذه الصفحة كيفية استخدام "HtmlResponse" في طريقة التنفيذ والمعلومات العامة. إرشادات حول استخدام هذا النوع من الردود.

ردود HTML

لإرسال معلومات عن تطبيق الويب إلى "مساعد Google"، يجب تضمين HtmlResponse في تحقيق هدفك. يمكن أن تحتوي HtmlResponse على عنوان URL لتطبيق الويب والبيانات التي تعمل على تحديث تطبيق الويب. عند الإرسال HtmlResponse، سيحدث ما يلي:

  1. يؤدي تنفيذ الغرض المطابق إلى إرسال HtmlResponse إلى الجهاز.
  2. يستخدم الجهاز عنوان URL المتوفّر في HtmlResponse لتحميل تطبيق الويب.
  3. يتم تمرير حمولة JSON data إلى تطبيق الويب في معاودة الاتصال.
  4. يرسل "الإجراء الحواري" عنصر "HtmlResponse" جديدًا لإرسال التعديلات أو تحميل حالات جديدة.

نموذج توصيل الطلب

المقتطف التالي من العينة يوضّح رمز التنفيذ طريقة تنفيذ HtmlResponse:

const functions = require('firebase-functions');
const {dialogflow, HtmlResponse} = require('actions-on-google');

const app = dialogflow({debug: true});
app.intent('welcome', (conv) => {
  conv.ask('Welcome! Do you want me to change color or pause spinning?');
  conv.ask(new HtmlResponse({
    url: 'https://your-web-app.com',
  }));
});

// map of human speakable colors to color values
const tints = {
  red: 0xFF0000,
  green: 0x00FF00,
  blue: 0x0000FF,
};
app.intent('color', (conv, {color}) => {
  if (color in tints) {
    conv.ask(`Ok, I changed my color to ${color}. What else?`);
    conv.ask(new HtmlResponse({
      data: {
        tint: tints[color],
      },
    }));
    return;
  }
  conv.ask(`Sorry, I don't know that color. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      query: conv.query,
    },
  }));
});
app.intent('start', (conv) => {
  conv.ask(`Ok, I'm spinning. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      spin: true,
    },
  }));
});

app.intent('pause', (conv) => {
  conv.ask(`Ok, I paused spinning. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      spin: false,
    },
  }));
});

app.intent('restart game', (conv) => {
  conv.ask(new HtmlResponse({
    data: {
      command: 'RESTART_GAME',
    },
  }));
});

exports.conversation = functions.https.onRequest(app);

هدف واحد (welcome)

في المقتطف أعلاه، يُرسِل تنفيذ الغرض welcome HtmlResponse باستخدام عنوان URL لتطبيق الويب. يتلقّى "مساعد Google" هذه الإشعارات وتحميل HTML وJavaScript على هذا العنوان.

...
app.intent('welcome', (conv) => {
  conv.ask('Welcome! Do you want me to change color or pause spinning?');
  conv.ask(new HtmlResponse({
    url: 'https://your-web-app.com',
  }));
});
...

أغراض أخرى

يؤدي HtmlResponse في التنفيذ للعناصر الأخرى إلى تمرير قيم متغيّر. (tint أو spin في النموذج) إلى تطبيق الويب. المنطق المخصص للويب app هذه القيم لتحديث العناصر (الرسوم المتحركة واللون وما إلى ذلك):

...
app.intent('start', (conv) => {
  conv.ask(`Ok, I'm spinning. What else?`);
  conv.ask(new HtmlResponse({
    data: {
      spin: true,
    },
  }));
});
...

الإرشادات والقيود

عليك مراعاة الإرشادات والقيود التالية المفروضة على استخدام HtmlResponse. عند تحديد مدى تلبية الطلبات:

  • يجب أن يتضمّن كل هدف في تنفيذ طلبك سمة HtmlResponse. إذا كانت النية لا يتضمّن HtmlResponse، سيتم إغلاق تطبيق الويب.
  • ما عليك سوى تضمين عنوان URL لتطبيق الويب في intent الأولى التي ترسل إليها. المستخدم (عادةً ما يكون هذا هو هدف Welcome).
  • يجب أن يكون حجم "HtmlResponse" 50 كيلوبايت أو أصغر.