问题标签 [fastagi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
69 浏览

asterisk - 是否可以在准备好的输入 stram 上创建 php 回调?

我有在某些情况下循环的星号快速 AGI 应用程序。不同之处在于,如果频道挂断,本地启动的 AGI 脚本星号会下降。

在网络 AGI 的情况下,如果通道挂起,则 agi 脚本继续工作,通道循环等待完成此脚本。

当频道挂起时,星号将“挂断”消息发送到标准输出,但我使用了 synchronius phpagi lib,错过了它。所以我的问题是:

  1. 如何绑定准备读取标准输入事件并调用函数回调(这将检测可能的挂断)?

  2. 如果没有挂断检测,如何将数据返回到标准输入?

首先,我尝试找到一些简单的方法来解决这个问题

我的测试代码看起来像这样

0 投票
1 回答
264 浏览

eclipse - Asterisk-Java 无法加载属性文件

我正在开发一个非常简单的基于 Asterisk-Java IVR 的程序,它会迎接调用者,从 Web 服务中检索一些信息,将检索到的数据读取给调用者,最后挂断。

我遵循了哪些步骤:

在 extensions_custom.conf 中添加了以下行:

exten => 1000,n,Agi(agi://192.168.0.8/ivryobi.agi)

在 C:\Project\target\classes\ 中创建了以下文件结构

在 fastagi-mapping.properties 里面我有:

ivryobi.agi = main.IvrYobi

IvrYoby的内容是:

当它正常工作时

在控制台中运行以下命令

C:\Project\target\classes>java -cp asterisk-java.jar;commons-lang3-3.10.jar;commons-logging-1.2.jar;httpclient-4.5.12.jar;httpcore-4.4.13.jar; mysql-connector-java-8.0.20.jar;. org.asteriskjava.fastagi.DefaultAgiServer

正如您在以下控制台输出中看到的那样,完美运行

2020 年 6 月 30 日下午 6:09:04 org.asteriskjava.fastagi.DefaultAgiServer 启动 INFORMACIËN:监听 *:4573。2020 年 6 月 30 日下午 6:09:09 org.asteriskjava.fastagi.AbstractAgiServer getPool INFORMACIËN:线程池已启动。2020 年 6 月 30 日下午 6:09:09 org.asteriskjava.fastagi.ResourceBundleMappingStrategy loadResourceBundle INFORMACIËN:将“ivryobi.agi”的映射添加到类 IvrYobi ...

当问题出现时

当我运行相同的代码,但在控制台中插入时,我使用 Runnable.java

以下是 Runnable.java 的内容:

我们可以在 Eclipse 的控制台上观察到以下错误:

0 [main] DEBUG org.asteriskjava.fastagi.DefaultAgiServer - 使用 channelFactory org.asteriskjava.fastagi.internal.DefaultAgiChannelFactory 9 [main] INFO org.asteriskjava.fastagi.DefaultAgiServer - 监听 *:4573。4806 [main] DEBUG org.asteriskjava.fastagi.DefaultAgiServer - 收到来自 /192.168.0.254 的连接 4810 [main] INFO org.asteriskjava.fastagi.DefaultAgiServer - 线程池已启动。4849 [AJ DaemonPool-1.1] 调试 org.asteriskjava.fastagi.ClassNameMappingStrategy - 无法创建 ivryobi.agi 类型的 AgiScript 实例:找不到类,请确保该类存在并且在 CLASSPATH 中可用 4849 [AJ DaemonPool-1.1] 错误org.asteriskjava.fastagi.internal.FastAgiConnectionHandler - 没有为 URL 'agi://192.168.0.8/ivryobi.agi' 配置脚本(脚本'ivryobi.agi')

已尝试故障排除

  • 我已经确定 fastagi-mapping.properties 在 CLASSPATH 上。
  • 尝试了不同的名称和大小写
  • 复制 java 执行路径上的 .properties 文件
  • 将项目编译为可执行 jar
  • 在 Eclipse 中添加/删除了包(例如:com.test.IvrYobi),并将更改应用于 .properties 文件。
  • 我检查了 asterisk-java-3.5.0.jar 里面的代码,看起来如果没有找到配置文件,它会继续运行而不会发出任何警告。由于包装在罐子内,我无法修改该代码。

请问,你还有什么我可以尝试的想法吗?

0 投票
1 回答
200 浏览

asterisk - 什么是 Asterisk Dial() 选项来调用从被叫方收到的“正在振铃”状态的子程序?

当发生以下事件时,我需要执行 AGI 脚本:

  1. 来电(很简单,只是调用AGI()函数)。
  2. 当一个电话“响铃”时(我想不通!)。<-- Problem, how to do this?
  3. 当呼叫“已接听”时(我使用 中U(answer^${CALLID})的选项Dial())。
  4. 当电话挂断时(我使用h特殊分机)。

我的拨号方案如下所示:

看,我已经调用3 fast-agi了脚本incomingansweredhangup。现在我需要调用类似ringing的脚本,比如被叫方“响铃”时。如何做到这一点?