Работа с Sametime

azat20

Well-known member
22.07.2008
244
0
#1
Добрый день!
Возможно ли создание сообщений Sametime программно, чтобы сообщение создавалось и отправлялось? Какие методы и возможности есть для этого?
 

rinsk

Lotus team
12.11.2009
904
44
#2

susinmn

Well-known member
16.10.2007
529
3
#3
скачал пробную версию бд с http://www.botstation.com/products/stagent/about.php - не работает, старые jar-ники

"Error 2********************************************License for Botstation STAgent has expired on: 2010-11-20Contact Botstation if you want to register or update the license:support@botstation.com"

Можете поделиться рабочим кодом?

Спасибо.
 

susinmn

Well-known member
16.10.2007
529
3
#4
Вот нашел в Sandbox
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>/* Sametime Bot Sample
This is a simple sample to demonstrate how
to use the Sametime APIs to automatically
respond to user requests.

The bot randomizes responses from an
array. No parsing of the user message
is shown get, but certainly can be added.

In the main, you need to set,

<servername>, the name of the Sametime server you are connecting to
<user ID>, the user ID you will be using for the bot
<password>, the password for the user ID.

See the Lotus Sametime developer guides for a detailed
description of the Sametime listeners and events used
in this sample.
*/

import com.lotus.sametime.awareness.*;
import com.lotus.sametime.community.*;
import com.lotus.sametime.conf.*;
import com.lotus.sametime.core.comparch.*;
import com.lotus.sametime.core.constants.*;
import com.lotus.sametime.core.types.*;
import com.lotus.sametime.im.*;
import java.util.*;

public class EightBallBot implements Runnable, LoginListener, ImServiceListener, ImListener {

CommunityService commService;
Thread engine;
InstantMessagingService imService;
STSession stsession;
ConfService confService;

String [] responses = { "Yes",
"No",
"Maybe",
"Doesn't look good",
"Try again",
"Answer hazy"};

public EightBallBot(String serverName, String userId, String password) {
try {
stsession = new STSession("EightBallSession");
} catch (DuplicateObjectException e) {
e.printStackTrace();
return;
}

stsession.loadSemanticComponents();
stsession.start();

commService = (CommunityService)stsession.getCompApi(CommunityService.COMP_NAME);
commService.addLoginListener(this);
commService.loginByPassword(serverName, userId, password);


}

public void loggedIn(LoginEvent e) {
System.err.println("Logged In");

imService = (InstantMessagingService)stsession.getCompApi(InstantMessagingService.COMP_NAME);
imService.registerImType(ImTypes.IM_TYPE_CHAT);
imService.addImServiceListener(this);
confService = (ConfService)stsession.getCompApi(ConfService.COMP_NAME);

}

public void loggedOut(LoginEvent e) {
System.err.println("Logged Out");
}


public void imReceived(ImEvent e) {
e.getIm().addImListener(this);
System.err.println("IM Received");
}

public void dataReceived(ImEvent e) {}

public void imClosed(ImEvent e) {}

public void imOpened(ImEvent e) {}

public void openImFailed(ImEvent e) {}

public void textReceived(ImEvent e) {

Random rnums = new Random();
int item = rnums.nextInt(responses.length);

e.getIm().sendText(true, responses[item]);
String q = e.getText();

System.err.println("Message received from " + e.getIm().getPartner().getName());
System.err.println("Random number is " + item);

}

public void serviceAvailable(AwarenessServiceEvent e) {}

public void serviceUnavailable(AwarenessServiceEvent e) {}


public void start() {
if (engine == null) {
engine = new Thread(this, "EightBallThread");
engine.start();
}
}

public void run() {
Thread myThread = Thread.currentThread();
while (engine == myThread) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
}
}

public static void main(String[] args) {
EightBallBot ebb = new EightBallBot("<server name>", "<user ID>", "<password>");
ebb.start();
}

}[/CODE]Вопрос: где взять пакеты, которые в import'ах?

