3

我正在使用星号与 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(agi://192.168.0.X/answer.agi)

fastagi.properties:

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

示例调用:

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

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

4

1 回答 1

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)在宏设置中调用外部脚本/数据库以确认调用。

这样,技术上的呼叫将被回答,但甲方会认为它仍在响铃,直到您确认它,以正确的结果结束宏。

然而,这需要在编程和星号理解方面的高级水平。

于 2017-04-26T16:06:25.597 回答