Botframework-solutions: [Typescript] أضف دعم GA SDK Skill إلى VA / Skill Generator

تم إنشاؤها على ٨ أكتوبر ٢٠١٩  ·  64تعليقات  ·  مصدر: microsoft/botframework-solutions

بعد تغيير بروتوكول المهارة إلى WebSockets ، كنا ننتظر مكتبة ملحقات البث الجديدة لتكون متاحة لـ Typescript ، والتي كانت متوفرة سابقًا لـ C # فقط. سيؤدي هذا إلى إلغاء حظر سيناريوهات استدعاء المهارة لـ Virtual Assistant عند استخدام Typescript.

قصة المستخدم

كمطور
أريد ... أن أكون قادرًا على توصيل المهارات بإصدار TypeScript من Virtual Assistant
لذلك ... يوجد تكافؤ بين C # و Typescript

معايير القبول

  • [] تحديث VA ومنشئ المهارات لدمج مهارات GA SDK الجديدة
  • [] انشر VA المطبوع وأضف مهارة C # (مثل التقويم)
  • [] تقديم وثائق عن التغييرات المطلوبة لحلول VA الحالية والمهارات التي أنشأها المولد حسب الحاجة
P0 Committed In Progress

التعليق الأكثر فائدة

@ Batta32 إذا كان SkillConversationIdFactory يستخدم encodeURI ، فستتلقى المهارة تلك المحادثة وتستجيب لها وفقًا لذلك. أنا متأكد من أن هذا مطلوب.

نعم أيضًا ، هناك مشكلة تتعلق بمعرفات المحادثات الطويلة أثناء استخدام إعادة التفعيل. نذكر كيفية حل المشكلة في هذا النموذج: https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/javascript_nodejs/80.skills-simple-bot-to-bot/simple-root -bot / SkillsConversationIdFactory.js # L21

// يحتوي هذا المفتاح على حد أقصى يبلغ 100 حرف بشكل افتراضي. زيادة restify.createServer({ maxParamLength: 1000 }); في index.js.

ال 64 كومينتر

مرحبا درينج ،
هل هناك أي وقت محدد للوصول بشأن المشكلة يجب إصلاحه؟
شكرا،
كومار

على أمل أن ينتهي العمل للاختبار هذا الأسبوع كل شيء على ما يرام.

شكرا لك darrenj على التحديث.

هل هناك أي تحديث لهذه المسألةdarrenj

مرحبا دارين ،

darrenj ، هل يمكنك تقديم تحديث حول عنصر العمل هذا. نحن بحاجة إلى تطوير هذه الميزة الهامة لحالة الاستخدام الخاصة بنا.

نقدر مساعدتكم.

شكرا،
كومار

مرحبا darrenj ،

آسف على إزعاجك مرة أخرى ، هل هناك أي تحديث على هذا؟
رأيت أنه تم إصدار المكتبة للإصدار 4.6.0 (https://botbuilder.myget.org/feed/botbuilder-v4-js-daily/package/npm/botframework-streaming) ، هذا متوافق مع Botframework 4.5.0 والمساعد الظاهري؟

هناك بعض الأشياء في الرحلة هنا ، أحدها هو توفر امتداد البث الذي اكتشفته والآخر هو توفر الطباعة المطبوعة لإصدار GA الجديد من مكتبة المهارات. أتوقع أول بنية مجمعة لمكتبة المهارات الأسبوع المقبل ، وعند هذه النقطة يمكننا بدء تحديثات كل من قوالب C # و Typescript لاختبار وتقديم خطوات الترحيل (البسيطة).

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

في غضون ذلك ، يمكن لـ Javascript / Typescript VA Bot استدعاء مهارة تم إنشاؤها في JavaScript / Typescript لأن هذا يستخدم HTTP نظرًا لعدم وجود تبعية امتداد التدفق. تظهر المشكلة عندما ترغب في استدعاء C # Skill مثل التقويم الذي ستتم محاذاة التغييرات المذكورة أعلاه عبر جميع اللغات.

darrenj هل تم إصلاح هذا وهل يمكنني توصيل C # Skill من الكتابة VA؟ أنا في حيرة من أمري بشأن تعليقك الأخير.

مرحبا darrenj ،

بمجرد حل هذا ، هل سيكون من الممكن استدعاء مهارات cSharp مثل ToDo من إصدار TypeScript على VA؟

حاليًا ، أتلقى خطأً متعلقًا بـ WebSocketTransport المستخدم في مهارة C #. لكن VA الخاص بي مطبوع.

نعم ، يؤدي الانتقال إلى إصدار GA من المهارات إلى إزالة الاعتماد على Websockets وبالتالي سيمكن مزيجًا / تطابقًا سلسًا بين المهارات عبر الأنظمة الأساسية. لدينا أحدث البتات لـ C # و JS ونعمل على التكامل الأولي ، والهدف هو إدخال تغييرات على بنية يومية في غضون الأسبوعين المقبلين لإلغاء حظر السيناريوهات.

مرحبا darrenj ،

لدي حالة استخدام أخرى وهي مهارة التنضيد VA و Typescript.

مشكلتي هي أن updateActivity غير متوفر عبر VA إلى Skill وأنا بحاجة إلى مكتبة البث لهذا (بقدر ما فهمت). لقد لاحظت الآن أنه تمت إزالة تبعيات WebSocket من أحدث مكتبة المهارات (4.4.9).
لا أفهم لماذا :) هل سيتم نقلهم إلى مكان آخر؟ أو؟

