Bonjour à tous!
Alors voilà, j'utilise l'API JTAPI et je l'implémente par GJTAPI.
Ce code marche:
//là j'ai enlevé les imports pour que le code soit plus lisible
import net.sourceforge.gjtapi.raw.emulator.*;
public class OutCall implements CallObserver{
static GenericProvider myprovider=null;
public static void main(String[] args) {
new OutCall();
}
public OutCall()
{
try {
GenericJtapiPeer peer = (GenericJtapiPeer) JtapiPeerFactory.getJtapiPeer(null);
//ou JtapiPeer peer = JtapiPeerFactory.getJtapiPeer("DefaultJtapiPeer");
myprovider = (GenericProvider) peer.getProvider("Emulator");
System.out.println("Chargement du provider...ok");
if (myprovider.getState() == Provider.IN_SERVICE)
System.out.println("Le provider est en service");
} catch (Exception excp) {
System.out.println("Probleme avec le provider: " + excp.toString());
System.exit(0);
}
Terminal MyTerminal=null;
try {
MyTerminal=myprovider.getTerminal("21");
} catch (Exception e1) {
System.out.println("Probleme avec la récupération du terminal");
e1.printStackTrace();
}
Address[] MyAddress=MyTerminal.getAddresses();
Address MyAdd=MyAddress[0];
Call myCall=null;
try {
myCall=myprovider.createCall();
System.out.println("Appel crée...ok");
myCall.addObserver(this);
System.out.println("Creation de l'observateur sur le call...ok");
} catch (Exception e) {
e.printStackTrace();
}
//Place l'appel de telephone.
try {
Address MyAddress2=myprovider.getAddress("22");
MyAddress2.addCallObserver(new CL());
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
Connection c[] = myCall.connect(MyTerminal, MyAdd, "22");
System.out.println("Placement de l'appel...ok");
} catch (Exception excp) {
System.out.println("Le numéro appelé n'est pas valide");
}
while (true)
{
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void callChangedEvent(CallEv[] evlist) {
for (int i = 0; i < evlist.length; i++) {
if (evlist[i] instanceof ConnEv) {
String name = null;
try {
Connection connection = ((ConnEv)evlist[i]).getConnection();
Address addr = connection.getAddress();
name = addr.getName();
} catch (Exception excp) {
// Handle Exceptions
}
String msg = "Connection à l'addresse: " + name + " is ";
if (evlist[i].getID() == ConnAlertingEv.ID) {
System.out.println(msg + "ALERTING");
}
else if (evlist[i].getID() == ConnInProgressEv.ID) {
System.out.println(msg + "INPROGRESS");
}
else if (evlist[i].getID() == ConnConnectedEv.ID) {
System.out.println(msg + "CONNECTED");
}
else if (evlist[i].getID() == ConnDisconnectedEv.ID) {
System.out.println(msg + "DISCONNECTED");
}
}
}
}
public class CL implements CallObserver
{
public void callChangedEvent(CallEv[] evlist) {
{
for (int i = 0; i < evlist.length; i++) {
if (evlist[i] instanceof ConnEv) {
String name = null;
try {
Connection connection = ((ConnEv)evlist[i]).getConnection();
Address addr = connection.getAddress();
name = addr.getName();
} catch (Exception excp) {
// Handle Exceptions
}
String msg = "Eh OUI!Connection à l'addresse: " + name + " is ";
if (evlist[i].getID() == ConnAlertingEv.ID) {
System.out.println(msg + "ALERTING");
}
else if (evlist[i].getID() == ConnInProgressEv.ID) {
System.out.println(msg + "INPROGRESS");
}
else if (evlist[i].getID() == ConnConnectedEv.ID) {
System.out.println(msg + "CONNECTED");
}
else if (evlist[i].getID() == ConnDisconnectedEv.ID) {
System.out.println(msg + "DISCONNECTED");
}
}
}
}
}
}}
Mais si je veux séparer l'écoute de l'appel de son émission:
try {
Address MyAddress2=myprovider.getAddress("22");
MyAddress2.addCallObserver(new CL());
} catch (Exception e1) {
e1.printStackTrace();
}
(c'est-à-dire mettre ce bout de code dans une autre classe et donc avoir au final une classe OutCall
et une autre InCall comme dans les exemples de JTapi)
alors je ne détecte plus les appels sur l'address "22"
Voici mon fichier "emulator":
Address1 = 21
Address2 = 22
Address3 = 23
Address4 = 24
# display = true
# Should we throttle RawListener events? 'f' means that the RawProvider will report everything
throttle = f
# Turn on PrivateData for Terminals and TerminalConnections
termSendPrivateData = t
tcSendPrivateData = t
Voilà, si quelqu'un peut m'aider à détecter les appels quand on sépare les classes
(parceque si je fais tout dans la même classe...bonjour, l'interactivité...).
Ca fait vraiment plusieurs jours que je cherche sans trouver la réponse, alors j'ai
vraiment besoin d'aide. Merci à quiconque prendra le soin de lire mon message!
Partager