Botframework-solutions: تم تعيين خاصية "الدور" لنشاط تحديث المحادثة على قيمة خالية

تم إنشاؤها على ١٠ أغسطس ٢٠٢٠  ·  25تعليقات  ·  مصدر: microsoft/botframework-solutions

لقطات


إصدار

WebChat 4.9.1 عبر CDN

صف الخلل

عندما يتم إرسال نشاط ConversUpdate بواسطة WebChat ، يتم تعيين خاصية "الدور" للنشاط على "خالية". نتيجة لذلك ، لا يتم تحديث ProactiveState بتفاصيل المحادثة الجديدة لأنها تبحث عن الدور الذي يساوي "المستخدم". يتم تحديث هذا فقط عند استدعاء مهارة / إرسال رسالة. نتيجة لذلك ، إذا كان هناك أي إشعارات استباقية ، فسيتم إرسالها إلى محادثة خاطئة.

خطوات التكاثر

  1. ابدأ الاتصال بالبوت من خلال WebChat باستخدام DirectLine.
  2. افتح اتصالاً بالبوت.
  3. لاحظ في منطق bot back-end أنه تم تعيينContext.Activity.From.Role على قيمة خالية ، وليس "مستخدم".
  4. لاحظ الخطأ.

سلوك متوقع

يجب أن يمرر WebChat الدور ذي الصلة كـ "مستخدم" ، بحيث لا يتم تعطيل وظائف الحالة الاستباقية.

سياق إضافي

تم تنفيذ WebChat في تطبيق Angular.

[حشرة]

Bot Services Kobuk bug customer-replied-to customer-reported in-progress

ال 25 كومينتر

مرحبًا @ manish-95 ، هل يمكنك إرسال رمز لكيفية إنشاء رمز مميز في Web Chat بالإضافة إلى أي تفاصيل ذات صلة (على سبيل المثال ، هل تم تمكين المصادقة المحسّنة في قناة الخط المباشر)؟

وما هي واجهة برمجة التطبيقات التي تتصل بها لطلب الرمز المميز؟ إذا اتصلت بواجهة برمجة تطبيقات خاصة بك ، فهل يمكنك أيضًا تضمين هذا الرمز؟

stevkan هذا المخطط قد يعطيك بعض التلميحات.

باختصار ، activity.from.role شيء في المواصفات ، لكن خدمة Direct Line لم ترسله إلينا. لذا فإن Web Chat لنحدده بأنفسنا.

أعتقد أن @ manish-95 يتحدث عن SDK لم يكن لديه activity.from.role . لذلك يجب أن يكون هذا إما ثابتًا في خدمة الخط المباشر ، أو مصححًا في SDK.

stevkan هل يمكنك المتابعة مع فريق

stevkan هذا المخطط قد يعطيك بعض التلميحات.

باختصار ، activity.from.role شيء في المواصفات ، لكن خدمة Direct Line لم ترسله إلينا. لذا فإن Web Chat لنحدده بأنفسنا.

أعتقد أن @ manish-95 يتحدث عن SDK لم يكن لديه activity.from.role . لذلك يجب أن يكون هذا إما ثابتًا في خدمة الخط المباشر ، أو مصححًا في SDK.

stevkan هل يمكنك المتابعة مع فريق

compulimstevkan I يمكن أن تضيف أكثر قليلا من المعلومات هنا والتي قد تساعد. تبحث البرامج الوسيطة ProactiveState في أحدث إصدار من حلول BotFramework عن activity.fram.role ، وهو لاغٍ ، ومن ثم فإنه يفشل في تحديث الحالة الاستباقية. في الإصدارات السابقة ، كان يبحث في activity.from.properties ، والذي كان له زوج قيم رئيسي للدور

EricDahlvang هل يمكنك إلقاء نظرة على هذا من منظور SDK؟ نحن بحاجة إلى بعض إرشادات SDK هنا. شكرا!