Или для клиента 8.5.x нужно по другому делать?
 

hosm

* so what *
18.05.2009
2 442
6
#5
susinmn для 6.5 был какой-то Java Sametime Toolkit, возможно, то, что надо, там и есть (один точно оттуда файл подключали, мб, и больше). К сожалению, дело было очень давно и именно на 6.5, в 8ке не подскажу...
 

susinmn

Well-known member
16.10.2007
529
3
#6
для 6.5 был какой-то Java Sametime Toolkit, возможно, то, что надо, там и есть (один точно оттуда файл подключали, мб, и больше). К сожалению, дело было очень давно и именно на 6.5, в 8ке не подскажу...
Скачали Java Sametime Toolkit. Двигаемся дальше..

Пишем агент, подключаем STComm.jar:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">агент</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>import lotus.domino.*;
//import lotus.domino.Session;

//import com.lotus.sametime.awareness.*;
import com.lotus.sametime.community.*;
//import com.lotus.sametime.conf.*;
import com.lotus.sametime.core.comparch.*;
//import com.lotus.sametime.core.constants.*;
//import com.lotus.sametime.core.types.*;
import com.lotus.sametime.im.*;

//import java.util.*;

public class JavaAgent extends AgentBase implements Runnable, LoginListener, ImServiceListener, ImListener{

public void NotesMain() {
CommunityService commService=null;
STSession stsession=null;
try {
stsession = new STSession("Maxim N Susin");
stsession.loadSemanticComponents();
stsession.start();

commService = (CommunityService)stsession.getCompApi(CommunityService.COMP_NAME);
commService.addLoginListener((LoginListener) this);
String serverName = "**ip_sametime_сервера**";
String userId = "**логин**";
String password = "**пароль**";
commService.loginByPassword(serverName, userId, password);

commService.logout();
stsession.stop();
stsession.unloadSession();

} catch(Exception e) {

e.printStackTrace();

stsession.stop();
stsession.unloadSession();
commService.logout();

}
}

public void loggedIn(LoginEvent e) {}

public void loggedOut(LoginEvent e) {}

public void imReceived(ImEvent e) {}

public void dataReceived(ImEvent e) {}

public void imClosed(ImEvent e) {}

public void imOpened(ImEvent e) {}

public void openImFailed(ImEvent e) {}

public void textReceived(ImEvent e) {}
}[/CODE]Вопрос: как узнать статус пользователя, и как ему отправить сообщение?)
 

susinmn

Well-known member
16.10.2007
529
3
#7
Смущает вот это

<!--shcode--><pre><code class='avto'>commService.loginByPassword(serverName, userId, password);
System.out.println(commService.isLoggedIn());[/CODE]

в консоль принтует false, т.е. нет подключения)
 

hosm

* so what *
18.05.2009
2 442
6
#8
у нас было зациклено (в течении какого-то времени и кол-ва попыток повторялся опрос статуса). Ну, опять же проверить правильность логина-пароля. примеры и еще доку киданула в почту.

Добавлено: я не помню поведение, если человек под этой учеткой уже был подключен к ст-серверу - вроде выкидывало его из ст и подключалось
 

azzza

Well-known member
26.04.2011
65
0
#9
>>Добрый день!
Возможно ли создание сообщений Sametime программно, чтобы сообщение создавалось и отправлялось? Какие методы и возможности есть для этого? <<

Есть потребность создавать Sametime Instant Message для отправки другим пользователям. Прошу помощи.
Вот кое-что нарыл, может уважаемые гуру поможете разобраться (Java)

http://www-10.lotus.com/ldd/ddwiki.nsf/dx/...ncement+Service

Интересен пункт 7.3 Создание так называемых оповещений.
Можно ли как -то реализовать в виде библиотеки или может кто-то знает другие способы создание сообщений Sametime программно.
Очень прошу поделиться советами и идеями, не проходите мимо. Инфы оч. мало. Да и в Лотусе я новичек.