حسنًا ، لدي تحديث بشأن التقدم فيما يتعلق بـ GA لقدرات المهارة ضمن Bot Framework SDK. أدى هذا إلى نقل العمل المحتضن بواسطة Virtual Assistant إلى إصدار GA رسمي.

يتوفر نموذج يوضح كيف يمكن للبوت استدعاء روبوت آخر (مهارة). التغيير الرئيسي هو أن لدينا الآن محولًا موحدًا مما يعني أنه ليست هناك حاجة لاستخدام محول أو امتدادات دفق مختلفة. C # و JS .

ونحن نعمل على التحديثات إلى قالب مساعد / مهارة الظاهري لتوفير (صغير) يغير من خارج منطقة الجزاء، وتقديم الوثائق على بعد خطوات قليلة المطلوبة لتحديث المهارات القائمة. استهداف نهاية شهر كانون الثاني (يناير) ، مع إنشاءات على إصداراتنا اليومية قريبًا.

إذا كنت حريصًا على إحراز تقدم قبل ذلك ، فيجب أن توفر لك العينات المذكورة أعلاه كل ما تحتاجه. سوف أقوم بتحديث هذه المشكلة بالمؤشرات إلى الإصدارات / التغييرات اليومية بمجرد أن تصبح جاهزة.

darrenj شكرًا لك على هذا التحديث الرائع. أنا فضولي فقط لمعرفة المهايئ الموحد قبل أن نبدأ في الاستفادة من ذلك في مساعد الإنتاج الافتراضي الخاص بنا.

هل هذا يعني أنه يمكننا استخدام محول موحد في Typescript VA ولا يزال بإمكاننا استدعاء مهارة c #؟

تحديث طال انتظاره!

نشرنا بالأمس إصدار 0.8 والذي يتضمن تحديثًا لجميع نماذج المهارات لدينا لدعم قدرة GA الجديدة ولم تعد المعاينة. تم سحب مآخذ الويب لصالح الاتصال بخدمة الويب بين المهارات ، وتتواصل المهارات مرة أخرى مع الروبوت بشكل غير متزامن باستخدام اتصال HTTP "رد الاتصال".

نتيجة لذلك ، هناك بعض التحديثات المباشرة للمساعد الظاهري والمهارات التي يتعين إجراؤها. تم توثيق تحديثات C # VA هنا ويتم توثيق تحديثات C # Skill هنا .

يتم الانتهاء من تغييرات منشئ JS / Typescript المكافئة بينما نتحدث ونستهدف نشر منشئ جديد ومستندات لـ VA / المهارات الحالية بحلول 14 فبراير. للإشارة إلى الخلفية ، يمكن العثور هنا على الخطوات عالية المستوى لدعم مهارات الاستدعاء

بمجرد اكتمال هذه التغييرات ، فهذا يعني أن JS / VA المطبوع عليها يمكن أن تستدعي C # Skills ، والعكس صحيح ، وفي الواقع Python أيضًا.

darrenj ، هل الطباعة على الورق ؟

وفقًا لما ورد أعلاه ، نعم ، ستكون هناك بعض خطوات الترحيل التي يجب اتباعها والتي نقوم بوضع اللمسات الأخيرة عليها

شكرا لك.

مرحبًا darrenj ، هل هناك أي أخبار حول موعد تغيير مُنشئ JS / TS وإصدار تحديثات المستند؟

