JTAPI+GJTAPI

nostub Messages postés 2 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 12 novembre 2006 - 12 nov. 2006 à 15:13
g_fuck Messages postés 269 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 23 août 2011 - 28 nov. 2007 à 15:53
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!

2 réponses

nostub Messages postés 2 Date d'inscription vendredi 28 octobre 2005 Statut Membre Dernière intervention 12 novembre 2006
12 nov. 2006 à 18:35
Bon, alors je suis preneur de tout code avec JTAPI et GJTAPI utilisant
une classe pour émettre un Call et une autre pour le recevoir. Merci!
0
g_fuck Messages postés 269 Date d'inscription lundi 29 novembre 2004 Statut Membre Dernière intervention 23 août 2011
28 nov. 2007 à 15:53
Salut  !!!


   J'aimerais me mettre au developement d'une application  JTAPI. Cependant je ne sais vraiment pas par ou commencer!


   J'ai lu beucoup de Doc mais null part il est indique comment connecter mes appareils telephonique (mon telephone fixe disont) a mon PC pour pouvoir faire de tests.  Pouriez vous m'eclairer sur ce sujet??
J.BAHOLE
0
Rejoignez-nous