poymeaw

error when use dialbyextension

Discussion created by poymeaw on Jan 4, 2006
Latest reply on Jan 5, 2006 by poymeaw

server name : poy

user name : poy1

password : poy1

 

callee name :poy

device :SIP/poy

 

in extensions.conf:[/i]

 

static=yes

writeprotect=no

 

 

 

 

exten => s,1,Answer

exten => s,2,Background(demo-congrats)

 

;exten => 1,1,Playback(digits/1)

;exten => 1,2,Goto(defautl,s,1)

 

;exten => 2,1,Plackback(digits/2)

;exten => 2,2,Goto(default,s,1)

 

exten => i,1,Playback(pbx-invalid)

exten => i,2,Goto(default,s,1)

 

exten => t,1,Playback(vm-goodbye)

exten => t,2,Hangup()

 

exten => poy,1,Dial(SIP/poy)

 

exten => poy1,1,Dial(SIP/poy1)

 

in sip.conf:[/i]

context=default               ; Default context for incoming calls

 

port=5060               ; UDP Port to bind to (SIP standard port is 5060)

bindaddr=0.0.0.0          ; IP address to bind to (0.0.0.0 binds to all)

srvlookup=yes               ; Enable DNS SRV lookups on outbound calls

                    ; Note: Asterisk only uses the first host

                    ; in SRV records

                    ; Disabling DNS SRV lookups disables the

                    ; ability to place SIP calls based on domain

                    ; names to some other SIP users on the Internet

 

type = friend

context = incoming

host = dynamic

nat = no

username = poy

secret = poy

 

type = friend

context = incoming

host = dynamic

nat = no

username = poy1

secret = poy1

 

And this is my code that i wrote.[/i]

 

import java.awt.event.ActionListener;

 

import org.jivesoftware.phone.client.BasePhoneEventListener;

import org.jivesoftware.phone.client.Call;

import org.jivesoftware.phone.client.DialedEvent;

import org.jivesoftware.phone.client.HangUpEvent;

import org.jivesoftware.phone.client.PhoneClient;

import org.jivesoftware.phone.client.PhoneEvent;

import org.jivesoftware.phone.client.PhoneEventListener;

import org.jivesoftware.phone.client.RingEvent;

import org.jivesoftware.phone.client.action.PhoneActionIQProvider;

import org.jivesoftware.phone.client.action.PhoneActionPacket;

import org.jivesoftware.phone.client.event.PhoneEventPacketExtension;

import org.jivesoftware.phone.client.event.PhoneEventPacketExtensionProvider;

import org.jivesoftware.smack.XMPPConnection;

import org.jivesoftware.smack.XMPPException;

import org.jivesoftware.smack.provider.ProviderManager;

 

import java.util.logging.Logger;

import java.util.logging.Level;

 

public class maintest implements PhoneEventListener{

 

     private static final Logger log = Logger.getLogger(maintest.class.getName());

 

     private static Call call;

     private static PhoneClient client;

    private static XMPPConnection conn;

     

    static {

 

        // XMPPConnection.DEBUG_ENABLED = true;

 

        try {

 

            ProviderManager.addExtensionProvider("phone-event",

                    PhoneEventPacketExtension.NAMESPACE,

                    new PhoneEventPacketExtensionProvider());

 

 

            ProviderManager.addIQProvider("phone-action",

                    PhoneActionPacket.NAMESPACE,

                    new PhoneActionIQProvider());

        } catch (Exception e) {

            log.log(Level.SEVERE, e.getMessage(), e);

            throw new ExceptionInInitializerError(e);

        }

 

    }

     

    public void handle(PhoneEvent event) {

 

        if(event instanceof  RingEvent ) {

            call = ((RingEvent) event).getCall();

        }

 

    }

     public static void call(){

          try {

               conn = new XMPPConnection("poy",5222);

               conn.login("poy1","poy1");

               client = new PhoneClient(conn);

               client.addEventListener(new BasePhoneEventListener() {

                  

                  public void handleRing(RingEvent event) {

                       System.out.println("receiving a call from "+ event.getCallerID());

                      log.info("receiving a call from " + event.getCallerID());

                  }

                 

                  public void handleDialed(DialedEvent event) {

                       System.out.println("You have dialed "+event.getCallID());

                      log.info("You have dialed "+event.getCallID());

                  }

                 

                  public void handleHangUp(HangUpEvent event) {

                       System.out.println("The phone has been hung up");

                      log.info("The phone has been hung up");

                  }

               });

               client.dialByExtension("poy");

               conn.close();

          } catch (XMPPException e) {

               System.out.println("error : "+e);

          }

     }

     public static void main(String[] args) {

          call();

         System.out.println("done");

     }

}

 

But when I complied, it occur error 400 and in jive server show this error :

 

Jan 4, 2006 3:54:12 PM org.jivesoftware.phone.asterisk.AsteriskPhoneManager dial

SEVERE: No primary channel found!

java.lang.IllegalStateException: No primary channel found!

     at org.jivesoftware.phone.PhoneUser.getPrimaryDevice(PhoneUser.java:61)

     at org.jivesoftware.phone.asterisk.AsteriskPhoneManager.dial(AsteriskPhoneManager. java:236)

     at org.jivesoftware.phone.asterisk.AsteriskPhoneManager.dial(AsteriskPhoneManager. java:49)

     at org.jivesoftware.phone.PacketHandler.handleDial(PacketHandler.java:78)

     at org.jivesoftware.phone.PacketHandler.processPacket(PacketHandler.java:44)

     at org.jivesoftware.phone.asterisk.AsteriskPlugin.processPacket(AsteriskPlugin.jav a:233)

     at org.jivesoftware.messenger.component.InternalComponentManager$RoutableComponent .process(InternalComponentManager.java:349)

     at org.jivesoftware.messenger.IQRouter.handle(IQRouter.java:183)

     at org.jivesoftware.messenger.IQRouter.route(IQRouter.java:78)

     at org.jivesoftware.messenger.PacketRouter.route(PacketRouter.java:65)

     at org.jivesoftware.messenger.net.SocketReader.processIQ(SocketReader.java:321)

     at org.jivesoftware.messenger.net.ClientSocketReader.processIQ(ClientSocketReader. java:51)

     at org.jivesoftware.messenger.net.SocketReader.readStream(SocketReader.java:251)

     at org.jivesoftware.messenger.net.SocketReader.run(SocketReader.java:115)

     at java.lang.Thread.run(Unknown Source)

 

 

What wrong with my configuration and code.

Please correct me, if i do wrong

Outcomes