يتحدث المقال السابق عن كيفية الوصول إلى حساب WeChat الرسمي. تتحدث هذه المقالة عن الوظائف الأساسية للحساب الرسمي لـ WeChat: الاستقبال والرد على الرسائل العادية. بالحديث عن الرسائل العادية ، ما هي الرسائل العادية التي تحددها حسابات WeChat الرسمية؟ تتضمن الرسائل العادية الواردة المذكورة في وثائق مطور WeChat الفئات التالية :
1. رسالة نصية
2. رسالة الصورة
3. رسالة صوتية
4. رسالة الفيديو
5. رسالة فيديو قصيرة
6. رسالة الموقع الجغرافي
7. رسالة الارتباط (رسالة الرد السلبي)
تشمل الرسائل العادية التي ترد بشكل سلبي:
1. الرد على الرسائل النصية
2. الرد على رسالة الصورة
3. الرد على الرسائل الصوتية
4. الرد على رسائل الفيديو
5. الرد على الرسائل الموسيقية
6. الرد على الرسائل النصية
في الواقع ، فإن الإجراءين لتلقي الرسائل ورسائل الرد السلبي لا ينفصلان. هذا سيناريو تفاعلي. بشكل عام ، سيعطي الحساب الرسمي ردود مقابلة من خلال تحليل الرسائل المستلمة. بالطبع ، لا يمكن استبعاد بعض الشركات الخاصة.
كيفية تلقي الرسائل
لن يتم سرد تنسيق XML للرسائل الواجب استلامه في الرسائل السبعة هنا. يرجى الانتقال إلى المستند الرسمي لعرضها ، مع تعريفات تنسيق محددة وأوصاف السمة. التنسيق بسيط للغاية. تشمل السمات المشتركة الأساسية TouserName و FromuserName و CreateTime و MsgType و MSGID ، وكل نوع له سمات خاصة به.
بعد رؤية ذلك ، أفهم في الواقع أن عملية تلقي الرسائل هي في الواقع عملية الحصول على XML المطلوبة بواسطة المنشور ثم تحليل XML. لا يزال إدخال طلب البريد هو العنوان للوصول إلى حساب WeChat الرسمي المذكور سابقًا. ستنتقل جميع طلبات الحساب الرسمي بأكمله إلى هذا الإدخال ، ولكنه طلب عند الوصول إليه ، وفي حالات أخرى يكون طلبًا آخر. يستخدم DOM4J لمعالجة XML. رمز معالجة XML كما يلي. يمكنك استدعاء طريقة parsexml في طريقة نشر servlet:
الخريطة الثابتة العامة parsexml (طلب httpservletrequest) يلقي استثناء {// تخزين النتيجة المحلية في خريطة hashmap = new hashmap () ؛ // الحصول على دفق الإدخال من طلب request Stream inputStream = request.getInputStream () ؛/** اقرأ محتوى الجسم من الطلب سيؤدي إلى نهاية القراءة التي تنتهي من ملف القراءة. استثناء متداخل:* نهاية الأوان من سلسلة الملفات requestbody =* inputStream2String (inputStream) ؛ System.out.println (requestBody) ؛*/// اقرأ دفق الإدخال saxreader reader = new SaxReader () ؛ مستند وثيقة = reader.read (inputStream) ؛ // احصل على عنصر عنصر الجذر XML = // election element element (element e exently e exhail e exhat e exhat e exement e exember element e exember element (element e exhail e element e element e exement e exement e exement (element e element e exhation elementlist) map.put (e.getName () ، -1) {baos.write (i) ؛} إرجاع baos.tostring () ؛} كيفية الرد بشكل سلبي على الرسائل
أدناه ، أظهر الرسالة التي تقوم بإنشاء رد بناءً على هذا المنطق ، وتلقي الرسالة النصية "نص" والرد على الرسالة النصية ؛ استلام "الصورة" والرد على رسالة الصورة ؛ تلقي "الصوت" والرد على الرسالة الصوتية ؛ استلام "الفيديو" ، والرد على رسالة الفيديو ؛ تلقي "الموسيقى" ، والرد على رسالة الموسيقى ؛ استلام "الصورة" والرد على رسالة الصورة.
الرد على الرسائل النصية كتفسير:
<xml> <TouserName> <! الجراحة) </createTime> <sggtype> <!
يمكن الحصول على أول سمتين من الرسالة المستلمة ، وتنسيق الرسائل المستلمة كما يلي:
<xml> <touserName> <! نص]]> </content> <SGID> 1234567890123456 </sggid> </sml>
اسم touserName في تنسيق الرسائل المستقبلة هو اسم FromuserName الذي يرد على الرسالة ، والاسم من الاسم من تنسيق رسالة الاستلام هو اسم touserName الذي يرد على الرسالة.
CreateTime هو الطابع الزمني المرسلة بواسطة الرسالة. msgType هو نوع الرسالة والنص نص. المحتوى هو محتوى الرسالة.
الرد على كل نوع من الرسائل هو إنشاء محتوى تنسيق XML لهذا النوع. التنسيقات متشابهة ، لكن تنسيقات الموسيقى والفيديو والصوت والرسوم البيانية أكثر تعقيدًا قليلاً من محتوى XML الذي تم إنشاؤه بواسطة الرسائل النصية. للحصول على التفاصيل ، يرجى الرجوع إلى الوثائق الرسمية. لن أخوض في التفاصيل هنا ، وأعتقد أنك ستفهمها في لمحة.