Bots is a high topic these days and i revisited this kind of application last week.
I created a Translation Bot based on this article from IBM.
This Sametime Bot get the text, send to IBM Watson Translation Service and return the translated text to the user.
public void textReceived(ImEvent e) {
String q = e.getText();
//here we connect to watson and get the translation
LanguageTranslation service = new LanguageTranslation();
service.setUsernameAndPassword("<username>","<password>");
service.setEndPoint("https://gateway.watsonplatform.net/language-translator/api");
List<IdentifiedLanguage> identifiedLanguages = service.identify(e.getText()).execute();
String lang = identifiedLanguages.get(0).getLanguage();
String idiomaPt = "pt";
String idiomaEn = "en";
String idiomait = "it";
if (lang.equals(idiomaPt) | lang.equals(idiomait)) {
TranslationResult result = service.translate(e.getText(),Language.PORTUGUESE,Language.ENGLISH).execute();
e.getIm().sendText(true, result.getFirstTranslation()+".");
} else if (lang.equals(idiomaEn)) {
TranslationResult result = service.translate(e.getText(),Language.ENGLISH,Language.PORTUGUESE).execute();
e.getIm().sendText(true, result.getFirstTranslation()+".");
} else {
e.getIm().sendText(true,"Não consigo traduzir.");
}
System.err.println("Message received from " + e.getIm().getPartner().getName());
}
To run the bot i export the project as an executable JAR and run it on my linux server using the script bellow:
#!/bin/sh
SERVICE_NAME=STBot
PATH_TO_JAR=/etc/init.d/STBotV02.jar
PID_PATH_NAME=/etc/init.d/Stbot-pid
case $1 in
start)
echo "Starting $SERVICE_NAME ..."
if [ ! -f $PID_PATH_NAME ]; then
nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is already running ..."
fi
;;
stop)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stoping ..."
kill $PID;
echo "$SERVICE_NAME stopped ..."
rm $PID_PATH_NAME
else
echo "$SERVICE_NAME is not running ..."
fi
;;
restart)
if [ -f $PID_PATH_NAME ]; then
PID=$(cat $PID_PATH_NAME);
echo "$SERVICE_NAME stopping ...";
kill $PID;
echo "$SERVICE_NAME stopped ...";
rm $PID_PATH_NAME
echo "$SERVICE_NAME starting ..."
nohup java -jar $PATH_TO_JAR /tmp 2>> /dev/null >> /dev/null &
echo $! > $PID_PATH_NAME
echo "$SERVICE_NAME started ..."
else
echo "$SERVICE_NAME is not running ..."
fi
;;
esac