繁体   English   中英

如何使用 Asterisk AMI 和 Java 在 AsteriskNow 中进行出站调用

[英]How to make outbound calls in AsteriskNow using Asterisk AMI with Java

我想从 LAN 网络中的分机号码发起呼叫。 我已经通过 FreePBX GUI 完成了这项任务。 现在我正在尝试使用带有 Java 代码的 Asterisk AMI 来执行此任务。 下面的 Java 代码显示了调试时的一些异常。

import java.io.IOException; 
import org.asteriskjava.manager.AuthenticationFailedException; 
import org.asteriskjava.manager.ManagerConnection; 
import org.asteriskjava.manager.ManagerConnectionFactory; 
import org.asteriskjava.manager.TimeoutException; 
import org.asteriskjava.manager.action.OriginateAction; 
import org.asteriskjava.manager.response.ManagerResponse; 

public class HelloManager 
{ 
private ManagerConnection managerConnection; 

public HelloManager() throws IOException 
{ 
ManagerConnectionFactory factory = new ManagerConnectionFactory( 
"192.168.68.173", "admin", "admin"); 

this.managerConnection = factory.createManagerConnection(); 
} 

public void run() throws IOException, AuthenticationFailedException, 
TimeoutException 
{ 
OriginateAction originateAction; 
ManagerResponse originateResponse; 

originateAction = new OriginateAction(); 
originateAction.setChannel("SIP/1010"); 
originateAction.setContext("default"); 
originateAction.setExten("2020"); 
originateAction.setPriority(new Integer(1)); 
originateAction.setTimeout(new Integer(30000)); 
// connect to Asterisk and log in 

managerConnection.login(); 

// send the originate action and wait for a maximum of 30 seconds for Asterisk 
// to send a reply 
originateResponse = managerConnection.sendAction(originateAction, 30000); 

// print out whether the originate succeeded or not 
System.out.println("Enter Response="+originateResponse.getResponse()); 

// and finally log off and disconnect 
managerConnection.logoff(); 
} 

public static void main(String[] args) throws Exception 
{ 
HelloManager helloManager; 

helloManager = new HelloManager(); 
helloManager.run(); 
} 
} 

例外:

run: 
Feb 06, 2014 4:04:16 PM org.asteriskjava.manager.internal.ManagerConnectionImpl connect 
INFO: Connecting to 192.168.68.173:5038 
Feb 06, 2014 4:04:17 PM org.asteriskjava.manager.internal.ManagerConnectionImpl setProtocolIdentifier 
INFO: Connected via Asterisk Call Manager/1.3 
Feb 06, 2014 4:04:17 PM org.asteriskjava.manager.internal.ManagerConnectionImpl setProtocolIdentifier 
WARNING: Unsupported protocol version 'Asterisk Call Manager/1.3'. Use at your own risk. 
Feb 06, 2014 4:04:18 PM org.asteriskjava.manager.internal.ManagerConnectionImpl disconnect 
INFO: Closing socket. 
Feb 06, 2014 4:04:18 PM org.asteriskjava.manager.internal.ManagerReaderImpl run 
INFO: Terminating reader thread: No more lines available: null 
Exception in thread "main" org.asteriskjava.manager.AuthenticationFailedException: Authentication failed 
at org.asteriskjava.manager.internal.ManagerConnectionImpl.doLogin(ManagerConnectionImpl.java:578) 
at org.asteriskjava.manager.internal.ManagerConnectionImpl.login(ManagerConnectionImpl.java:438)
at org.asteriskjava.manager.internal.ManagerConnectionImpl.login(ManagerConnectionImpl.java:423)
at org.asteriskjava.manager.DefaultManagerConnection.login(DefaultManagerConnection.java:294)
at asteriskjtapi.HelloManager.run(HelloManager.java:49) 
at asteriskjtapi.HelloManager.main(HelloManager.java:67) 

注意:这里我使用的是 FreePBX 中的凭据。 这是访问ConnectionManager权利吗?

请在执行 java 程序时粘贴星号日志

获取星号日志

 tail -f /var/log/asterisk/full

为了从命令行检查相同的尝试这个

 telnet 192.168.68.173  5038
 Action: Login
 Username: admin
 Secret: admin

如果登录成功

 Action: Originate
 Channel: SIP/1010
 Exten: 2020
 Context: default
 Priority: 1
 Callerid: 1010
 Async: yes

试试这个,让我知道你的输出

  1. 首先你要尝试通过telnet连接asterisk。
  2. 如果您收到“登录成功”消息,您可以继续您的编程。 否则,如果您收到“身份验证失败”消息,请将您的 IP 添加到manager.confpermit设置。 然后保存更改。

    permit:[your static ip]

  3. 用 telnet 再试一次

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM