كيفية إنشاء MUC وإرسال الرسائل إلى MUC الموجود باستخدام Python و XMPP

StackOverflow https://stackoverflow.com/questions/3528373

  •  30-09-2019
  •  | 
  •  

سؤال

كنت أتساءل عما إذا كان يمكن لأي شخص هنا تقديم بعض عينات التعليمات البرمجية في السيناريوهات التالية. أنا مهتم بشكل خاص باستخدام XMPPPY للقيام بذلك لأنني أستخدم المكتبة بالفعل لتطبيقي ، لكن المكتبات الأخرى موافق أيضًا. من المؤسف أن موقع XMPPPY Project لا يحتوي على أي عينات على هذا. تصفح مستندات API الخبير/المتقدم ، لم أستطع معرفة كيفية القيام بذلك ، أم أن الدردشة متعددة المستخدمين (MUC) غير مدعومة بـ XMPPPY؟

  • قم بإنشاء مختبر من خلال دعوة مستخدمين معينين (قل 2 أو 3)

  • أرسل رسالة إلى DUC موجود (على افتراض أنك تعرف أنه مقبض أو لقب MUC JID)

  • ابحث عن MUCs الموجودة على خادم XMPP ، والحصول على JID أو الاسم المستعار ، وما إلى ذلك. إذا تم ذلك عن طريق الحصول على قائمة ، فإننا نريد فقط البحث عن MUCS ، وتجاهل المستخدمين.

لقد وجدت نوعًا من الإجابة هنا ، ولكن ربما يتعين عليّ أن أتعلم مكالمات API جديدة للمكتبة ومعرفة كيفية القيام بالسيناريوهات المذكورة أعلاه لأن هذه العينة لا تغطيها جميعًا:

PYXMPP: برنامج تعليمي سريع لإنشاء عميل مخاط؟

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

لا يوجد حل صحيح

نصائح أخرى

يدعم XMPPPY استخدام خدمات MUC ، ولكن الدعم أساسي للغاية وسيكون هناك حاجة إلى بعض التعليمات البرمجية الإضافية لإدارة غرف متعددة.

"للانضمام" إلى غرفة مخاط ، تحتاج إلى بث وجودك إلى JID.

conn.send(xmpp.Presence(to="%s/%s" % (room, nickname)))

ثم لإرسال الرسائل ، يمكنك إرسالها باستخدام نوع رسالة "GroupChat" إلى الغرفة JID.

msg = xmpp.protocol.Message(body=text)
msg.setTo(room)
msg.setType('groupchat')
conn.send(msg)

أما بالنسبة لسؤالك فيما يتعلق بإيجاد غرف المخاط ، فسيتم ذلك عن طريق اكتشاف الخدمة.

على الرغم من أنني لا أعرف عن واجهة MUC محددة هناك ، إلا أن XMPPPY يدعم الرسائل المخصصة ، لذا فهو يدعم XMPP بالكامل.

للانضمام إلى الدردشة ، تحتاج إلى إرسال وجود Stranza ، conn.send(xmpp.Presence(to='{0}/{1}'.format(room, nick)))

لإرسال رسالة للدردشة:

    stranza = "<message to='{0}' type='groupchat'><body>{1}</body></message>".format(room, text)
    conn.send(stranza)

بالنسبة لإنشاء دردشة جديدة أو البحث عنها في قائمة ، ليس لدي رمز جاهز في متناول اليد ، ولكن من السهل الكتابة بنفس الطريقة ، فقط ابحث عن stranzas المطلوبة في Xeps:

http://xmpp.org/extensions/xep-0045.html#createroom

http://xmpp.org/extensions/xep-0045.html#disco-rooms

http://xmpp.org/extensions/xep-0045.html#invite

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top