الاستكشاف في Dialogflow
انقر على متابعة لاستيراد نموذج حفظ البيانات في Dialogflow. بعد ذلك، اتبع الخطوات أدناه لنشر النموذج واختباره:
- أدخِل اسم الوكيل وأنشِئ وكيل Dialogflow جديد للنموذج.
- بعد انتهاء عملية الاستيراد، انقر على الانتقال إلى الوكيل.
- من قائمة التنقّل الرئيسية، انتقِل إلى توصيل الطلبات.
- فعِّل المحرّر المضمّن، ثم انقر على نشر. يحتوي المحرِّر على العيّنة الرمز.
- من قائمة التنقل الرئيسية، انتقِل إلى عمليات الدمج، ثم انقر على Google "مساعد Google"
- في النافذة المشروطة التي تظهر، فعِّل تغييرات المعاينة التلقائية وانقر على اختبار. لفتح محاكي الإجراءات.
- في المحاكي، أدخِل
Talk to my test app
لاختبار العيّنة.
جزء من توفير تجربة مستخدم ممتازة غالبًا ما يكون القدرة على حفظ البيانات بين منعطفات المحادثة أو عبر عدة محادثات مع المستخدم. يكون هذا مفيدًا إذا كنت تقدم عبارات مفيدة مفيدة في محادثة واحدة، أو حفظ نتائج اللعبة في جميع الجلسات، أو تذكُّر معلومات صغيرة للمستخدم.
تختلف المتطلبات قليلاً بناءً على ما إذا كنت بحاجة إلى حفظ البيانات في
أو عبر المحادثات. لحفظ البيانات في محادثة، يمكنك:
استخدِم الحقل conversationToken
في الكائن AppResponse
.
لحفظ البيانات في المحادثات، اتّبِع الخطوات التالية بدلاً من ذلك:
- حدِّد ما إذا كان المستخدم قد تم التحقّق من هويته أو كان ضيفًا.
- تخزين بيانات المستخدمين أو الوصول إليها باستخدام الحقل
userStorage
في الكائنAppResponse
.
حفظ البيانات بين منعطفات محادثة
الحقل conversationToken
هو سلسلة تحتوي على رمز مميّز مبهم
إلى الإجراء في كل منعطف. على سبيل المثال، إذا قمتَ بتعيين
القيمة إلى "count=1"
في AppResponse
في أول دور من
محادثة، تلقاها AppRequest
في المهمة الثانية
من المحادثة تحتوي على "count=1"
في conversationToken
.
يتم دائمًا تهيئة الرمز المميز إلى سلسلة فارغة في بداية
محادثة. إذا كنت تستخدم
الإجراءات على مكتبة برامج Google Node.js، يمكنك
بالرمز المميز للمحادثة ككائن JSON باستخدام conv.data
، حيث يكون
conv
هو مثالك على Conversation
.
يعرض النموذج التالي كيفية حفظ عدّاد في conversationToken
.
الحقل في AppResponse
:
Node.js
conv.data.firstNum = firstNum; conv.ask(`Got it, the first number is ${firstNum}.`); conv.ask(`What's the second number?`);
Java
ResponseBuilder responseBuilder = getResponseBuilder(request); responseBuilder.getConversationData().put("firstNum", firstNum); responseBuilder.add("Got it, the first number is " + firstNum + "."); responseBuilder.add("What's the second number?"); return responseBuilder.build();
JSON
لاحظ أن JSON أدناه يصف استجابة الرد التلقائي على الويب التي تستخدم
outputContexts
بدلاً من conversationToken
{ "payload": { "google": { "expectUserResponse": true, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Got it, the first number is 23." } }, { "simpleResponse": { "textToSpeech": "What's the second number?" } } ] } } }, "outputContexts": [ { "name": "projects/save-data-df-js/agent/sessions/ABwppHGfFkWJdHKPpBEYiGkhdoakWmYj_2sZa4o8pbGG9nj4q5_GfDTtNEXOY34mLX8G4o_d7oZdUW9bnBZC/contexts/_actions_on_google", "lifespanCount": 99, "parameters": { "data": "{\"firstNum\":23}" } } ] }
JSON
تجدر الإشارة إلى أن ملف JSON أدناه يصف استجابة ردّ تلقائي على الويب.
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.TEXT" } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Got it, the first number is 23." } }, { "simpleResponse": { "textToSpeech": "What's the second number?" } } ] } } } ], "conversationToken": "{\"data\":{\"firstNum\":23}}" }
الاطّلاع على مقالة تقديم طلبات مفيدة والإجابة عن أسئلتك بشكل صحيح دليل أفضل الممارسات لمثال على الاستخدام العملي.
حفظ البيانات في المحادثات
الحقل userStorage
في كائن AppResponse
هو سلسلة
يحتوي على رمز مميز غير شفاف يوفره الإجراء الذي يتم حفظه عبر
المحادثات لمستخدم معين. على سبيل المثال، تحقق اللعبة أعلى نسبة
نتيجة المستخدم في userStorage
واستخدام قيمته في رسالة الترحيب
الوقت الذي يبدأ فيه المستخدم محادثة جديدة.
تحديد حالة التحقق من المستخدم ومعالجتها
يمكن أن تكون قيمة حالة إثبات هوية المستخدم GUEST
أو VERIFIED
. في جلسة المعمل،
بداية كل محادثة، تضبط "المهام مع مساعد Google" عملية إثبات هوية المستخدم.
الحالة بناءً على مجموعة متنوعة من المؤشرات عند بدء المحادثة. كواحد
على سبيل المثال، إذا سجّل مستخدم سجّل الدخول إلى "مساعد Google" على جهازه الجوّال
حالة تحقق VERIFIED
.
في ما يلي الأسباب المحتملة التي تؤدي إلى ظهور حالة إثبات هوية المستخدم
GUEST
:
- إذا كانت النتائج الشخصية غير مفعّلة لدى المستخدم.
- عطّل المستخدم إعدادات الويب النشاط على التطبيقات: ضع في اعتبارك أن بعض المستخدمين قد يتم إيقاف هذا الإعداد على مستوى النطاق.
- إذا كانت ميزة Voice Match مفعّلة على الجهاز وتعذّرت المطابقة أو استدعى المستخدم. "مساعد Google" بدون استخدام صوته (مثل الضغط مع الاستمرار على الصفحة الرئيسية).
- لم يسجّل المستخدم الدخول.
التحقق دائمًا من حالة تحقق المستخدم قبل تخزين البيانات باستخدام
userStorage
أو بدء عملية ربط الحساب لمنع المستخدمين الضيوف من
يتفاعل مع ميزة لن ينجح بالنسبة له.
إذا كنت تستخدم Actions On Google Client Library for Node.js،
يمكنك التفاعل مع سعة تخزين المستخدم ككائن JSON باستخدام
conv.user.storage
، حيث conv
هو مثالك على Conversation
. تشير رسالة الأشكال البيانية
يعرض النموذج التالي كيفية حفظ عدّاد في الحقل userStorage
ضمن
AppResponse
:
Node.js
app.intent('Save Sum', (conv) => { if (conv.user.verification === 'VERIFIED') { conv.user.storage.sum = conv.data.sum; conv.close(`Alright, I'll store that for next time. See you then.`); } else { conv.close(`I can't save that right now, but we can add ` + `new numbers next time!`); } });
Java
@ForIntent("Save Sum") public ActionResponse saveSum(ActionRequest request) { ResponseBuilder responseBuilder = getResponseBuilder(request); Integer sum = ((Double) request.getConversationData().get("sum")).intValue(); String verificationStatus = request.getUser().getUserVerificationStatus(); if (verificationStatus.equals("VERIFIED")) { responseBuilder.getUserStorage().put("sum", sum); responseBuilder.add("Alright, I'll store that for next time. See you then."); } else { responseBuilder.add("I can't save that right now, but we can add new numbers next time!"); } responseBuilder.endConversation(); return responseBuilder.build(); }
Node.js
if (conv.user.verification === 'VERIFIED') { conv.user.storage.sum = conv.data.sum; conv.close(`Alright, I'll store that for next time. See you then.`); } else { conv.close(`I can't save that right now, but we can add ` + `new numbers next time!`); }
Java
ResponseBuilder responseBuilder = getResponseBuilder(request); Integer sum = ((Double) request.getConversationData().get("sum")).intValue(); String verificationStatus = request.getUser().getUserVerificationStatus(); if (verificationStatus.equals("VERIFIED")) { responseBuilder.getUserStorage().put("sum", sum); responseBuilder.add("Alright, I'll store that for next time. See you then."); } else { responseBuilder.add("I can't save that right now, but we can add new numbers next time!"); } responseBuilder.endConversation(); return responseBuilder.build();
JSON
تجدر الإشارة إلى أن ملف JSON أدناه يصف استجابة ردّ تلقائي على الويب.
{ "payload": { "google": { "expectUserResponse": false, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Alright, I'll store that for next time. See you then." } } ] }, "userStorage": "{\"data\":{\"sum\":68}}" } } }
JSON
تجدر الإشارة إلى أن ملف JSON أدناه يصف استجابة ردّ تلقائي على الويب.
{ "expectUserResponse": false, "finalResponse": { "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Alright, I'll store that for next time. See you then." } } ] } }, "conversationToken": "{\"data\":{\"firstNum\":23,\"sum\":68}}", "userStorage": "{\"data\":{\"sum\":68}}" }
يُرجى الاطّلاع على مقالتنا تخصيص المحادثة باستخدام الإعدادات المفضّلة للمستخدم. دليل أفضل الممارسات لمثال على الاستخدام العملي.
ملاحظة قانونية: الحصول على موافقة قبل الوصول إلى userStorage
.
تفرض بعض البلدان لوائح تتطلّب من المطوّرين الحصول على موافقة منهم.
المستخدم قبل أن يتمكن من الوصول إلى بعض المعلومات أو حفظها (مثل المعلومات
هذه المعلومات) في userStorage
. إذا كنت تعمل في إحدى هذه المناطق
التي تريد الوصول إلى هذه المعلومات أو حفظها في
userStorage
، عليك استخدام
مساعد التأكيد لطرح السؤال
على المستخدم والحصول على الموافقة قبل أن تتمكن من البدء في تخزين
المعلومات في userStorage
.
انتهاء صلاحية مساحة تخزين المستخدم
وعندما يتمكن "مساعد Google" من مطابقة الهوية مع المستخدم، يتم عرض محتوى
لا تنتهي صلاحية "userStorage
" أبدًا، ويمكن للمستخدم أو الإجراء نفسه فقط محوه.
وعندما يتعذّر على "مساعد Google" مطابقة هوية المستخدم، يتم عرض
يتم محو userStorage
في نهاية المحادثة. إليك بعض الأمثلة
الحالات التي لا يتمكن فيها "مساعد Google" من مطابقة هوية المستخدم:
- تم إعداد ميزة Voice Match وليس هناك أي تطابق.
- أوقف المستخدم البيانات الشخصية.
محو محتوى الحقل userStorage
يمكنك محو محتوى الحقل userStorage
في الإجراء من خلال
ضبط الحقل resetUserStorage
في AppResponse
على "صحيح". في حال حذف
يمكنك تعيين قيمة userStorage
على سلسلة فارغة، قيمة
لن يتم تغيير "userStorage
" في المرحلة التالية من المحادثة. يتيح لك هذا
تجنَّب إعادة إرسال مبلغ userStorage
بالكامل بالتناوب في حال كان المحتوى غير متوفر.
التغيير.
إذا كنت تستخدم Actions On Google Client Library for Node.js،
يمكنك فقط ضبط قيمة conv.user.storage
على {}
(كائن فارغ).
Node.js
app.intent('Forget Number', (conv) => { conv.user.storage = {}; conv.ask(`Alright, I forgot your last result.`); conv.ask(`Let's add two new numbers. What is the first number?`); });
Java
@ForIntent("Forget Number") public ActionResponse forgetNumber(ActionRequest request) { ResponseBuilder responseBuilder = getResponseBuilder(request); responseBuilder.getUserStorage().clear(); responseBuilder.add("Alright, I forgot your last result."); responseBuilder.add("Let's add two new numbers. What is the first number?"); return responseBuilder.build(); }
Node.js
conv.user.storage = {}; conv.ask(`Alright, I forgot your last result.`); conv.ask(`Let's add two new numbers. What is the first number?`);
Java
ResponseBuilder responseBuilder = getResponseBuilder(request); responseBuilder.getUserStorage().clear(); responseBuilder.add("Alright, I forgot your last result."); responseBuilder.add("Let's add two new numbers. What is the first number?"); return responseBuilder.build();
JSON
تجدر الإشارة إلى أن ملف JSON أدناه يصف استجابة ردّ تلقائي على الويب.
{ "payload": { "google": { "expectUserResponse": true, "richResponse": { "items": [ { "simpleResponse": { "textToSpeech": "Alright, I forgot your last result." } }, { "simpleResponse": { "textToSpeech": "Let's add two new numbers. What is the first number?" } } ] }, "userStorage": "{\"data\":{}}" } } }
JSON
تجدر الإشارة إلى أن ملف JSON أدناه يصف استجابة ردّ تلقائي على الويب.
{ "expectUserResponse": true, "expectedInputs": [ { "possibleIntents": [ { "intent": "actions.intent.TEXT" } ], "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": "Alright, I forgot your last result." } }, { "simpleResponse": { "textToSpeech": "Let's add two new numbers. What is the first number?" } } ] } } } ], "userStorage": "{\"data\":{}}" }
بصفتك مستخدمًا، يمكنك عرض محتوى الحقل "userStorage
" في أي "إجراء"
تم استدعاء. يمكنك أيضًا إزالة بيانات المستخدم المخزَّنة من هذا الإجراء المحدّد.
عن طريق منع الخدمة من تذكرك.
- افتح تطبيق "مساعد Google" على هاتفك.
- انقر على رمز الدرج.
- في علامة التبويب استكشاف، ابحث عن الإجراء الذي تريد الاطّلاع عليه أو محو بيانات المستخدم. التخزين له والنقر عليه لفتح صفحة التفاصيل.
- انتقِل إلى أسفل الصفحة.
- لعرض محتوى الحقل "
userStorage
"، انقر على [عرض البيانات المخزَّنة]. - لإزالة بيانات المستخدم المخزَّنة، انقر على إيقاف $action من تذكّري.
- لعرض محتوى الحقل "