كما ذكر ويليام ، لا يتم إرسال "الدور" بواسطة Direct Line. بالنظر إلى مستودع حلول botframework ، يبدو أن حقل "الدور" هذا قد تم اعتماده لغرض مختلف عما كان مقصودًا في الأصل. ويوجد حاليًا تضارب بين DefaultActivityHandler و ProactiveStateMiddleware

https://github.com/microsoft/botframework-solutions/blob/master/samples/csharp/assistants/enterprise-assistant/VirtualAssistantSample/Bots/DefaultActivityHandler.cs#L155

private void EnsureActivity(Activity activity)
        {
            if (activity != null)
            {
                if (activity.From != null)
                {
                    activity.From.Name = "User";
                    activity.From.Properties["role"] = "user";
                }

                if (activity.Recipient != null)
                {
                    activity.Recipient.Id = "1";
                    activity.Recipient.Name = "Bot";
                    activity.Recipient.Properties["role"] = "bot";
                }
            }
        }

https://github.com/microsoft/botframework-solutions/blob/master/sdk/csharp/libraries/microsoft.bot.solutions/Proactive/ProactiveStateMiddleware.cs#L31

if (!string.IsNullOrEmpty(activity.From.Role) && activity.From.Role.Equals("user", StringComparison.InvariantCultureIgnoreCase))

أخيرًا ، تنص المواصفات هنا :

Channel account role
The role field indicates whether entity behind the account is a user or bot. This field is intended for use in the Transcript format [16] to distinguish between activities sent by users and activities sent by bots. The value of the role field is a string.

A7511: Senders SHOULD NOT include this field. Receivers SHOULD ignore this field.

بناءً على ذلك ، يبدو أن روبوت VA يجب أن يتبنى طريقة مختلفة لحالة الرسائل الاستباقية أو ربما يحدد نشاطًا.

ryanlengel @ lzc850612 هل يمكنك إلقاء نظرة والقيام بتمرير أولي لهذه المشكلة؟

EricDahlvang السبب في أننا استخدمنا activity.from.role لأنه في البرامج الوسيطة نحتاج فقط إلى تخزين مرجع المحادثة للنشاط الذي يأتي من مستخدم إلى برنامج الروبوت. إذا لم نستخدم Activity.from.role ، فما هي الطريقة الأخرى التي يمكننا استخدامها لتحقيق هذا التحقق من الصحة؟

شكرا.

@ lzc850612 لست متأكدا. هل تم تنفيذ ProactiveStateMiddleware.OnTurn مع نشاط ليس من مستخدم؟ إذا كان الأمر كذلك ، فربما تكون خاصية مخصصة؟

في كلتا الحالتين ، يجب أن تكون ProactiveStateMiddleware متسقة مع كل ما يتم إجراؤه في DefaultActivityHandler ... هذا التناقض هو سبب المشكلة في الوقت الحالي.

@ manish-95 ، @ lzc850612 قام بالتحقق من العلاقات العامة المتعلقة بهذا الأمر الذي نعتقد أنه يجب أن يساعد في معالجة هذه المشكلة. سنعمل على دفع الإصدارات الجديدة بنشاط في الأسبوع أو الأسبوعين المقبلين. في غضون ذلك ، هل يمكنك إلقاء نظرة والعمل معه لمعرفة ما إذا كان هذا يساعد في حل مشكلتك؟ شكرا!

@ manish-95 ، @ lzc850612 قام بالتحقق من العلاقات العامة المتعلقة بهذا الأمر الذي نعتقد أنه يجب أن يساعد في معالجة هذه المشكلة. سنعمل على دفع الإصدارات الجديدة بنشاط في الأسبوع أو الأسبوعين المقبلين. في غضون ذلك ، هل يمكنك إلقاء نظرة والعمل معه لمعرفة ما إذا كان هذا يساعد في حل مشكلتك؟ شكرا!

