Protocole msn [Résolu]

Signaler
Messages postés
50
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
8 mars 2007
-
cs_phm
Messages postés
49
Date d'inscription
jeudi 17 janvier 2002
Statut
Membre
Dernière intervention
23 avril 2009
-
Salut à tous,

(parenthèse: lorsque j essaie de mettre une apostrophe sous firefox ça me met le champ de recherche, vous aussi ? lol, je me passerai donc des apostrophes)

Donc, je cherchais un peu comment utiliser msn (wlm..) autrement que par le client et les sites alternatifs tels que ebuddy; j ai trouvé une class ici : http://flumpcakes.co.uk/php/msn-messenger, mais j'ai (tiens les apostrophes remarchent) une erreur quand j'essaie de la faire fonctionner: je me demande si le protocole msn9 sorti avec la version 6 de msn, n'est pas obsolète? Avec la migration vers Live...

Vala, donc je souhaitais savoir si je dois changer quelque chose au niveau des urls des serveurs (pour ceux qui ont regardé la class; ca serait plausible, genre login.live.com au lieu de login.hotmail.com), ou si je peux abandonner direct, ou si je dois décortiquer le code de ebuddy, ou si y'a une autre source...

Merci à tous

8 réponses

Messages postés
131
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2011

salut,
n'ai pas regardé ta classe, mais je puis te confirmer que le protocole MSNP9 fonctionne toujours (suis dessus actuellement en C#); tu disposes avec celui-ci des fonctionnalités d'un client MSN version 5.x, pour WLM il te faudra adopter la version 15 du protocole (un peu plus complexe à mettre en oeuvre).

Quelques infos sur MSNP, qui pourront peut être t'être utiles:
http://msnpiki.msnfanatic.com/index.php/Main_Page
http://www.hypothetic.org/docs/msn/general/http_examples.php
http://www.venkydude.com/articles/msn.htm
Bon courage ...
Messages postés
50
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
8 mars 2007

ok merçi,

j'ai finalement trouvé, la classe fonctionnne avec easyphp, bon, ça affiche que des lignes et des lignes de 'language msn', genre LST moi@hotmail.fr 11 0 , donc pour arriver à quelque chose qui ressemble à msn, y'a du boulot...
va falloir créér une fonction qui analyse les intructions (USR, LQR, LST...) pour en faire quelque chose...
je vais jeter un oeuil aux autres sources, voir ce qu'elles disent.

Merci zatt.
Messages postés
131
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2011

En gros tu viens toi même de donner la réponse, il s'agit du protocole MSNP (LST est la commande qui te renvoie la liste de tes contacts); si tu fouilles les docs regardes du côté des commandes où tu trouveras les traductions, ce qui t'éclairciras un peu plus.
Tu dois effectivement traiter toutes ces lignes à travers le code pour obtenir quelque chose de fonctionnel, mais la base de l'échange client-serveur est  là.

Te conseille également d'essayer d'identifier ton ID de transaction, qui doit être incrémentée lors de chaque échange, et de te préocuper des commandes CHL, auxquelles tu dois répondre par une chaine encryptée md5.
Messages postés
50
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
8 mars 2007

mon dieu...

j'ai un peu décortiqué, là... donc je constate qu'évidemment envoyer des messages au serveur est vachement simple... en revanche, c'est l'analyse des réponses qu'est un peu plus chaude.
dans un premier tems, je vais essayer d'afficher la liste des contacts. J'ai regardé la source de coucou747 qui n'est hélas plus à jour; je vais tenter de me servir de la fonction explode, mais je me demande si ça va pas beuger dans le cas d'espaces dans les pseudos...

si j'ai ça:
$a="<<< LST youri.lcd@hotmail.fr %20{glande} 11 0"
et que je fais:
$a=explode(" ", $a);
$a=$a[3]
j'aurai
$a=youri.lcd@hotmail.fr

mais c'est fabuleux ! et en plus $a[4] retournera le pseudo: je viens de m'apercevoir que les espaces des pseudos étaient remplacés par des %20 ! plus de souçis du coup, un petit coup de ereg_replace (ou array ?) et le tour est joué...

ouais, pi un array comme l'avait fait coucou747 pour les smilies.
pi dans un second temps, p'tèt, un interpréteur de couleurs messenger Plus! comme sur eBuddy, ahah.

Une fois que tout ça sera fait, il restera un problème au niveau des conversations que j'entamerai aussitôt... à votre avis (et à ton avis, zatt...) quel est le moyen le plus  efficace pour rafraîchir la page ?
deux solutions, je pense:
-la page qui s'actualise d'elle-même à intervalles réguliers, grâce aux métas ou à JS. hyper-simple mais un peu naze;
-ajax: un script vérifie sur une autre page l'arrivée de nouveaux messages... dans ce cas, soit il comparerait le texte déjà présent avec le nouveau (mais trop lourd, trop lent) soit, plus intelligent, il comparerait les timestamps du dernier message de la page en cours et de celui de la page appelée par le script. Et en cas de nouveau message :
 *il actualiserait la page;
 *il mettrait un truc du genre converse.value=converse.value+
...
mais houlàlà, ça veut dire qu'il va falloir quérir uniquement les nouveaux messages... un peu lourd... et puis, pour ce que j'ai mis 8 lignes plus haut, va falloir faire en sorte:
-soit que la page puisse gérer plusieurs conversations en même temps (encore le moins chiant...),
-soit générer une page pour chaque conversation, lourd et ça va ralentir mon pauv' serveur Free.

ce que j'aimerais obtenir au final, c'est un rafraîchissement transparent pour l'utilisateur, sans entendre le vieux "clic" d'internet explorer... finalement, dans ce cas, seul JS reste en lice...

qu'en pensez-vous ?

zatt, tu m'as parlé de deux choses, mais je sais pas trop ce que c'est:
-à quoi sert l'ID de transaction ? je ne vois pas à quoi ça correspond dans les échanges client-serveur... ?
s'agirait-il des
<<< USR 4,
>>> SYN 5
et autres
>>> CHG 6
?
-les commandes CHL:

<<< CHL 0 14497748790586454292
>>> QRY 7 msmsgs@msnmsgr.com 32 356a87d8698e65fee7eb0e2e92e3930c

j'ai cru entrapercevoir un bout de doc là-dessus sur hypotetic.org; ça sert à quoi, concrètement ? Je suppose que si je renvoie pas de réponse au serveur, je me fais virer ? et du coup, est-ce que je dois rajouter quelque chose vu que mon client a l'air de déjà pouvoir répondre ?

ahah pas trop assomé(s) de questions ?  En tout cas, merçi d'avance pour les réponses...
Messages postés
131
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2011

alors, après une longue lecture (:p), dans le désordre, en tout aussi long:

effectivement, les espaces sont remplacés par le code html %20, ce qui est valable pour tous les échanges et comme tu explode( ) sur l'espace, tu récupères effectivement chaque champs dans ton tableau $a. La fonction est valable pour toutes les lectures ?
tu px également penser à une fonction (ou une méthode ?) générique pour l'envoi de tes commandes (commande, param), et qui rajouterait automatiquement l'ID (dernier chiffre, en auto incrémentation)
<<< USR 4
>>> SYN 5
>>> CHG 6
je pense que tu as saisi la logique, c'est tout simplement +1 (sinon: déconnecté)
un peu plus compliqué pour les challenges CHL, qui consistent en un test du serveur:
tu dois récupèrer la chaine (1449...), et lui ajouter une info identification client
ensuite tu l'encodes en md5, et tu lui renvoies la chaine hexa avec la commande QRY (356a87...), ou sinon, même punition.
http://msnpiki.msnfanatic.com/index.php/Notification:Challenges#Client_identification_information

pour le rafraichissement de tes pages, il serait effectivement dommage (et très laid) de recharger toute la page, d'autant plus que tu devras alors de préocuper des commandes déjà envoyées (protocole, donc: la loi du serveur=strict)... ou peut être alors une pseudo-frame et qui contiendrait le minima ? je pense qu'ajax est une bonne solution (ou un tout simple innerHTML);
le mieux serait que tu puisses travailler sur l'échange du flux, plutôt que sur un timer (quand même pas très élégant); et effectivement tu conserves le texte déjà reçu dans une var et tu le concatènes avec la dernière chaine reçue.

encore un peu de doc:
http://www.vbfrance.com/code.aspx?ID=26217 (protocole bien documenté, peu de code vb)

... et encore une fois, bon courage
Messages postés
50
Date d'inscription
mercredi 15 juin 2005
Statut
Membre
Dernière intervention
8 mars 2007

merci beaucoup zatt pour tes renseignements.

là j'ai une base, mais je bloque en fait sur le truc qui me permettra d'extraire des informations de la class. 'fin bref, je trouverai bien.
Messages postés
131
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
23 septembre 2011

qqs petits 'trucs' qui pourraient t'être utiles:
- si tu récupères les lignes de commande du protocole, et les affiches, tu pourras suivre l'échange client/server, ce qui te sera certainement très utile en cas de bug; en même temps ce serait une bonne occasion pour ton implémentation Ajax.
- avec un client msn officiel (et un 2e compte hotmail), tu peux suivre ton profil e tester en temps réel (changement de statut, de message perso ...et par la suite pour les messages) .
Pour les classes php, tu trouveras des tutos un peu partout...
Et si tu veux vraiment bien faire, en même temps que tes classes, réfléchis à la conception (architecture) de ton appli, à la meilleure manière pour la faire évoluer (classes, découpage des couches...)
Messages postés
49
Date d'inscription
jeudi 17 janvier 2002
Statut
Membre
Dernière intervention
23 avril 2009

Bonjour,


du fait d'un parefeu très sévère au bureau, je voudrai utiliser un site perso pour y créer un webmessenger à l'aide de msnp.

seulement, je débute en php et je recherche qq exemples pour initier une conversation envoyer et recevoir des messages.

base que j'améliorerai petit à petit (parce qu'au boulot je bosse quand même 95% du temps !)
vous allez me dire que je suis un foutu cossard, mais je ne me sens pas de le faire.

quelqu'un aurait-il qq infos, pistes pour m'aider ?


Merci


ps : j'ai récupéré msnp9.class.php