2013-06-19 2 views
1

별표에서 아웃 바운드 전화를 걸려면 별표 - 자바 라이브러리를 사용하려고합니다. 나는 Connection Refused 예외 (질문이 끝날 무렵)를 얻고 있습니다.AsteriskNOW를 사용하여 Dongle에서 다이얼 아웃하면 - java.net.ConnectException : 연결이 거부되었습니다.

try { 
    factory = new ManagerConnectionFactory("127.0.0.1", "loginFromManagerConf", "passwordFromManagerConf"); 
    outgoingCallManager = factory.createManagerConnection(); 
    outgoingCallManager.login(); 
    originateAction = new OriginateAction(); 
    originateAction.setChannel("Dongle/dongle0/+91XXXXXXXXXX"); 
    originateAction.setContext("dongle-outgoing"); 
    // originateAction.setExten("1300"); 
    originateAction.setPriority(new Integer(1)); 
    originateAction.setTimeout(new Integer(30000)); 
} catch (IllegalStateException e) { 
    e.printStackTrace(); 
    System.out.println("Unable to connect to Asterisk"); 
    System.exit(0); 
} catch (IOException e) { 
    e.printStackTrace(); 
    System.out.println("Unable to connect to Asterisk"); 
    System.exit(0); 
} catch (AuthenticationFailedException e) { 
    e.printStackTrace(); 
    System.out.println("Unable to connect to Asterisk"); 
    System.exit(0); 
} catch (TimeoutException e) { 
    e.printStackTrace(); 
    System.out.println("Unable to connect to Asterisk"); 
    System.exit(0); 
} 

위의 것을 junit 테스트 케이스에서 호출하면 eclipse는 루트로 실행되지 않습니다.

우분투 12.04에 AsteriskNOW를 설치했습니다. 수신 전화 및 SMS가 작동 중입니다. 수신 통화의 DTMF는 chan-dongle에서 지원하지 않지만 별도의 문제입니다. 기본적으로 들어오는 것은 멋지게 작동합니다.

Dongle.conf

context=dongle-incoming 

Manager.conf

[loginFromManagerConf] 
secret = passwordFromManagerConf 
read=system,call,log,verbose,agent,command,user 
write=system,call,log,verbose,agent,command,user 

Extensions.conf

[dongle-outgoing] 
exten => s,1,Playback(digits/2) 
exten => s,n,Hangup() 

[dongle-incoming] 
exten => sms,1,Verbose(Incoming SMS from ${CALLERID(num)} ${SMS}) 
exten => sms,n,System(java -classpath mypath -jar myjarfile ${CALLERID(num)} ${SMS}) 

exten => sms,n,Hangup() 

exten => ussd,1,Verbose(Incoming USSD: ${USSD}) 
exten => ussd,n,System(echo '${STRFTIME(${EPOCH},,%Y-%m-%d %H:%M:%S)} - ${DONGLE}: ${USSD}' >> /var/log/asterisk/ussd.txt) 
exten => ussd,n,Hangup() 

exten => s,1,Answer() 
exten => s,2,WaitExten() 
exten => 123,1,Playback(digits/2) 
exten => 234,1,Playback(digits/3) 
exten => 345,1,Playback(digits/4) 
exten => s,n,Goto(1) 

예외

java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:327) 
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:193) 
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:180) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:384) 
    at java.net.Socket.connect(Socket.java:546) 
    at org.asteriskjava.util.internal.SocketConnectionFacadeImpl.<init>(SocketConnectionFacadeImpl.java:69) 
    at org.asteriskjava.manager.internal.ManagerConnectionImpl.createSocket(ManagerConnectionImpl.java:713) 
    at org.asteriskjava.manager.internal.ManagerConnectionImpl.connect(ManagerConnectionImpl.java:692) 
    at org.asteriskjava.manager.internal.ManagerConnectionImpl.doLogin(ManagerConnectionImpl.java:485) 
    at org.asteriskjava.manager.internal.ManagerConnectionImpl.login(ManagerConnectionImpl.java:433) 
    at org.asteriskjava.manager.internal.ManagerConnectionImpl.login(ManagerConnectionImpl.java:418) 
    at org.asteriskjava.manager.DefaultManagerConnection.login(DefaultManagerConnection.java:266) 
    at test.com.mcruiseon.ivr.OutgoingCallTest.test(OutgoingCallTest.java:22) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:616) 
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:45) 
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) 
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:42) 
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) 
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:263) 

Netstat 출력

[email protected]:/var/lib/asterisk/sounds/en$ sudo netstat -anp | grep asterisk 
tcp  0  0 0.0.0.0:2000   0.0.0.0:*    LISTEN  2892/asterisk 
udp  0  0 0.0.0.0:5000   0.0.0.0:*       2892/asterisk 
udp  0  0 0.0.0.0:4520   0.0.0.0:*       2892/asterisk 
udp  0  0 0.0.0.0:5060   0.0.0.0:*       2892/asterisk 
udp  0  0 0.0.0.0:4569   0.0.0.0:*       2892/asterisk 
unix 2  [ ACC ]  STREAM  LISTENING  21312 2892/asterisk  /var/run/asterisk/asterisk.ctl 
+1

관리자 인터페이스가 활성화되어 있지 않은 경우 별표는 포트 5038에서 수신 대기합니다. –

+1

manager.conf의 [일반] 섹션을 추가 할 수 있으며 주석이없는 모든 것은 마스크 IP 일 경우 – mirkobrankovic

+0

감사합니다. 이것은 효과가 있었다. – Siddharth

답변

1

manager.conf에 일반 섹션이 추가되었습니다.

[general] 
enabled = yes 
;webenabled = yes 

port = 5038 
bindaddr = 127.0.0.1 

결과 : 근무!

+1

도와 주셔서 감사합니다 :) – mirkobrankovic

관련 문제