يحدِّد التنفيذ واجهة المحادثة التي يجب أن يحصل عليها الإجراء الخاص بك. البيانات التي أدخلها المستخدم والمنطق لمعالجة البيانات التي تم إدخالها وتنفيذها في النهاية الإجراء.
تحديد المحادثة
الآن بعد أن انتهيت من تحديد الإجراءات، يمكنك إنشاء المحادثة المقابلة لتلك الإجراءات. يمكنك إجراء ذلك عن طريق إنشاء عناصر Dialogflow تحدّد القواعد النحوية أو ما يحتاجه المستخدمون على تنفيذ ما يلي: تنفيذ القصد وتنفيذه الغرض عند تشغيله.
يمكنك إنشاء أي عدد تريده من الأهداف لتحديد أهداف محادثتك بالكامل النحوية.
إنشاء الأهداف
النقر على علامة + بجانب عنصر القائمة Intents في واجهة Dialogflow التنقل الأيمن. يظهر محرر الأهداف حيث يمكنك إدخال المعلومات التالية:
- اسم الغرض هو اسم الغرض الذي يتم عرضه في بيئة التطوير المتكاملة.
- تتيح لك السياقات تحديد نطاق تنفيذ الغرض في حالات معيّنة. اقرأ مستندات Dialogflow حول السياقات لمزيد من المعلومات.
- تؤدي الأحداث إلى إثارة الأهداف بدون أن يحتاج المستخدمون إلى قول أي شيء. وَاحِدْ
الحدث كمثال هو الحدث
GOOGLE_ASSISTANT_WELCOME
، الذي يسمح بـ لاستدعاء الإجراء مع "مساعد Google". يُستخدم هذا الحدث في الإجراء الإجراء التلقائي. يمكنك الرجوع إلى مستنداتنا للحصول على مزيد من المعلومات حول عناصر المساعدة المضمّنة. - تحدّد العبارات التدريبية ما يجب أن يقوله المستخدمون (القواعد النحوية) لعرض المحتوى النية. اكتب بعض العبارات هنا (من 5 إلى 10) بما يمكن للمستخدمين قوله لعرض المحتوى النية. تتعامل منصة Dialogflow تلقائيًا مع الاختلافات الطبيعية في المثال العبارات التي تقدمها.
الإجراء والمعلَمات تحدِّد البيانات التي يجب تمريرها إلى التنفيذ، إذا تم تفعيل التنفيذ لهذا الغرض. يتضمن ذلك البيانات التي تم تحليلها من البيانات التي أدخلها المستخدم والاسم الذي يمكنك استخدامه في عملية التنفيذ لرصد تم تشغيل intent. ستستخدم هذا الاسم لاحقًا لتعيين غرضك إلى ومنطق التنفيذ المقابل. الاطّلاع على الإجراءات والمَعلمات في مستندات Dialogflow للاطّلاع على مزيد من المعلومات حول تحديد "المهام".
الردود هي "أداة إنشاء الردود" في Dialogflow، حيث يمكنك تحديد على هذا الطلب مباشرةً من Dialogflow، دون استدعاء التنفيذ. هذه الميزة مفيدة للردود الثابتة التي لا تتطلب التنفيذ. يمكنك استخدام هذا العنوان لتقديم رسائل ترحيب أو وداعًا بسيطة. مع ذلك، ستستخدم على الأرجح خدمة "التنفيذ" للرد على مستخدمي موقعك الإلكتروني الأهداف.
تحدّد السمة Fulfillment (التعبئة) ما إذا كنت تريد طلب معلومات توفّر المركبة أم لا. عند ظهور الغرض من الغرض ستُفعِّل هذه الميزة على الأرجح لمعظم الأهداف في وكيل Dialogflow. لرؤية هذا العنصر في intent، يجب أن تكون خدمة التنفيذ مفعّلة للوكيل في قائمة توصيل الطلبات.
إنشاء الردود في Dialogflow
بالنسبة إلى بعض الأهداف، قد لا تحتاج إلى إرسال ردّ عند إكمال عملية التنفيذ. في هذه الحالات، يمكنك استخدام "أداة إنشاء الردود" في Dialogflow لإنشاء الردود.
في قسم الردود، قدِّم الرد النصي الذي تريد الرجوع إليه المستخدمين. الردود النصية التلقائية هي ردود نصية بسيطة يمكن استخدامها في تحويل النص إلى كلام عمليات دمج متعدّدة في Dialogflow. يتم وصف ردود "مساعد Google" في صفحة الردود.
إنشاء الردود على توصيل الطلبات
تتم استضافة رمز التنفيذ في منطق تنفيذ الردّ التلقائي على الويب لأحد الإجراءات.
فمثلاً، في Silly Name Maker sample،
يمكن العثور على هذا المنطق في index.js
لدالة السحابة الإلكترونية لبرنامج Firebase.
عند تنفيذ إجراء يستخدم عملية التنفيذ، ستتلقّى طلبًا من Dialogflow يحتوي على معلومات عن الغرض. يمكنك بعد ذلك الرد على الطلب من خلال معالجة الغرض وعرض الرد. هذا الطلب يتم تحديد الاستجابة من خلال الردّ التلقائي على الويب من Dialogflow.
ننصح بشدّة باستخدام مكتبة برامج Node.js لمعالجة الطلبات. وإرجاع الردود. في ما يلي شرح للعملية العامة لاستخدام مكتبة البرامج:
- إعداد عنصر Dialogflow يتعامل هذا الكائن تلقائيًا مع الاستماع إلى الطلبات وتحليلها بحيث بمعالجتها أثناء تنفيذك لها.
- إنشاء دوال للتعامل مع الطلبات: تعالج هذه الدوال إدخالات المستخدم والمكونات الأخرى للقصد لإنشاء الاستجابة للعودة إلى Dialogflow.
إعداد كائن Dialogflow
ينشئ الرمز التالي مثيلاً لـ Dialogflow
وينشئ بعض النصوص النموذجية
إعداد Node.js لدوال Google Cloud:
'use strict'; const {dialogflow} = require('actions-on-google'); const functions = require('firebase-functions'); const app = dialogflow({debug: true}); app.intent('Default Welcome Intent', (conv) => { // Do things }); exports.yourAction = functions.https.onRequest(app);
public class DfFulfillment extends DialogflowApp { private static final Logger LOGGER = LoggerFactory.getLogger(DfFulfillment.class); @ForIntent("Default Welcome Intent") public ActionResponse welcome(ActionRequest request) { // Do things // ... }
إنشاء دوال لمعالجة الطلبات
عندما يقول المستخدمون عبارة تؤدي إلى هدف، ستتلقى طلبًا من Dialogflow الذي تتعامل معه مع دالة في عملية التنفيذ. في هذه الدورة، ستقوم بشكل عام بالأشياء التالية:
- تنفيذ أي منطق مطلوب لمعالجة إدخالات المستخدم.
- أنشِئ ردودك للاستجابة إلى غايات إظهارها. ضع في اعتبارك التي يستخدمها المستخدمون لإنشاء ردود مناسبة. عرض إمكانات العرض مزيد من المعلومات حول كيفية تلبية طلبات العملاء لمختلف مساحات العرض.
- يمكنك استدعاء الدالة
ask()
مع ردك.
يوضح لك الرمز التالي كيفية إنشاء إجابتين لتحويل النص إلى كلام يتعاملان مع
الغرض من الاستدعاء (input.welcome
) وهدف مربّع الحوار (input.number
) الذي
يرحّب بالمستخدم في الإجراء الخاص بك ويرمز إلى رقم تحدّث عنه
الغرض من Dialogflow بالاسم:
const app = dialogflow(); app.intent('Default Welcome Intent', (conv) => { conv.ask('Welcome to number echo! Say a number.'); }); app.intent('Input Number', (conv, {num}) => { // extract the num parameter as a local string variable conv.close(`You said ${num}`); });
@ForIntent("Default Welcome Intent") public ActionResponse defaultWelcome(ActionRequest request) { ResponseBuilder rb = getResponseBuilder(request); rb.add("Welcome to number echo! Say a number."); return rb.build(); } @ForIntent("Input Number") public ActionResponse inputNumber(ActionRequest request) { ResponseBuilder rb = getResponseBuilder(request); Integer number = (Integer) request.getParameter("num"); rb.add("You said " + number.toString()); return rb.endConversation().build(); }
يستخدِم رقم الإدخال المخصّص حسب النية بالشراء، المرفق مع الرمز أعلاه، السمة
@sys.number
لاستخراج رقم من عبارات المستخدم. الغرض من ذلك
إرسال المعلمة num
، التي تحتوي على الرقم من المستخدم، إلى
في التنفيذ.
وبدلاً من استخدام معالجات فردية لكل هدف، يمكنك إضافة دالة احتياطية. داخل الدالة الاحتياطية، تحقق من الغرض الذي تم تشغيله عليها وتفعل الشيء المناسب وفقًا لذلك.
const WELCOME_INTENT = 'Default Welcome Intent'; const NUMBER_INTENT = 'Input Number'; const NUMBER_PARAMETER = 'num'; // you can add a fallback function instead of a function for individual intents app.fallback((conv) => { // intent contains the name of the intent // you defined in the Intents area of Dialogflow const intent = conv.intent; switch (intent) { case WELCOME_INTENT: conv.ask('Welcome! Say a number.'); break; case NUMBER_INTENT: const num = conv.parameters[NUMBER_PARAMETER]; conv.close(`You said ${num}`); break; } });
// you can add a fallback function instead of a function for individual intents @ForIntent("Default Fallback Intent") public ActionResponse fallback(ActionRequest request) { final String WELCOME_INTENT = "Default Welcome Intent"; final String NUMBER_INTENT = "Input Number"; final String NUMBER_ARGUMENT = "num"; // intent contains the name of the intent // you defined in the Intents area of Dialogflow ResponseBuilder rb = getResponseBuilder(request); String intent = request.getIntent(); switch (intent) { case WELCOME_INTENT: rb.add("Welcome! Say a number."); break; case NUMBER_INTENT: Integer num = (Integer) request.getParameter(NUMBER_ARGUMENT); rb.add("You said " + num).endConversation(); break; } return rb.build(); }
إعادة تقديم طلب عدم المطابقة
عندما يتعذّر على Dialogflow مطابقة أي من القواعد النحوية للإدخالات المحدَّدة في intents عبارات التدريب، فإنّها تؤدي إلى هدف احتياطي. الأهداف الاحتياطية عادةً مطالبة المستخدم بتقديم المدخلات اللازمة للإجراء الخاص بك يمكنك تقديم عبارات طلب الموافقة من خلال تحديدها في القسم Response في الغرض الاحتياطي أو يمكنك استخدام ردّ تلقائي على الويب لتقديم ردود.
عندما لا يتطابق ردّ المستخدم مع عبارات التدريب في الإجراء الخاص بك، ستُجري Google يحاول "مساعد Google" معالجة مصدر الإدخال. يُسهل هذا السلوك تغيير المستخدمين الإجراءات التي يتم تنفيذها في منتصف المحادثة على سبيل المثال، يسأل أحد المستخدمين، "ما الأفلام التي ستلعبها هذا الأسبوع؟" ثم تغير السياق في منتصف المحادثة: "ما الطقس غدًا؟" في هذا المثال، ولأن "كيف سيكون الطقس غدًا؟" ليست استجابة صالحة للمحادثة التي بدأتها المطالبة الأولية، يحاول "مساعد Google" تلقائيًا معالجة المطابقة ونقل المستخدم إلى المحادثة المناسبة.
إذا لم يتمكّن "مساعد Google" من العثور على إجراء مناسب يُطابق البيانات التي أدخلها المستخدم، إعادة المستخدِم إلى سياق الإجراء الخاص بك
لأنّ "مساعد Google" قد يقاطع المهمّة للاستجابة إلى طلب غير مطابق صالح لا تستخدم الأهداف الاحتياطية كوسيلة لتنفيذ استعلامات المستخدم. إِنْتَ يجب أن تستخدم الأهداف الاحتياطية فقط لطلب إعادة مطالبة المستخدم بإدخالات صالحة.
لإنشاء هدف احتياطي:
- انقر على أهداف في قائمة التنقّل في Dialogflow.
- انقر على الرمز ⋮ بجانب إنشاء هدف واختَر إنشاء هدف احتياطي: (أو بدلاً من ذلك، انقر على الإجراء الاحتياطي التلقائي) والنية تعديلها).
تحديد العبارات التي تتم الردّ عليها للردّ على المستخدمين. ينبغي أن تكون هذه العبارات وأن تكون حواريًا وأن تكون مفيدة قدر الإمكان للسياق الحالي للمستخدم.
لإجراء ذلك بدون توصيل الطلبات: حدِّد عبارات في المنطقة Response. القصد. يختار Dialogflow العبارات عشوائيًا من هذه القائمة للتحدّث للمستخدمين حتى يتم تشغيل هدف أكثر تحديدًا.
في ما يلي الخطوات التي يجب اتّباعها عند توصيل الطلب:
- فعِّل خيار تفعيل طلب الردّ التلقائي على الويب لهذا الغرض في قسم تنفيذ الغرض.
- في منطق التنفيذ، تعامل مع الغرض الاحتياطي مثل أي عنصر آخر الأغراض، كما هو موضّح في إنشاء دوال لمعالجة الطلبات .
على سبيل المثال، تستخدم الدالة التالية الكائن
conv.data
( حمولة البيانات العشوائية التي يمكنك استخدامها للحفاظ على حالتها) من مكتبة برامج Node.js لتخزين عدّاد يتتبّع عدد المرات التي يتم فيها تشغيل هدف احتياطي. إذا كان تم تشغيلها أكثر من مرة، يتم إنهاء الإجراء. وعلى الرغم من عدم ظهوره في قسم الرمز، يجب أن تجعل الأهداف الأخرى تعيد ضبط هذا العدّاد على 0 عندما يتم تشغيل هدف غير احتياطي (راجع نموذج لـ Number Genie للحصول على تفاصيل حول كيفية تنفيذ ذلك).Node.js app.intent('Default Fallback Intent', (conv) => { conv.data.fallbackCount++; // Provide two prompts before ending game if (conv.data.fallbackCount === 1) { conv.contexts.set(DONE_YES_NO_CONTEXT, 5); conv.ask('Are you done playing Number Genie?'); } else { conv.close(`Since I'm still having trouble, so I'll stop here. ` + `Let's play again soon.`); } });
Java @ForIntent("Default Fallback Intent") public ActionResponse defaultFallback(ActionRequest request) { final String DONE_YES_NO_CONTEXT = "done_yes_no_context"; ResponseBuilder rb = getResponseBuilder(request); int fallbackCount = request.getConversationData().get("fallbackCount") == null ? 0 : (Integer) request.getConversationData().get("fallbackCount"); fallbackCount++; request.getConversationData().put("fallbackCount", fallbackCount); if (fallbackCount == 1) { rb.add(new ActionContext(DONE_YES_NO_CONTEXT, 5)); rb.add("Are you done playing Number Genie?"); } else { rb.add("Since I'm still having trouble, so I'll stop here. Let's play again soon") .endConversation(); } return rb.build(); }
استخدام السياقات
يمكنك استخدام السياقات إذا كنت تريد من Dialogflow تشغيل نوايا احتياطية في أنواع محددة فقط المواقف المختلفة. هذا مفيد إذا كنت ترغب في الحصول على أغراض احتياطية مختلفة السيناريوهات المختلفة لعدم المطابقة.
- إذا لم تقم بتعيين سياقات على غرض احتياطي، يُعتبَر هدف احتياطي عام يتم تشغيله بواسطة Dialogflow عندما لا تكون هناك أي نية أخرى مطابق. ويجب تحديد سمة واحدة فقط منها إذا اخترت استخدامها.
في حال ضبط سياقات الإدخال على هدف احتياطي، يشغِّل Dialogflow هذا هدف احتياطي عندما يكون ما يلي صحيحًا:
- إن السياقات الحالية للمستخدم هي عبارة عن مجموعة رئيسية من السياقات المحددة في والنية.
- لا تتطابق أي أهداف أخرى.
يتيح لك هذا استخدام أغراض احتياطية متعددة مع سياقات إدخال مختلفة تخصيص إعادة الموافقة على سيناريوهات محددة
في حال إعداد سياق ناتج على غرض احتياطي، فإنك تُبقي المستخدم في السياق نفسه بعد تشغيل الغرض الاحتياطي ومعالجتها.
يمكنك الاطّلاع على سياقات Dialogflow للحصول على مزيد من المعلومات.
إعادة طلب عدم الإدخال
يمكنك الاطّلاع على صفحة إشعارات الطلبات للحصول على تفاصيل حول كيفية إجراء ذلك. المعالجة عندما لا يقدم المستخدم مدخلات إضافية على جهاز صوتي مثل Google Home الذي يتطلّب تفاعلاً مستمرًا