별표에서 아웃 바운드 전화를 걸려면 별표 - 자바 라이브러리를 사용하려고합니다. 나는 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
관리자 인터페이스가 활성화되어 있지 않은 경우 별표는 포트 5038에서 수신 대기합니다. –
manager.conf의 [일반] 섹션을 추가 할 수 있으며 주석이없는 모든 것은 마스크 IP 일 경우 – mirkobrankovic
감사합니다. 이것은 효과가 있었다. – Siddharth