使用asterix接听电话(AMI / AGI或其他任何东西)

时间:2017-04-26 08:32:03

标签: java asterisk tapi incoming-call

我使用星号与PBX通信并想接听来电但是我需要的是:

  • 假设我们是101并且拨打102.我们可以毫无问题地看到/监听来电。

  • 在接收方(102)上,用户看到来电通知。我希望答案是由客户端gui触发的,一旦用户对gui(软件)执行了一些按钮操作,应答事件应该传播到asterix / pbx,然后系统应该处于应答状态和通话状态。当我在102上为来电定义一些AGI脚本并定义应答时,呼叫者(101)进入通话状态,但我们看不到接收器102(被叫侧)的电话设备上的任何动作。当接收方执行某些操作,脚本等时,是否有办法将双方置于通话状态(等待接收方执行某些应答/拾取操作)然后进入通话状态?并且该动作应该由一些脚本(基于java的agi / ami脚本)

  • 启动
  • 总之,我想使用电话硬件设备和软件同步工作。可以使用TAPI / JTAPI / GJTAPI完成该要求,但我想了解是否可以通过替换TAPI使用asterix来实现。目前,我们可以从基于java的客户端发起呼叫,将操作发送到电话硬件并使用gjtapi监控呼叫。我们还可以在我们的Java客户端上看到来电,用户可以通过一些gui按钮动作回答,gjtapi将回答发送到线路,然后电话设备进入通话状态。 我想用软件管理电话设备,但我不想要任何软电话。我想控制电话并触发makecall,使用软件回答操作。

  • TAPI是否是此要求的唯一解决方案,尝试使用星号是错误的方式?

示例 extensions.conf

exten => 102,1,敏捷(AGI://192.168.0.X/answer.agi)

fastagi.properties:

answer.agi = org.asteriskjava.examples.fastagi.ExampleCallIn

ExampleCallIn:

public class ExampleCallIn extends BaseAgiScript {
  public void service(AgiRequest request, AgiChannel channel) throws AgiException {
   answer();

我从101,通过电话设备或软件(拨号)开始呼叫,触发服务方法并应答,在电话101上,我看到它因应答呼叫而进入通话状态,但在102(电话设备)没有任何反应,它仍在振铃(来自101的入站电话)。

1 个答案:

答案 0 :(得分:1)

要通过AGI接听不通过其他支路的电话,您只需要执行类似

的操作
  print "ANSWER\n"

以您选择的任何语言。

但是,如果您已经被要求打电话给其他B路,那么事情会变得复杂得多。您需要使用目标手机的固件,或者

1)在目标手机上自动设置或将您的通话标记为内线电话

https://www.voip-info.org/wiki/view/Asterisk+Paging+and+Intercom

此时呼叫进入目的设备时,将自动回答并桥接

2)设置隐私宏https://www.voip-info.org/wiki-Asterisk+cmd+Dial#Dialmacros

3)在宏设置中调用外部脚本/数据库,无论是否确认呼叫。

那样召唤技术将会得到回答,但甲方会认为它仍然响起,直到你确认它为止,结束宏并得到正确的结果。

然而,在编程和星号理解方面需要高于先进水平。