peterinnesmsft @ lzc850612 بالتأكيد ، سأفعل ذلك بالتأكيد. في الوقت الحالي ، أضفت إصلاحًا سيئًا لنفسه ، عن طريق إضافة خاصية الدور لكل نشاط ، ولكن يمكنني بسرعة نسخ المحتويات من هذا العلاقات العامة محليًا والتحقق منها.

@ مانيش - 95 أي حظ في التحقق من هذا؟ نحن نتطلع مبدئيًا إلى إجراء بعض التحقق الأولي لمرشح الإصدار الذي يحتوي على هذا الإصلاح الأسبوع المقبل ، ولكن أي تنبيه إذا اكتشفت مشكلات واضحة سيكون موضع تقدير كبير إذا كان لديك!

مرحبًا peterinnesmsft ، اعتذاري عن التحديث المتأخر للغاية بشأن هذا ، ومع ذلك ، فقد أخذت نسخة من الملف مع التغييرات الجديدة ، ويبدو أنه يعمل بشكل جيد ، لجميع الحالات التي أستخدمها.

هذه المشكلة قديمة لأنها كانت مفتوحة لمدة 30 يومًا بدون أي نشاط. أزل التسمية أو التعليق الذي لا معنى له وإلا فسيتم إغلاق هذا في غضون 5 أيام

@ مانيش - 95 أشكركم على تأكيد!

@ Batta32 كما أتوقع سيتم حل هذا من خلال تحديثاتنا لمراجع حزمة SDK ،

peterinnesmsft هل يمكن إغلاق هذا الآن؟

هل تم اختبار هذا ضد أحدث sdk؟ يستخدم sdk الآن الخاصية activity.recipient.role. عندما يتم إنشاء ConversationReference لمكالمة متابعة ، فإن هذا الدور سوف يتماشى معها. أعتقد أنه سيكون هناك الآن تعارض مع كيفية استخدام DefaultActivityHandler.cs و ProactiveStateMiddleware.cs.

مرحبًا @ mrivera-ms و EricDahlvang ، لقد من أن هذا تم إصلاحه بشكل صحيح مع SDK R11 وأنشأنا PR # 3707 لاستخدام أحدث إصدار من SDK.

بمجرد دمج PR # 3707 ونشر حزم جديدة مع هذا الإصدار الجديد ، سيتم حل هذا تلقائيًا.

image

@ Batta32 هل تم اختبار المهارات الاستباقية مع 4.11؟ مسارات الكود التي تستخدم DefaultActivityHandler.cs و ProactiveStateMiddleware.cs؟

عذرًا EricDahlvang ، 1.0.1-daily322 من C # Bot-Solutions ( aitemplates ) الذي يحتوي على PR # 3633 ويستخدم SDK R9.

هل يجب أن نتحقق من هذا باستخدام R11؟

EricDahlvang ، هل يمكنك الرد على تعليق @ Batta32 ؟ شكرا.

آسف ، لست متأكدا. يبدو أن هذه ربما لن تكون مشكلة ، لأن # 3633 أزال التحقق من الدور؟

EricDahlvang - PR # 3633 أزال التحقق من الدور.

فقط في حالة حدوث ذلك ، سنقوم بالتحقق من صحة R11 بالتغييرات التي تم تنفيذها في PR # 3633. بمجرد حصولنا على أي تحديث ، سنخبرك بالنتيجة 😊.

مرحبًا EricDahlvang ، آسف على التأخير. لقد تحققنا من صحة إصلاح PR # 3633 الذي يزيل التحقق من الدور باستخدام R11 وأكدنا أنه يعمل مع تعيين الخاصية role على قيمة خالية باستخدام Web Chat و DirectLine.

نعتقد أنه يمكن إغلاق هذه المشكلة حيث ستكون التغييرات موجودة في الحزم المستقرة الجديدة للحلول.

image

شكرا @ Batta32

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات