Arh*_*shi 5 php asterisk amazon-ami
我正在尝试连接到 Asterisk 管理器接口,但我遇到了代码阻塞和连接持久性的问题。以下是我所拥有的,然后是对出现问题的描述:
/**
* The parameters for connecting to the server
*/
$params = array('server' => '192.168.1.100', 'port' => '5038');
/**
* Instantiate Asterisk object and connect to server
*/
$ast = new Net_AsteriskManager($params);
/**
* Connect to server
*/
try {
$ast->connect();
} catch (PEAR_Exception $e) {
echo $e;
}
/**
* Login to manager API
*/
try {
$ast->login('admin', 'abcdefghi');
} catch(PEAR_Exception $e) {
echo $e;
}
Run Code Online (Sandbox Code Playgroud)
就连接而言,上述代码有效。我能够通过它获取数据。
问题是发送查询需要很长时间,当我以实时模式(控制台)观察服务器时,我看到用户管理员在发送输出后从服务器注销。
换句话说,即使我没有在代码中明确注销,“admin”也会被注销。我怎样才能使这个连接持久?
Asterisk AMI 不会自动关闭连接,但它是由网络层执行的,当它检测到长时间(=超时)没有活动时,它会断开连接。为了使连接持久化,需要保持连接繁忙(=保持活动),每当连接空闲时,您的应用程序应该以指定的时间间隔(=TTL)向目标服务器发送保持活动数据包。我们可以使用任何类型的命令作为保持活动数据包,例如星号中您可以使用“Ping”。
但是,如果您正在寻找一些现有的即用型解决方案,那么您可以使用一些 AMI 代理。以下是一些已知的 AMI 代理