مرحبًا darrenj ، هل يمكنك إعلامنا إذا كان الاتصال من VA (C #) إلى مهارة الكتابة المطبوعة قد تم في إطار العمل الجديد (SDK) الذي ذكرته أعلاه. لقد قلت أنه سينتهي بحلول 14 فبراير.
نقدر مساعدتكم

darrenj أي تحديث على هذه التذكرة؟

darrenj حاولت اليوم الترحيل أو إجراء إصلاح لاستدعاء مهارة C # من VA / RootBot (Typescript). لقد وجدت دليلًا لتطبيق مهارة المستهلك الذي لا يحتوي على مثال على rootbot / VA. هل هناك أي خطة لدعم دليل الترحيل المستند إلى الكتابة المطبوعة؟ اسمحوا لي أن أعرف ETA أو أي دليل آخر يمكن أن يساعد في تحقيق نفس الشيء ..

لدينا مجموعة من طلبات السحب أثناء الطيران للتغييرات التي تمكّن VA / المهارات الجديدة المطبعية من استخدام مهارات GA الجديدة. سوف أقوم بتحديث التذكرة بمجرد دمجها وإتاحتها يوميًا.

في غضون ذلك ، يوجد هنا مسودة وثيقة حول خطوات ترحيل VA الموجودة ، نرحب بالتعليقات.

https://github.com/microsoft/botframework-solutions/pull/3123

مرحبًا darrenj ، شكرًا على التحديث ، السؤال الوحيد الذي لدي في الوقت الحالي هو حول "حلول botbuilder". هل يتعين علينا استخدام نسخة محلية؟ من اين؟ لقد وجدت هذا الفرع هنا الذي يشبه الإصدار المستقبلي (https://github.com/microsoft/botframework-solutions/tree/feature/southworks/0.7/parity-botbuilder-solutions/sdk/typescript/libraries/botbuilder-solutions) ، هل هذا صحيح؟

شكرا لك مقدما.

@ Batta32 هل يمكنك التأكيد بسرعة على أي فرع من الكود يمكن للأشخاص استخدامه لاختبار التعليمات (قبل نشر المكتبة الجديدة)

@ tommyJimmy87 - يمكنك التحقق من PR # 3122 الذي يحتوي على جميع التغييرات المطلوبة لـ BotBuilder-Solutions for GA Skills SDK في TypeScript.
الفرع: feature / southworks / ga-Skills-sdk / botbuilder-Solutions

لاستخدام المكتبة محليًا ، يرجى اتباع الخطوات التالية (باستخدام الفرع المذكور):

  1. افتح المكتبة في Visual Studio Code
  2. قم بتنفيذ npm install لتثبيت التبعيات
  3. نفّذ npm run build لتجميع الحل
  4. قم بتنفيذ npm pack لإنشاء ملف مكتبة .tgz
  5. افتح ملف المساعد الافتراضي package.json في Visual Studio Code
  6. قم بتحديث مرجع botbuilder-Solutions الذي يشير إلى مسار tgz الذي تم إنشاؤه
  7. قم بتنفيذ npm install لتثبيت التبعيات التي ستقوم بتثبيت الحزمة المحلية

نحن نتحقق حاليًا من صحة هذه التغييرات ، فلا تتردد في تقديم أي تعليقات في ذلك PR وسنراجعها في أسرع وقت ممكن.

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

darrenj - هل يمكنك إعلامنا إذا كانت التغييرات المذكورة أدناه يمكن إجراؤها للاتصال من VA (C #) إلى Skill وهي العقدة js.

https://microsoft.github.io/botframework-solutions/overview/whats-new/0.8-beta/migrate-existing-va-to-0.8/

نعم - الوثائق في العلاقات العامة والفريق ينهي هذا العمل ونحن نتحدث! (@ Batta32). يمكنك رؤية العمل قيد التقدم هنا: https://github.com/microsoft/botframework-solutions/pull/3123

جنبًا إلى جنب مع التغييرات المرتبطة على SDK: https://github.com/microsoft/botframework-solutions/pull/3122

كما وعدنا ونشكرك على سعة صدرك أثناء عملنا من خلال مجموعة من التغييرات عبر حزم SDK.

  • خطوات لتحديث نسخة مطبوعة على الآلة الكاتبة القائمة VA إلى GA مهارات BF هي هنا
  • الخطوات لتحديث المهارات الخاصة بك نسخة مطبوعة على الآلة الكاتبة الحالية لGA مهارات BF هي هنا

بالإضافة إلى ذلك ، ستشمل الإصدارات اليومية التالية من مولد VA هذه التغييرات خارج الصندوق. سوف أقوم بتحديث هذه المشكلة بالإصدار الدقيق بمجرد معالجتها والتحقق من صحتها.

سيتم بعد ذلك نشر هذا إلى npm عندما نعالج الإصدار 1.0 الذي يتم تعليقه حاليًا في انتظار نافذة تغيير Azure. نأمل بنهاية الشهر.

إذا كانت لديك أي أسئلة / مشكلات تتعلق بما ورد أعلاه ، فيرجى طرح مشكلة جديدة ونحن هنا للمساعدة.

@ Batta32 للترحيل يمكننا البدء في استخدام معاينة botbuilder-Solutions 4.5.0؟ أعتقد أن الإصدار الجديد للهجرة صحيح؟

@ Batta32 متى سيتم إصدار SDK الجديد للاستخدام؟ أنا أقوم ببناء VA مع 13 مهارة وأحد المتطلبات أن تكون مدمجة في TypeScript. أنا أستخدم SDK من الفرع التالي حاليًا لبدء المشروع.

مرحبًا @ tommyJimmy87 & @ tomSauret847 ، قبل نشرها ، يمكنك استخدام الحزم المنشورة في MyGet كإصدارات يومية:

لدمج botbuilder-solutions يوميًا ، لديك خياران مختلفان ، نوصي بالخيار الأول لأنه الخيار الأسهل (ضع في الاعتبار إزالة package-lock و node_modules من برامج الروبوت الخاصة بك) :

  • الخيار 1: إضافة ملف .npmrc يشير إلى السجل https://botbuilder.myget.org/F/aitemplates/npm ، وتحديث package.json لتوجيه الإصدار botbuilder-solutions إلى 4.5.0-preview223
  • الخيار 2: تنزيل ملف tgz botbuilder-solutions للإشارة إليه مباشرةً في package.json بمسار مطلق
npm pack [email protected] --registry https://botbuilder.myget.org/F/aitemplates/npm

إذا كنت ترغب في استخدام generator-botbuilder-assistant ، فيجب عليك إلغاء تثبيته إذا كان لديك بالفعل ثم تثبيت MyGet:

npm uninstall -g generator-botbuilder-assistant
npm install -g [email protected] --registry https://botbuilder.myget.org/F/aitemplates/npm

@ Batta32 أين سنحتاج إلى الإبلاغ عن المشكلات التي نجدها في إصدارات المعاينة؟ لقد قمت بإنشاء VA جديد باستخدام منشئ المعاينة واستخدمت معاينة SDK وتلقيت رسالة خطأ تفيد بإضافة مربع حوار غير صالح عند محاولة تشغيل VA دون أي تخصيص.
خطأ: DialogSet.add (): تمت إضافة مربع حوار غير صالح.

darrenj - ما هو أفضل نهج للإبلاغ عن مشكلات

@ tomSauret847 - في غضون ذلك ، يمكنك مشاركة مشكلتك في هذا الموضوع مع بيئتك وخطوات repro 😊!

تعمل البيئة محليًا على كمبيوتر يعمل بنظام Windows 10
الخطوات: قم بتشغيل مُنشئ المعاينة لإنشاء VA فارغ
تحديث appsettings.json و cognitivemodels.json
أضف ملف .npmrc يشير إلى https://botbuilder.myget.org/F/aitemplates/npm
احذف node_modules و package-lock.json
قم بتشغيل npm install [email protected]
قم بتشغيل تثبيت npm لتثبيت كافة الحزم الأخرى
تشغيل بناء NPM
تشغيل بدء تشغيل npm
ثم أتلقى الخطأ التالي
C: مستخدم سطح المكتب BlankVAtestassistantnode_modulesapplicationinsightsoutAutoCollectionExceptions.js: 34
رمي THIS_IS_APPLICATION_INSIGHTS_RETHROWING_YOUR_EXCEPTION ، // نشأ خطأ في مكان آخر في تطبيقك
^

خطأ: DialogSet.add (): تمت إضافة مربع حوار غير صالح.
في DialogSet.add (C: UsersuserDesktopBlankVAtestassistantnode_modulesbotbuilder-الحوارslibdialogSet.js: 87: 19)
في MainDialog.addDialog (C: UsersuserDesktopBlankVAtestassistantnode_modulesbotbuilder-الحوارslibcomponentDialog.js: 148: 22)
في MainDialog الجديد (C: UsersuserDesktopBlankVAtestassistantlibdialogsmainDialog.js: 34:14)
في الكائن.(C: UsersuserDesktopBlankVAtestassistantlibindex.js: 159: 24)
في Module._compile (داخلي / وحدات / cjs / loader.js: 778: 30)
في Object.Module._extensions..js (داخلي / وحدات / cjs / loader.js: 789: 10)
في Module.load (داخلي / وحدات / cjs / loader.js: 653: 32)
في tryModuleLoad (داخلي / وحدات / cjs / loader.js: 593: 12)
في Function.Module._load (داخلي / وحدات / cjs / loader.js: 585: 3)
في Function.Module.runMain (داخلي / وحدات / cjs / loader.js: 831: 12)

شكرا! لقد أعدنا إظهار المشكلة باتباع خطواتك ، ومع ذلك فهي خطأ في ترتيب كيفية تثبيت التبعيات التي تتسبب في حدوث تعارض عند تثبيت botbuilder-solutions بين الباقي.

image

جرب اتباع الخطوات التالية : (إزالة node_modules و package-lock )

  1. قم بتحديث package.json 4.5.0-preview223 بإصدار botbuilder-solutions

image

  1. قم بتثبيت جميع التبعيات التي تنفذ npm install
  2. بناء الحل تنفيذ npm run build
  3. ابدأ المساعد الافتراضي بتنفيذ npm run start

image

@ tomSauret847 اسمحوا لي أن أعرف إذا كنت ترى أي مشاكل أخرى. نحن بصدد استكمال التحقق النهائي وسندفع البنيات الجديدة إلى npm بمجرد اكتمالها.

مرحبًا darrenj ، لقد تلقيت خطأ عند محاولة حل ملفات lg باستخدام مدير القوالب الجديد ، ما يحدث أساسًا هو أنني أتلقى اللغة en-US من MS Teams ولكني قمت بتعيين en-us فقط (الأحرف الصغيرة) و لن يتم التعرف عليها. ربما تؤدي إضافة أحرف صغيرة هنا if (this.templateEnginesPerLocale.has(locale)) إلى حل المشكلة (LocaleTemplateEngineManager.ts السطر 61). للتحايل على هذه المشكلة في الوقت الحالي ، اضطررت إلى إضافة هذا في index.ts الخاص بي:

const supportedLocales: string[] = ['en-us', 'en-US','de-de'];

supportedLocales.forEach((locale: string) => {
    const localeTemplateFiles: string[] = [];
    templateFiles.forEach(template => {
        // LG template for en-us does not include locale in file extension.
        if (locale === 'en-us' || locale === 'en-US') {
            localeTemplateFiles.push(path.join(__dirname, 'responses', `${ template }.lg`));
        }
        else {
            localeTemplateFiles.push(path.join(__dirname, 'responses', `${ template }.${ locale }.lg`));
        }
    });

    localizedTemplates.set(locale, localeTemplateFiles);
});

هذا يعمل بشكل جيد ولكني لا أعرف ما إذا كان يمكن القيام به بطريقة أفضل.

شكرا. @ Batta32 - هل يمكنك التحقق لمعرفة ما إذا كان لديك التغيير إلى LocaleTemplateEngine في حلول Lib التي تستخدم SDK المقدمة MultiLanguageLG ؟ أتمنى أن يتعامل هذا مع الحالة المختلطة بأناقة ولكن بعض الاختبارات ستكون جيدة للتحقق من صحتها.

@ lzc850612 هل يمكننا إجراء عملية تحقق سريعة باستخدام csharp GA RC للتحقق مرة أخرى من أنها تعمل كما هو متوقع مع لغات الحالة المختلطة القادمة إلى الروبوت في أحد الأنشطة؟

بالتأكيد darrenj ، سوف نتحقق من هذا التغيير!

darrenj شكرًا لك على التحديث بشأن التقدم! واجهت نفس مشكلة اللغة التي أشار إليها تومي جيمي ولكني تجاوزتها بإضافة locale.toLowerCase في localeTemplateManager. أقوم حاليًا بإرفاق مهارة مخصصة بـ VA ولكني ما زلت أتلقى خطأ أحاول تعقبه. تقوم المهارة بإرجاع الخطأ 501 إلى VA ولكنها تعالج الرسالة في وظيفة onMessage في defaultActitivityHandler.ts ، إنها فقط لا تمرر النشاط إلى مربع الحوار الرئيسي حتى تقوم المهارة بمعالجته. لقد أضفت المهارة عن طريق تحديث ملف appSettings.json ، والمهارة هي تلقي النشاط.

@ Batta32 كنت أرغب في التحقق مما إذا كان المسار إلى الأمام لا يزال يتضمن localTemplateEngineManager. لقد لاحظت أنه مفقود من تصميمات المعاينة ولا يوجد سوى responseManager. من الآن فصاعدًا ، هل سنحتاج إلى استخدام مدير الاستجابة أم أن قالب الإعدادات المحلية ستتم إضافته مرة أخرى؟

@ Batta32 لقد تمكنت من تعقب الخطأ الذي كنت
الخطأ: / api / messages / v3 / Conversations / 5659a380-841b-11ea-bed3-831b5a6aa1eb٪ 7Clivechat-dlpskill-emulator-Skillsconvo / activities / 5b61c920-841b-11ea-b148-8581dc55a9bb غير موجود
عندما يتم إلحاق معرف المحادثة في SkillConversationIdFactory ، لا يمكن نشر المهارة مرة أخرى إلى معرف المحادثة الجديد.

تحديث:
كان لدي خطأ مطبعي في نقطة المهارة التي تسببت في هذه المشكلة. بمجرد أن أصحح أنني الآن قادر على إرفاق المهارات وجعلها تتفاعل مع VA.

@ Batta32darrenj أواجه سلوكًا غير متوقع عند محاولة استخدام الدردشة مع VA: في الأساس في كل مرة يسأل فيها المستخدم شيئًا إلى Bot ، فإن introstep يعيد صياغة الرسالة الأولية ، والتي في حالة الدردشة ليست رائعة مثل UX . هل هذا متوقع أم أنني أفتقد شيئًا؟

Screen Shot 2020-04-23 at 11 25 46

(يرجى الانتظار رسالة مخصصة لا تقلق بشأن ذلك
)

@ Batta32 لقد تمكنت من تعقب الخطأ الذي كنت
الخطأ: / api / messages / v3 / Conversations / 5659a380-841b-11ea-bed3-831b5a6aa1eb٪ 7Clivechat-dlpskill-emulator-Skillsconvo / activities / 5b61c920-841b-11ea-b148-8581dc55a9bb غير موجود
عندما يتم إلحاق معرف المحادثة في SkillConversationIdFactory ، لا يمكن نشر المهارة مرة أخرى إلى معرف المحادثة الجديد.

تحديث:
كان لدي خطأ مطبعي في نقطة المهارة التي تسببت في هذه المشكلة. بمجرد أن أصحح أنني الآن قادر على إرفاق المهارات وجعلها تتفاعل مع VA.

@ tomSauret847 ماذا كانت مشكلتك؟ لأنني أواجه نفس الخطأ ولا أفهم ما هو. في المساعد الافتراضي لدي:
"skillHostEndpoint": "https://1c34e472.ngrok.io/api/skills"
وهي نقطة نهاية VA.

Error: /api/skills/v3/conversations/a%3A1QIRXOg6VwVn2aGC-eTj9sj3YYd6YUVrRKf8J7wLrjH1fPYcpn2dYpMyQpr_aHLHSp9Z2SHVzu8lKbdj_ArEh06kvjyF48IG1tgE1ctKTWdIASDloNgy51_eBFoGzwwIN-waSearchSkill-msteams-skillconvo/activities/1588679971133 does not exist at new RestError (/Users/em.tomaselli/Desktop/repository/BMW/wa-search-skill/node_modules/@azure/ms-rest-js/dist/msRest.node.js:1397:28) at /Users/em.tomaselli/Desktop/repository/BMW/wa-search-skill/node_modules/@azure/ms-rest-js/dist/msRest.node.js:1849:37 at process._tickCallback (internal/process/next_tick.js:68:7)

@ Batta32 كنت قادرًا على نشر
خطأ: خطأ في استدعاء معرّف المهارة: "dlpskill" في "https: // {app name} .azurewebsites.net / api / Skills / messages" (الحالة 500).
خطأ: / المعهد / / V3 / الأحاديث / المهارات: 1lFWWXG9CVtdrkA76VLFeS9CbYWzsHVr9mQ4S7BqDpL4K5WNIc0ND6mqaaj_QsSqH-qUU-Gb2vLX3HQ4CpG3ZDPCbR0XKLtJGOqW0kwKUbe2HKv5C9fs1sjLSO4EvoE5h-dlpskill-msteams-skillconvo / الأنشطة / 1588712064379 لا وجود لها
في SkillDialog.(D: homeitewwwrootnode_modulesbotbuilder-DialslibskillDialog.js: 164: 23)
في Generator.next ()
عند الاستيفاء (D: homeitewwwrootnode_modulesbotbuilder-الحوارslibskillDialog.js: 11:58)
في process._tickCallback (داخلي / عملية / next_tick.js: 68: 7)

@ tommyJimmy87 لم أكن أستخدم ngrok للتواصل من VA إلى مهارة محليًا لذلك تمكنت من استخدام المضيف المحلي

مرحبًا @ Batta32 ، أتفق مع @ tomSauret847 على أنه من المحتمل وجود مشكلة ما في قناة Teams.

بعد قليل من التصحيح ، قد أحاول شرح ما اكتشفته:

1) في ChannelServiceHandler ، لم يتم تنفيذ جميع الطرق ، مما يعني أنه عند استدعاء أحد /api/skills سيعود في كل مرة رمز خطأ ؛

أي ملف: ChannelServiceHandler.ts (botbuilder) ، السطر: 219

    protected async onGetActivityMembers(claimsIdentity: ClaimsIdentity, conversationId: string, activityId: string): Promise<ChannelAccount[]> {
        throw new StatusCodeError(StatusCodes.NOT_IMPLEMENTED, `ChannelServiceHandler.onGetActivityMembers(): ${StatusCodes.NOT_IMPLEMENTED}: ${STATUS_CODES[StatusCodes.NOT_IMPLEMENTED]}`);
    }

2) /api/skills/v3/conversations/a%3A1QIRXOg6VwVn2aGC-eTj9sj3YYd6YUVrRKf8J7wLrjH1fPYcpn2dYpMyQpr_aHLHSp9Z2SHVzu8lKbdj_ArEh06kvjyF48IG1tgE1ctKTWdIASDloNgy51_eBFoGzwwIN-waSearchSkill-msteams-skillconvo/activities/1588761991793 في هذه الحالة بدلاً من ذلك ، توجد مشكلة في تحليل معرف المحادثة وتكون نتيجة الخطأ دائمًا أن المورد غير موجود ، ولكن إذا حاولت استدعاء نفس عنوان URL ، فقم بتغيير معرف المحادثة بسلسلة أبسط ستنجح (لكن النتيجة ستظل أن الطريقة لم يتم تنفيذها بسبب النقطة السابقة).

مرحبًا @ tommyJimmy87 ، @ tomSauret847 - آسف على التأخير. سنراجع سيناريو قناة الفرق باستخدام تغييرات GA Skills SDK وسنعود إلى سلسلة المحادثات هذه لاحقًا 😊.

@ tommyJimmy87 - نجحنا في إعادة إظهار المشكلة باستخدام قناة Microsoft Teams. سنعود إلى هذا الموضوع بمجرد حل المشكلة.

شكرا!

مرحبًا @ tommyJimmy87 ، @ tomSauret847 ، وجدنا سبب المشكلة بنجاح.

تكمن المشكلة في أنه يتم استبدال الحرف _ ':' _
على ما يبدو ، يتم تنفيذ هذا السلوك في تبعية أكسيوس لتحل محل الأحرف كما ذكرنا.

أخيرًا وليس آخرًا ، هناك مشكلة في microsoft / botbuilder-js # 2182 والتي تحل محل axios في botbuilder وتم وضع علامة عليها لتكون جاهزة لـ _R10_.

سنقوم بتحديث مستند " المشكلات المعروفة" لشرح المشكلة

أخيرًا ، سنعود إلى هذا الموضوع بمجرد أن يكون لدينا تحديثات جديدة لكم يا رفاق 😊

_ عدم تطابق عناصر المحادثة_
image

_استبدل التبعية ':' إلى '٪ 3A'_
image

@ Batta32 هل تعتقد أنه سيتم إصلاحه قريبًا أم سيستغرق بعض الوقت؟

@ tommyJimmy87 ، @ tomSauret847 - لاحظنا أن المشكلة في ms-rest-js بدلاً من axios .

المشكلة هي عدم تطابق conversationId بين المهارة والمساعد الظاهري. تم طرح هذه المشكلة بسبب استبدال حرف _ ':' _ الخاص بـ _conversationId_ من Teams إلى _ '٪ 3A'_ والذي يجب استبداله مرة أخرى بـ _': '_. لم يتم تنفيذ التحويل الأخير في sendOperationRequest كما يفعل _axios_.

آسف على الخطأ 😊.

_encodeURIComponent لا يستبدل '٪ 3A' بالعودة إلى ':' _
image

_ الاختلافات في الترميز بين Axios و ms-rest-js_
image

@ Batta32 الوكيل الافتراضي https://github.com/Azure/ms-rest-js/blob/1.x/lib/axiosHttpClient.ts

أعتقد أن إحدى طرق حل هذه المشكلة هي استخدام encodeURI ضمن تنفيذ SkillConversationIdFactory. بهذه الطريقة ، لن يغير الوكيل الأساسي المحادثة. id من ما يتم تخزينه داخل المصنع.

شكرًا EricDahlvang ، encodeURI ضمن SkillConversationIdFactory !

EricDahlvang - إضافة encodeURI في SkillConversationIdFactory لا يصلح المشكلة لأن المهارة تقوم بالفعل بترميز conversationId قبل إرسال الأنشطة مرة أخرى إلى المساعد الافتراضي.

لقد أدركنا أن المشكلة قد تكون متعلقة بطول رقم المحادثة عند استلامها من Microsoft Teams. لقد لاحظنا أنه باستخدام conversationId الأصلي ، لم يتم الوصول إلى نقطة نهاية VA ، ومع ذلك ، فإن قطع بعض الأحرف من conversationId يتم إجراؤه بشكل صحيح.

أخيرًا وليس آخرًا ، هذه المشكلة غير موجودة في C #.

_ لم يتم ضرب نقطة النهاية مع المحادثة الأصلية معرّف_
image

_ يتم ضرب نقطة النهاية بالمحادثة المقتطعة معرف_
image

_المسألة غير موجودة في C # _
image

@ Batta32 إذا كان SkillConversationIdFactory يستخدم encodeURI ، فستتلقى المهارة تلك المحادثة وتستجيب لها وفقًا لذلك. أنا متأكد من أن هذا مطلوب.

نعم أيضًا ، هناك مشكلة تتعلق بمعرفات المحادثات الطويلة أثناء استخدام إعادة التفعيل. نذكر كيفية حل المشكلة في هذا النموذج: https://github.com/microsoft/BotBuilder-Samples/blob/master/samples/javascript_nodejs/80.skills-simple-bot-to-bot/simple-root -bot / SkillsConversationIdFactory.js # L21

// يحتوي هذا المفتاح على حد أقصى يبلغ 100 حرف بشكل افتراضي. زيادة restify.createServer({ maxParamLength: 1000 }); في index.js.

EricDahlvang شكرا لك على هذه المعلومات. لقد أضفت التحديث إلى كل من VA والمهارة. أنا الآن قادر على جعل VA يتواصل مع المهارة في قناة Teams دون أخطاء.

شكرا EricDahlvang على المعلومات المقدمة! أنشأنا PR # 3359 لتحسين maxParamLength وكذلك تحديث إصدار @types/restify@^8.4.2 .

شكرًا يا رفاق @ tommyJimmy87 ، @ tomSauret847 ، بمجرد دمج هذه التغييرات ، ستتمكن من اختبارها 😊.

image

@ Batta32 آسف على

مرحبًا @ tommyJimmy87 ، لاحظنا أن SkillHandler في C # و JS لا يحتويان على onUpdateActivity() كما ذكرت ، وفي الوقت نفسه يمكنك إضافة المعالج الخاص بك الممتد من SkillHandler أو ChannelServiceHandler .

darrenj - هل يمكنك التأكد من صحة عدم وجود طريقة onUpdateActivity() في SkillHandler أم أن هناك أي خطة لتنفيذها؟

@ Batta32 لقد جربت هذا بالفعل ، يبدو التنفيذ كالتالي:

    protected async onUpdateActivity(claimsIdentity: ClaimsIdentity, conversationId: string, activityId: string, activity: Activity): Promise<ResourceResponse> {
        return await this.updateActivity(claimsIdentity, conversationId, activityId, activity);
    }

والدالة updateActivity هي التالية:

private async updateActivity(claimsIdentity: ClaimsIdentity, conversationId: string, replyToActivityId: string, activity: Activity): Promise<ResourceResponse> {

        let skillConversationReference: SkillConversationReference;
        try {
            skillConversationReference = await this.conversationIdFactory.getSkillConversationReference(conversationId);
        } catch (err) {
            // If the factory has overridden getSkillConversationReference, call the deprecated getConversationReference().
            // In this scenario, the oAuthScope paired with the ConversationReference can only be used for talking with
            // an official channel, not another bot.
            if (err.message === 'Not Implemented') {
                const conversationReference = await this.conversationIdFactory.getConversationReference(conversationId);
                skillConversationReference = {
                    conversationReference,
                    oAuthScope: JwtTokenValidation.isGovernment(this.channelService) ?
                        GovernmentConstants.ToChannelFromBotOAuthScope :
                        AuthenticationConstants.ToChannelFromBotOAuthScope
                };
            } else {
                // Re-throw all other errors. 
                throw err;
            }
        }

        if (!skillConversationReference) {
            throw new Error('skillConversationReference not found');
        }
        if (!skillConversationReference.conversationReference) {
            throw new Error('conversationReference not found.');
        }

        const activityConversationReference = TurnContext.getConversationReference(activity);

        /**
         * Callback passed to the BotFrameworkAdapter.createConversation() call.
         * This function does the following:
         *  - Caches the ClaimsIdentity on the TurnContext.turnState
         *  - Applies the correct ConversationReference to the Activity for sending to the user-router conversation.
         *  - For EndOfConversation Activities received from the Skill, removes the ConversationReference from the
         *    ConversationIdFactory
         */
        const callback = async (context: TurnContext): Promise<void> => {
            const adapter: BotFrameworkAdapter = (context.adapter as BotFrameworkAdapter);
            // Cache the ClaimsIdentity and ConnectorClient on the context so that it's available inside of the bot's logic.
            context.turnState.set(adapter.BotIdentityKey, claimsIdentity);
            context.turnState.set(this.SkillConversationReferenceKey, activityConversationReference);
            activity = TurnContext.applyConversationReference(activity, skillConversationReference.conversationReference) as Activity;
            const client = adapter.createConnectorClient(activity.serviceUrl);
            context.turnState.set(adapter.ConnectorClientKey, client);

            context.activity.id = replyToActivityId;
            await context.updateActivity(context.activity);
            return;
        };

        // Add the channel service URL to the trusted services list so we can send messages back.
        // the service URL for skills is trusted because it is applied based on the original request
        // received by the root bot.
        AppCredentials.trustServiceUrl(skillConversationReference.conversationReference.serviceUrl);

        await (this.adapter as BotFrameworkAdapter).continueConversation(skillConversationReference.conversationReference, skillConversationReference.oAuthScope, callback);
        return { id: uuid() };
    }

إنها في الأساس نسخة من الوظيفة processActivity التي تم تنفيذها بالفعل في SkillHandler ولكن استدعاء context.updateActivity(context.activity) في النهاية.

قال إنني أتلقى هذا الخطأ:

(node:68325) UnhandledPromiseRejectionWarning: Error: Failed to decrypt conversation id 

ربما هناك شيء ما أفتقده أو أفعله خطأ.

@ tommyJimmy87 - سنحاول إعادة إنتاج السيناريو الخاص بك وسنعود إليك لاحقًا 😊.

@ Batta32 لقد لاحظت على "بطاقة المساعدة" مع المساعد الافتراضي أنها لا تعرض بطاقة المساعدة للمهارة النشطة. عندما تضغط على المقاطعة "المساعدة" أثناء وجودك في حوار المهارة ، فإنها لا تزال تقدم بطاقة المساعدة لـ VA وليس المهارة. لقد قمت بالتحديث إلى الإصدار الأخير الذي تضمن تعيين حالة الخاصية النشطة للمهارات بالمهارة النشطة. أي أفكار حول كيفية إصلاح هذه المشكلة؟ تسجيل الخروج من الحالة ، لا يزال الحوار النشط مسجلاً كحوار لدي في VA وليس المهارة النشطة.

مرحبًا @ tommyJimmy87 ، @ tomSauret847 ، شكرًا للإبلاغ عن هذه المشكلات.

كما [email protected] ، [email protected] و [email protected] تنشر في npmjs واندمجت في فرع master ، يمكنك إنشاء القضايا في مستودع ل شرح المشكلة بشكل أفضل وسنتابعها 😊.

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