所以我是星号和管理呼叫线的全新手当我用相应的前缀拨打外部号码时。现在,我必须编程为呼叫,并将它们连接到我不知道该如何实现的本地扩展名,并且在搜索数小时后,我似乎在互联网上找到了很多有关它的信息。
我设法通过以下方式将2个本地SIP电话与Asterisk Manager API和OriginAction连接起来:
originateAction = new OriginateAction();
originateAction.setChannel(ConnectionType+"/"+extCaller);
originateAction.setContext(context);
originateAction.setCallerId(idCaller);
originateAction.setExten(tDestination);
originateAction.setPriority(priority);
originateAction.setTimeout(timeoutCall);
managerConnection.login();
originateResponse = managerConnection.sendAction(originateAction, timeoutRequest);
我也尝试了此channel originate pjsip/201 extension number@from-ptsn
和channel originate local/201@from-local extension number@trunkName
。
PJSIP中继的上下文是从PSTN中的
在启动呼叫并将呼叫拨出办公室时,我该如何使用PJSIP中继?
编辑:我使用一个以行李箱外的路线要求完成的数字来启动一个呼叫,以及这样的"来自内部"上下文:
channel originate Local/201@from-internal extension (prefix)numberToCall@from-internal
我仍然不明白为什么这有效,如果这是我问题的正确答案。
,因此答案是在问题的编辑中。生成我能找到的传出呼叫的唯一方法是发起该调用"内部"(带有上下文"内部",这恰好是与发起内部呼叫时使用的上下文相同的上下文),引入了目标号码值按照SIP中继的路线模式要求完成。
示例: 我有一个用模式(以至于)为sip trunk(trunk1)配置的路由:[0] {1}/号该路线的值,它将尝试使用Trunk1调用。
在Asterisknow CentOS安装的情况下,它恰好与上下文"内部"。由于星号配置文件归FreepBX拥有,因此建议使用FreepBX GUI而不是配置Asterisk Manualy的.conf文件。
结论:
channel originate Local/201@from-internal extension (0)[numberToCall]@from-internal
将首先制作扩展201圈,然后捡起时,它将尝试使用sip trunk拨打该[numberTocall],因为带有0的路由为"称为"。
为了使用Asterisk-Java将该命令发送到星号,我编写了以下代码:
ManagerConnectionFactory factory = new
ManagerConnectionFactory("serverIp", "username",
"passwd");
ManagerConnection managerConnection=factory.createManagerConnection()
OriginateAction originateAction=new OriginateAction();
final String randomUUID=java.util.UUID.randomUUID().toString();
System.out.println("ID random:_"+randomUUID);
originateAction.setChannel([connectionType]+"/"+[callerExtension]);<-- SIP or PJSIP / 201(the phone that will ring first)
originateAction.setContext("from-internal"); <-- Default FreePBX context
originateAction.setCallerId([callerId]); // what will be showed on the phone screen (in most cases your phone)
originateAction.setExten([targetExten]); //where to call.. the target extension... internal extension or the outgoing number.. the 0[nomberToCall]
originateAction.setPriority([priority]);// priority of the call
originateAction.setTimeout(timeoutCall); // the time that a pickup event will be waited for
originateAction.setVariable("UUID", randomUUID); // asigning a unique ID in order to be able to hangup the call.