Creare un componente per Live Messenger

Prima di iniziare con il post vorrei ringraziare tutti coloro che hanno letto e/o commentato il mio primo post, detto questo, iniziamo!
Sviluppare componenti per windows live messenger è molto semplice, in questo post spiegherò per passi il procedimento per creare un semplice bot che risponde automaticamente ad un messaggio.

Obiettivo
Si vuole creare un componente "bot" per automatizzare la funzione di risposta in windows live messenger usando Visual C#.

Premessa
Windows live messenger di default ha delle funzioni nascoste, tra le quali la funzione di installazione manuale di componenti esterni. In questo post vedremo anche come abilitare questa funzione e installare il nostro bot.

1° Step
Creiamo un nuovo progetto "libreria di classi" in Visual Studio, creiamo una classe e chiamiamola AddIn.

Aggiungiamo nelle direttive la seguente using "Microsoft.Messenger" e facciamo ereditare alla nostra classe AddIn l'interfaccia "IMessengerAddIn". Ok, adesso possiamo iniziare con la programmazione del componente.

2°Step
Iniziamo con il dichiarare alcune variabili private

   1:  //in seguito servirà per catturare l'istanza di messenger
   2:  private MessengerClient m_MessengerClient;
   3:   
   4:  //implemento la classe per la risposta
   5:  private OutgoingMessage m_OutMessage = null;

adesso inizializziamo le nostre variabili private, diamo qualche proprietà al nostro componente e catturiamo i messaggi in ingresso da messenger

   1:   public void Initialize(MessengerClient messenger)  
   2:   { 
   3:    //catturiamo l'istanza di messenger 
   4:    m_MessengerClient = messenger; 
   5:    //inizializzo la classe per la risposta 
   6:    m_OutMessage = new OutgoingMessage();
   7:   
   8:    //Proprietà al componente - Descrizione e Nome 
   9:    m_MessengerClient.AddInProperties.Description = "Add-in"; 
  10:    m_MessengerClient.AddInProperties.FriendlyName = "Elenoire Add-in";
  11:   
  12:    m_MessengerClient.IncomingTextMessage += 
new EventHandler<IncomingTextMessageEventArgs>
(m_MessengerClient_IncomingTextMessage);
  13:   }

fatto questo manca solo una cosa, il metodo che elabora i messaggi e che invia la risposta in automatico, vediamo come fare

   1:   private void m_MessengerClient_IncomingTextMessage
        (object sender, IncomingTextMessageEventArgs e)
   2:   {            
   3:    //risposta automatica  
   4:    string autoResponse = ("Hello " + e.UserFrom.FriendlyName).ToString();
   5:   
   6:    //richiamo il metodo per inviare la risposta all'utente 
   7:    m_MessengerClient.SendTextMessage( autoResponse,e.UserFrom); 
   8:   }

Adesso siamo pronti, compilate la vostra solution e provvediamo all'installazione.

3° Step

In questo step vedremo come abilitare le funzionalità nascoste di windows live messenger, spostarsi quindi nel registro di sistema, Esegui->regedit cliccare su continua e andare nella voce HKEY_CURRENT_USERS\Software\Microsoft\MSNMessenger e aggiungere un valore DWord, chiamiamolo "AddInFeatureEnabled" e settiamolo a 1.

A questo punto dobbiamo solo inserire la nostra dll (risultato della compilazione) come componente aggiuntivo di messenger.
Apriamo messenger, effettuare il login e spostarsi nelle impostazioni, adesso se tutto è andato a buon fine dovremmo avere la scheda "componenti aggiuntivi", spostiamoci li e installiamo la nostra dll seguendo i passi di messenger.

Conclusione

Abbiamo creato un semplice bot che ci permette di generare automaticamente un messaggio in risposta ai nostri contatti che ci inviano un messaggio, abbiamo inoltre sbloccato una funzione nascosta di messenger.

Technorati Tag: ,,

posted @ mercoledì 30 luglio 2008 8.24

Print

Comments on this entry:

# re: Creare un componente per Live Messenger

Left by zaragon at 30/07/2008 11.12
Gravatar
Complimenti per il post, veramente interessate. Proverò subito...!

# re: Creare un componente per Live Messenger

Left by Riccardo at 30/07/2008 11.56
Gravatar
Ciao, bel post!
Avevo già visto esempi del genere ed ora ho scritto una dll che esegue questo codice ma ho una domanda, quando dico a messenger di caricare il mio componente aggiuntivo mi da questo errore:
"Verifica che il nome della classe del componente aggiuntivo corrisponda al nome file dell'assembly del componente aggiuntivo"

che ne pensi?
Grazie, R.

# re: Creare un componente per Live Messenger

Left by Fabrizio Lapiello at 30/07/2008 12.05
Gravatar
Ciao grazie per i complimenti, il problema stà nel fatto che messenger non riesce ad accedere alla classe che hai creato... praticamente basta rinominare la dll in questo modo nomedll.nomeclasse.dll.
Altro problema potrebbe essere che stai tentando di usare file esterni oltre alla dll e quindi hai bisogno di dichiarare la dll nel gac di windows...

# re: Creare un componente per Live Messenger

Left by Marco Minerva at 30/07/2008 15.23
Gravatar
Ottimo post... Ma hai dimenticato di dire che, per far funzionare il tutto, bisogna prima aggiungere un riferimento all'assembly MessengerClient.dll, contenuto nella directory di installazione di Windows Live Messenger.

# re: Creare un componente per Live Messenger

Left by Fabrizio Lapiello at 30/07/2008 15.27
Gravatar
Grazie per la segnalazione, in effetti avevo completamente dimenticato di dare indicazioni sul riferimento.

# re: Creare un componente per Live Messenger

Left by Robbie at 31/07/2008 15.27
Gravatar
Per aggiungere invece uno streaming?? Vi spiego ogni qualvolta parte messenger deve aprire lo streaming di una radio web.... come faccio???

# re: Creare un componente per Live Messenger

Left by Fabrizio Lapiello at 31/07/2008 18.11
Gravatar
non credo sia possibile richiamare software per la riproduzione di uno streaming da messenger. Potrebbe comunque provare a richiamare media player semplicemente richiamandolo via codice.

# Elenoire bot for Windows Live Messenger

Left by Fabrizio Lapiello at 06/09/2008 19.57
Gravatar
Elenoire bot for Windows Live Messenger

# re: Creare un componente per Live Messenger

Left by Robbie at 23/09/2008 17.15
Gravatar
Ho fatto una DLL che utilizza Windows Media Player e l'ho anche compilata. Oltre alla mia dll ha generato altre due dll una AxInterop.WMPLib.dll e una Interop.WMPLib.dll mettendo tutto sotto un'unica cartella e agganciando la DLL a messenger, il programma mi risponde "Verifica che il nome della classe del componente aggiuntivo corrisponda al nome file dell'assembly del componente aggiuntivo" come mai?? dove sbaglio?? Chi mi può aiutare??

# re: Creare un componente per Live Messenger

Left by Fabrizio Lapiello at 23/09/2008 17.19
Gravatar
così a occhio non sò dirti... dovrei visionare il progetto... se puoi inviami il tutto per mail e vedo di fare delle prove e ti faccio sapere
la mail è questa
fabrizio.lapiello@hotmail.it

# pippo: Creare un componente per Live Messenger

Left by pippo at 17/04/2009 16.09
Gravatar
cosa e' visual studio??

Your comment:



 (will not be displayed)


 
 
 
Please add 5 and 8 and type the answer here:
 

Live Comment Preview: