Bueno, este codigo no lo he creado 100% yo, ya que me lo aprendi de memoria, y traduci algunas cosas al español, para poder usarlo necesitas una cuenta en: [hide]http://sp.incesoft.com/index[/hide] y seguir estos pasos:
Primero te creas una cuenta en incesoft:

Despues :
La informacion de mas (Contacto, Telefono, Compania) pueden poner cualquier cosa que no afecta al bot, para nada. Despues de registrarse les van a dar una SP (como un nombre de Usuario). Vuelven, ponen su SP, el Password, el Codigo de Confirmacion y se loguean.
Les aparece una pantalla algo asi:

Esa es la consola, es donde modifican la informacion externa del bot (Servidor, Nick, Mensaje Personal, Imagen, etc..). Les explico mas o menos cual funcion tiene cada una:
SP Info management: Cambian la Informacion del Bot, como Mensaje, Servidor, e info de tu cuenta de Incesoft
Msn account management:Ahi es donde agregan sus cuentas de MSN para que vivan los bots, y las administran , pueden cambiar sus contraseñas, ver que usuarios lo agregaron, etcetera.
Display Pictures:Cambian las imagenes que puede tener el bot
My Emotions: Agrega emoticones personalizados
Los otros tres son archivos para Editar para hacer funcionar al Bot, en tres lenguajes Visual, C++ y Java.
Ahora, lo primero que deben hacer es crear una cuenta en Hotmail (no creo que haya problema para eso xD) y agregarla en MSN account management. Le dan a "Submit" y vuelven a la administracion de Cuentas, y le dan a Sign In (para conectarlo al bot). Esto capaz que es lo que mas tarde, parece que Incesoft tiene problemas al conectarlo o demoras, pero mas de unas horas no creo que dure, se fijan, lo agregan y voila, su bot esta conectado ya.
Bueno, ahora hicimos lo primero, conectar al bot, pero falta configurarlo para hacerlo hablar, responder, jugar etc.. Aca es donde entra el Visual en juego, yo les recomiendo ese, porque estoy mas acostumbrado pero si saben se omiten estos pasos siguientes y lo configuran ustedes. Bajan el Visual, los Archivos SDK y abren "Myrobot.cs". Ahora el codigo lo pasas a este que tengo yo aqui y donde pone user pones tu SP y donde pone pass tu contraseña.
using System;
using System.IO;
using System.Drawing;
using System.Configuration;
using System.Runtime.Serialization;
using System.Collections.Specialized;
using System.Xml;
using System.Xml.Serialization;
using System.Text;
using System.Runtime.Serialization.Formatters.Binary;
using System.Threading;
using Incesoft.BotPlatform.SDK;
using Incesoft.BotPlatform.SDK.Interface;
namespace BotPlatformConsoleServer
{
public class MyRobot
{
public string address;
public int port;
public string user;
public string password;
static void Main(string[] args)
{
MyRobot me = new MyRobot();
me.address = "msnbot.incesoft.com";
me.port = 6602;
me.user = "Tu user";
me.password = "pass";
IRobotServer server = RobotServerFactory.Instance.createRobotServer(me.address, me.port);
server.addRobotHandler(new MyHandler(server));
server.addConnectionListener(new MyListener());
try
{
server.login(me.user, me.password, 300000);
server.requestContactList("mkas@hotmail.es");
}
catch (RobotException e)
{
Console.Out.WriteLine("Fallo en la conexion :" + e.Message);
}
}
}
class MyHandler : IRobotHandler
{
public MyHandler(IRobotServer server)
{
this.server = server;
}
private IRobotServer server;
private Random rdm = new Random();
public System.String commandList = "*****************************************\r" +
"** BOTPLATFORM SDK DEMO COMMAND LIST **\r" +
"*****************************************\r" +
" preface --- test message preface. \r" +
" emo ------- test emoticon.\r" +
" nudge ----- test nudge.\r" +
" p4 -------- test msn activity.\r" +
" typing ---- test typing info.\r" +
" name ------ test change friendly name.\r" +
" pm -------- test change personal msg.\r" +
" dp -------- test change display picture.\r" +
" bye --------- test close session.\r" +
" help ------ print this command list.\r" +
" ? --------- print this command list.\r" +
" ent --------- print enterprise only command list.";
public System.String commandListEnt = "*****************************************\r" +
"** BOTPLATFORM SDK ENTERPRISE ONLY COMMAND LIST **\r" +
"** Only use the following commands after upgraded your sp account **\r" +
"*****************************************\r" +
" file ------ test file transfer.\r" +
" bg -------- test background sharing.\r" +
" ink ------- test send ink.\r" +
" wink ------ test send wink.\r" +
" voice ----- test send voiceclip.\r" +
" webcam ---- test send webcam\r" +
" cs <account> -------- test create session.\r" +
" pu <account> ------ test push offline message.\r" +
" iv <account> -------- test invite user.\r" +
" ent --------- print this command list.";
public virtual void sessionO*****d(IRobotSession session)
{
System.Console.Out.WriteLine("Sesion abierta");
try
{
switch(session.OpenMode)
{
case SessionOpenMode.OPEN_MODE_CONV_OPEN:
session.send(commandList);
break;
case SessionOpenMode.OPEN_MODE_ROBOT:
session.send("Acabas de iniciar la session");
break;
default:
break;
}
}
catch (RobotException e)
{
util.consoleOut(e.ToString());
}
}
public virtual void sessionClosed(IRobotSession session)
{
System.Console.Out.WriteLine("EVENT: sessionClosed");
}
public virtual void messageReceived(IRobotSession session, IRobotMessage message)
{
System.Console.Out.WriteLine("EVENT: messageReceived");
try
{
System.String command = message.String;
IRobotMessage msg = session.createMessage();
if ("hola".ToUpper().Equals(command.ToUpper()))
{
msg.String = "Aqui tu texto cuando te digan Hola";
session.send(msg);
}
else if ("AQUI TU PREGUNTA".ToUpper().Equals(command.ToUpper()))
{
msg.String = "Aqui tu texto";
session.send(msg);
}
else if ("AQUI TU PREGUNTA".ToUpper().Equals(command.ToUpper()))
{
msg.String = "Aqui tu texto cuando te digan lo que tu quieres";
session.send(msg);
}
else if ("AQUI TU PREGUNTA".ToUpper().Equals(command.ToUpper()))
{
msg.String = "AQUI TU TEXTO";
session.send(msg);
}
else if ("AQUI TU PREGUNTA".ToUpper().Equals(command.ToUpper()))
{
msg.String = "AQUI TU TEXTO";
session.send(msg);
}
else
{
session.sendActivity("http://tuweb.com", "Tu titulo" );
msg.String = "AQUI TU TEXTO SI NO DICEN ALGUNA DE LAS PREGUNTAS SELECCIONADAS";
session.send(msg);
}
}
catch (RobotException e)
{
util.consoleOut(e.ToString());
}
}
public virtual void nudgeReceived(IRobotSession session)
{
System.Console.Out.WriteLine("EVENT: nudgeReceived");
}
public virtual void activityAccepted(IRobotSession session)
{
System.Console.Out.WriteLine("EVENTO: Actividad Acepta");
}
public virtual void activityRejected(IRobotSession session)
{
System.Console.Out.WriteLine("EVENTO: Actividad Rejectada");
}
public virtual void userAdd(String robot, String user)
{
System.Console.Out.WriteLine("EVENTO: Usuario añadido");
}
public virtual void userRemove(String robot, String user)
{
System.Console.Out.WriteLine("EVENTO: Usuario borrado");
}
public virtual void exceptionCaught(IRobotSession session, System.Exception cause)
{
System.Console.Out.WriteLine("SERVER ERROR: " + cause.Message);
}
public virtual void activityClosed(IRobotSession session)
{
System.Console.Out.WriteLine("EVENTO: Actividad cancelada");
}
public virtual void fileAccepted(IRobotSession session)
{
System.Console.Out.WriteLine("EVENTO: Archivo aceptado");
}
public virtual void fileRejected(IRobotSession session)
{
System.Console.Out.WriteLine("EVENTO: Archivo rejectado");
}
public virtual void webcamAccepted(IRobotSession session)
{
System.Console.Out.WriteLine("EVENTO: WebCam Aceptada");
}
public virtual void webcamRejected(IRobotSession session)
{
System.Console.Out.WriteLine("EVENTO: WebCam rejectada");
}
public virtual void activityLoaded(IRobotSession session)
{
System.Console.Out.WriteLine("EVENTO: Cargando actividad");
}
public virtual void activityReceived(IRobotSession session, System.String data)
{
System.Console.Out.WriteLine("EVENTO: Actividad recibida:" + data);
}
public virtual void userJoined(IRobotSession session, IRobotUser user)
{
System.Console.Out.WriteLine("EVENTO: Usuario unido : " + user);
}
public virtual void userLeft(IRobotSession session, IRobotUser user)
{
System.Console.Out.WriteLine("EVENTO: Usuario desconectado :" + user);
}
public virtual void userUpdated(IRobotUser user)
{
System.Console.Out.WriteLine("EVENTO: Usuario Subido (" + user.ID +","+user.Status+","+user.FriendlyName+ ")");
}
public virtual void personalMessageUpdated(System.String robot, System.String user, System.String personalMessage)
{
System.Console.Out.WriteLine("EVENTO: Mensaje personal cargado... (" + robot + ", " + user + ", " + personalMessage + ")");
}
public virtual void contactListReceived(System.String robot, System.Collections.ArrayList contactList)
{
System.Console.Out.WriteLine("EVENTO: Lista de contacto recibida");
for (int i=0; i<contactList.Count; i++)
{
IRobotUser user = (IRobotUser)contactList[i];
System.Console.Out.WriteLine("Usuario "+i+": "+user.ID);
}
}
}
class MyListener : IRobotConnectionListener
{
public void serverConnected(IRobotServer server)
{
Console.Out.WriteLine("Servidor conectado");
}
public void serverReconnected(IRobotServer server)
{
Console.Out.WriteLine("Reconexion al servidor");
}
public void serverDisconnected(IRobotServer server)
{
Console.Out.WriteLine("Desconectando del servidor...");
}
public void serverLoggedIn(IRobotServer sever)
{
Console.Out.WriteLine("Servidor logeado en...");
}
}
}
Luego, depuran y listo, lo mantienen on y perfecto, yo tengo el de una web que estamos haciendo unos colegas, geer.es.
contact@geer.esYa vereis que tal.