المشكلات المعروفة في SDKs وواجهات برمجة التطبيقات

توفر هذه المقالة معلومات حول القيود والمشكلات المعروفة المتعلقة بمجموعات تطوير البرامج (SDK) الخاصة باستدعاء خدمات اتصالات Azure وواجهات برمجة تطبيقات أتمتة المكالمات الخاصة بخدمات الاتصالات.

هام

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

JavaScript SDK

توفر الأقسام التالية معلومات حول المشكلات المعروفة المرتبطة بمجموعات SDK لمكالمات الصوت والفيديو الخاصة بخدمات الاتصالات في جافا سكريبت.

كروم M98 - الانحدار

قدم الإصدار 98 من Chrome تراجعا مع إنشاء غير طبيعي للإطارات الرئيسية للفيديو يؤثر سلبا على دقة دفق الفيديو المرسل لغالبية المستخدمين (70٪ +).

  • هذا هو الانحدار المعروف الذي تم إدخاله على Chromium

تفشل بعض أجهزة Android في سيناريوهات المكالمات باستثناء المكالمات الجماعية.

يفشل عدد من أجهزة Android المحددة في بدء التشغيل وقبول المكالمات والاجتماعات. لن تتعافى الأجهزة التي تواجه هذه المشكلة وستفشل في كل محاولة. هذه هي في الغالب أجهزة Samsung Model A ، وخاصة الموديلات A326U و A125U و A215U.

  • هذا هو الانحدار المعروف الذي تم تقديمه على Chromium.

ينضم مستخدمو iOS 15.1 إلى المكالمات الجماعية أو Microsoft Teams الاجتماعات.

  • في بعض الأحيان عند استلام PSTN الوارد ، سيتم تعليق علامة التبويب التي تحتوي على المكالمة أو الاجتماع. البق webkit ذات الصلة هناوهنا.

يكتم صوت الجهاز ويتوقف عرض الفيديو الوارد عند حدوث انقطاعات معينة على iOS Safari.

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

  • تصل مكالمة واردة عبر PSTN (شبكة الهاتف العامة المحولة) ، وتلتقط الوصول إلى جهاز الميكروفون.
  • على سبيل المثال، يقوم المستخدم بتشغيل فيديو YouTube أو بدء مكالمة FaceTime. يمكن للتبديل إلى تطبيق أصلي آخر التقاط الوصول إلى الميكروفون أو الكاميرا.
  • يقوم المستخدم بتمكين Siri ، والذي سيلتقط الوصول إلى الميكروفون.

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

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

لن تتوقف تدفقات الفيديو الواردة عن العرض إذا كان المستخدم يعمل بنظام التشغيل iOS 15.2+ ويستخدم إصدار SDK 1.4.1-beta.1+ ، فستظل خطوات إلغاء كتم الصوت / بدء التشغيل مطلوبة لإعادة تشغيل الصوت والفيديو الصادرين.

يتعطل iOS مع Safari ويقوم بتحديث الصفحة إذا حاول المستخدم التبديل من الكاميرا الأمامية إلى الكاميرا الخلفية.

قدمت Azure Communications Services Calling SDK الإصدار 1.2.3-beta.1 خطأ يؤثر على جميع المكالمات التي تم إجراؤها من iOS Safari. تحدث المشكلة عندما يحاول مستخدم تبديل دفق فيديو الكاميرا من الأمام إلى الخلف. يؤدي تبديل الكاميرا إلى تشغيل متصفح Safari لتعطل الصفحة وإعادة تحميلها.

تم إصلاح هذه المشكلة في Azure خدمات الاتصالات استدعاء SDK الإصدار 1.3.1-beta.1 +

  • دائرة الرقابة الداخلية سفاري الإصدار: 15.1

لا يؤدي تحديث صفحة إلى إزالة المستخدم على الفور من مكالمته

إذا كان المستخدم في مكالمة وقرر تحديث الصفحة، فلن تقوم خدمة وسائط خدمات الاتصالات بإزالة هذا المستخدم على الفور من المكالمة. سوف ينتظر المستخدم للانضمام مرة أخرى. ستتم إزالة المستخدم من المكالمة بعد انتهاء مهلة خدمة الوسائط.

من الأفضل إنشاء تجارب مستخدم لا تتطلب من المستخدمين النهائيين تحديث صفحة تطبيقك أثناء إجراء مكالمة. إذا قام مستخدم بتحديث الصفحة، فأعد استخدام نفس معرف مستخدم "خدمات الاتصالات" بعد أن يعود هذا المستخدم مرة أخرى إلى التطبيق. من خلال إعادة الانضمام بنفس معرف المستخدم ، يتم تمثيل المستخدم على أنه نفس الكائن الموجود في remoteParticipants المجموعة. من وجهة نظر المشاركين الآخرين في المكالمة، يبقى المستخدم في المكالمة خلال الوقت الذي يستغرقه تحديث الصفحة، لمدة تصل إلى دقيقة أو دقيقتين.

إذا كان المستخدم يرسل الفيديو قبل التحديث، videoStreams فستحتفظ المجموعة بمعلومات البث السابقة حتى تنتهي مهلة الخدمة ويزيلها. في هذا السيناريو، قد يقرر التطبيق مراقبة أي تدفقات جديدة تمت إضافتها إلى المجموعة، وتقديم واحد مع أعلى id.

لا يمكن عرض معاينات متعددة من أجهزة متعددة على الويب

هذا تقييد معروف. لمزيد من المعلومات، راجع نظرة عامة على استدعاء SDK.

لا يمكن تعداد الأجهزة في Safari عند تشغيل التطبيق على iOS أو iPadOS

لا يمكن للتطبيقات تعداد أجهزة السماعات أو تحديدها (مثل Bluetooth) على Safari iOS أو iPadOS. هذا قيد معروف لأنظمة التشغيل هذه.

إذا كنت تستخدم Safari على macOS، فلن يتمكن تطبيقك من تعداد مكبرات الصوت أو تحديدها من خلال إدارة أجهزة خدمات الاتصالات. في هذا السيناريو، يجب تحديد الأجهزة عبر نظام التشغيل. إذا كنت تستخدم Chrome على macOS، يمكن للتطبيق تعداد الأجهزة أو تحديدها من خلال مدير جهاز خدمات الاتصالات.

  • دائرة الرقابة الداخلية سفاري الإصدار: 15.1

قد يؤدي التبديل المتكرر بين أجهزة الفيديو إلى توقف بث الفيديو مؤقتا

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

Bluetooth لم يتم اكتشاف ميكروفون سماعة الرأس أو سماعه أثناء المكالمة على Safari على iOS

لا يدعم Safari سماعات الرأس Bluetooth على iOS. لن يتم إدراج جهاز Bluetooth في خيارات الميكروفون المتاحة، ولن يتمكن المشاركون الآخرون من سماعك إذا حاولت استخدام Bluetooth عبر Safari.

هذا هو قيد نظام التشغيل المعروف. باستخدام Safari على macOS وiOS/iPadOS، لا يمكن تعداد أجهزة السماعات أو تحديدها من خلال إدارة أجهزة خدمات الاتصالات. وذلك لأن Safari لا يدعم تعداد المتحدثين أو اختيارهم. في هذا السيناريو، استخدم نظام التشغيل لتحديث تحديد جهازك.

يمكن أن يؤدي تدوير الجهاز إلى إنشاء جودة فيديو رديئة

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

البيئة التي تحدث فيها هذه المشكلة هي التالية:

  • الأجهزة المتأثرة: Google Pixel 5 و Google Pixel 3a و Apple iPad 8 و Apple iPad X
  • مكتبة العميل: الاتصال (جافا سكريبت)
  • المتصفحات: سفاري، كروم
  • أنظمة التشغيل: آي أو إس، أندرويد

تبديل الكاميرا يجعل الشاشة تتجمد

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

البيئة التي تحدث فيها هذه المشكلة هي التالية:

  • الأجهزة المتأثرة: جوجل بكسل 4a
  • مكتبة العميل: الاتصال (جافا سكريبت)
  • المتصفح: كروم
  • أنظمة التشغيل: آي أو إس، أندرويد

مشكلة في إشارة الفيديو عندما تكون المكالمة في حالة اتصال

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

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

تعداد الأجهزة أو الوصول إليها ل Safari على macOS وiOS

في بيئات معينة، قد تلاحظ إعادة تعيين أذونات الجهاز بعد فترة زمنية معينة. على نظامي التشغيل macOS وiOS، لا يحتفظ Safari بالأذونات لفترة طويلة ما لم يكن هناك دفق تم الحصول عليه. أبسط طريقة للتغلب على ذلك هي استدعاء واجهة برمجة التطبيقات ، قبل استدعاء DeviceManager.askDevicePermission() واجهات برمجة تطبيقات تعداد الأجهزة الخاصة بمدير الجهاز. تتضمن DeviceManager.getCameras()واجهات برمجة تطبيقات التعداد هذه ، و DeviceManager.getSpeakers()DeviceManager.getMicrophones(). إذا كانت الأذونات موجودة، فلن يرى المستخدم أي شيء. إذا لم تكن الأذونات موجودة، فستتم مطالبة المستخدم بالأذونات مرة أخرى.

البيئة التي تحدث فيها هذه المشكلة هي التالية:

  • الجهاز المتأثر: iPhone
  • مكتبة العميل: الاتصال (جافا سكريبت)
  • المتصفح: سفاري
  • نظام التشغيل: آي أو إس

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

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

قد يؤدي استخدام مكتبات الجهات الخارجية أثناء المكالمة إلى فقدان الصوت

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

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

البيئة التي تحدث فيها هذه المشكلة هي التالية:

  • المتصفح: سفاري
  • نظام التشغيل: آي أو إس

قد يكون سبب هذه المشكلة هو أن الحصول على البث الخاص بك من نفس الجهاز سيكون له تأثير جانبي يتمثل في الوقوع في ظروف السباق. قد يؤدي الحصول على تدفقات من أجهزة أخرى إلى عدم كفاية عرض النطاق الترددي ل USB / IO ، وسيرتفع sourceUnavailableError المعدل بشكل كبير.

دعم البث المتزامن

Simulcast هي تقنية يقوم العميل من خلالها بتشفير نفس دفق الفيديو مرتين ، بدقة ومعدلات بت مختلفة. ثم يسمح العميل لخدمات الاتصالات بتحديد الدفق الذي يجب أن يتلقاه العميل. تدعم SDK لمكتبة الاتصال بخدمات الاتصالات Windows أو Android أو iOS إرسال تدفقات البث المتزامن. لا تدعم حزمة تطوير البرامج (SDK) لخدمات الاتصالات حاليا إرسال تدفقات البث المتزامن إلى الخارج.

واجهات برمجة تطبيقات أتمتة المكالمات لخدمات الاتصالات

فيما يلي مشكلات معروفة في واجهات برمجة تطبيقات أتمتة المكالمات لخدمات الاتصالات:

  • المصادقة الوحيدة المدعومة حاليا لتطبيقات الخادم هي استخدام سلسلة اتصال.

  • إجراء مكالمات فقط بين الكيانات التي لديها نفس مورد خدمات الاتصالات. يتم حظر الاتصال عبر الموارد.

  • لا يسمح بإجراء المكالمات بين المستخدمين المستأجرين لمستخدمي Microsoft Teams وخدمات الاتصالات أو كيانات تطبيق الخادم.

  • إذا طلب أحد التطبيقات هويتين أو أكثر من هويات PSTN ثم قام بإنهاء المكالمة، إسقاط المكالمة بين كيانات PSTN الأخرى.

قيود المكالمات الجماعية لمستخدمي JS Web Call SDK

يمكن لما يصل إلى 100 مستخدم الانضمام إلى مكالمة جماعية باستخدام JS Web Call SDK.

محاكيات واجهة برمجة تطبيقات Android

عند استخدام محاكيات واجهة برمجة تطبيقات Android على Android 5.0 (مستوى واجهة برمجة التطبيقات 21) و Android 5.1 (مستوى واجهة برمجة التطبيقات 22) ، من المتوقع حدوث بعض الأعطال.