Mai multe despre agentul de protocol

La Habr a scris deja despre cum funcționează agentul Mail.Ru. În prezent, nu există o documentație oficială pentru protocolul din domeniul public, deci trebuie să investigați dispozitivul într-un mod experimental. În acest articol, voi discuta despre trimiterea de mesaje text formate și despre crearea și trimiterea de mesaje la conferință.






Câteva cuvinte despre protocol

Mesajele sunt transmise în pachete de un anumit format. Primele 44 octeți sunt antetul, care arată astfel:

Numerele de aici sunt transmise în format UL, care arată ca 16 octeți scris de la dreapta la stânga. Astfel, numărul 10 va arăta ca 00 00 00 0A. Așa că vom împacheta în UL:

Textul este trimis în format LPS - șiruri de caractere cu lungimea specificată (lungimea este dată sub forma UL). Îl vom împacheta în felul următor:

De asemenea, va trebui să împachetăm liniile în LPS și în alte codificări:

Mesaje text cu formatare

Să vedem cum arată mesajele. Câmpul msg din antet trebuie completat cu o constantă 0x1008, altfel pachetul de mesaje este:

Ultima componentă a pachetului - parte a mesajului asociat formatării textului. Dacă nu avem nevoie de formatare, rtf_part ar trebui să fie format dintr-un spațiu. În acest caz Mail.Ru Agentul la care va veni acest mesaj va folosi fonturile implicite în agentul destinatarului.

Dacă vrem să trimitem un mesaj formatat, ultima parte a pachetului trebuie să fie LPSZ (rtf_part), unde:







Ultimul element este culoarea de fundal, atunci când mesajul este primit, fereastra de chat va schimba întreaga culoare.
rtf pentru scrierea "qwerty" arată astfel:

Puteți vedea că prima literă este scrisă într-un singur font, iar restul este scris în cealaltă. Nu pot explica acest comportament, dar rtf-ul generat de Mail.Ru Agentul pe care am reușit să îl aduc așa. rtf care nu au această proprietate rămân valabile. Alți parametri (limba, tabelul fontului, limba rusă) afectează validitatea rtf.

Rămâne de remarcat că, dacă rtf-parte a mesajului nu este goală, va veni în mesaj. Dacă este specificată partea text a mesajului, atunci acest text va fi văzut în fereastra de agendă Pop-up Mail.Ru Agent.

conferință

Dacă pentru a începe un chat cu un alt contact, trebuie doar să trimiteți un mesaj, apoi pentru a începe comunicarea în cadrul conferinței, trebuie să faceți câteva situații.

Creați o conferință

Fiecare conferință are propriul nume unic, care arată ca [email protected], pe care îl primim de la server ca răspuns la un astfel de mesaj:

Ca răspuns la acest mesaj vine un mesaj de la server cu același număr în antet și un id. După primirea unui răspuns de la server, puteți trimite mesaje la conferință.

Trimiterea mesajelor la conferință

Pentru a trimite un mesaj la conferință, trebuie să trimiteți două pachete. Primul pachet nu are o sarcină semantică, este pregătitor:

Și acum, direct, mesajul:

Arată ca un mesaj obișnuit cu destinatarul conferinței.

Ieșiți de la conferință

Nu a fost posibil să se înțeleagă cum să se obțină numărul absolut al conferinței, dar experimental a constatat că identificarea chat-ului nu are loc pe ea. Prin urmare, puteți specifica orice număr rezonabil, de exemplu, 42.

Cercetarea mea este departe de a fi completă, așa că voi fi mulțumit de orice corecții și completări.







Articole similare

Trimiteți-le prietenilor: