يمكنك تحديد المحادثة للإجراء الخاص بك باستخدام تنفيذ، وهو الرمز الذي يتم نشره كرد تلقائي على الويب يحتوي على منطق المحادثة لوكيل Dialogflow. يُخبر توصيل الطلبات الإجراء بما يجب فعله عندما يقدّم المستخدمون طلبات.
بالنسبة إلى "لوحة الرسم التفاعلية"، يساهم طلبك في نقل معلومات حول تطبيق الويب إلى "مساعد Google". يمكنك استخدام HtmlResponse
لتطلب من "مساعد Google"
عرض تطبيق الويب. ويمكن أيضًا أن توفّر HtmlResponse
أيضًا تحديثات لـ data
، الذي
يستخدمه المنطق المخصّص لتطبيق الويب لديك لإجراء تغييرات على تطبيق الويب.
تتناول هذه الصفحة كيفية استخدام السمة HtmlResponse
في عملية التنفيذ والإرشادات
العامة لاستخدام هذا النوع من الردود.
استجابات HTML
لإرسال معلومات عن تطبيق الويب إلى "مساعد Google"، يجب تضمين HtmlResponse
في تنفيذ الغرض المحدد. يمكن أن يحتوي HtmlResponse
على عنوان URL لتطبيق الويب وعلى البيانات التي تعمل على تعديل تطبيق الويب. عند إرسال HtmlResponse
، تحدث الخطوات التالية:
- يؤدي تحقيق الغرض المطابق إلى إرسال
HtmlResponse
إلى الجهاز. - يستخدم الجهاز عنوان URL الوارد في
HtmlResponse
لتحميل تطبيق الويب. - يتم تمرير حمولة بيانات JSON بتنسيق
data
إلى تطبيق الويب في معاودة الاتصال. يرسل "الإجراء الحواري"
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.intent('start', (conv) => {
conv.ask(`Ok, I'm spinning. What else?`);
conv.ask(new HtmlResponse({
data: {
spin: true,
},
}));
});
...
الإرشادات والقيود
يُرجى مراعاة الإرشادات والقيود التالية المتعلّقة بسياسة HtmlResponse
عند إنشاء عملية التنفيذ:
- يجب أن يتضمّن كل هدف في تنفيذ الإجراء
HtmlResponse
. إذا كان الغرض لا يتضمنHtmlResponse
، سيتم إغلاق تطبيق الويب. - ما عليك سوى تضمين عنوان URL لتطبيق الويب في الغرض الأول الذي ترسله إلى المستخدم (وهذا هو عادةً هدف
Welcome
). - يجب أن يكون حجم
HtmlResponse
50 كيلوبايت أو أصغر.