gpt4 book ai didi

php - 如何使用 PHP 建立与 Asterisk 管理器的持久连接?

转载 作者:可可西里 更新时间:2023-10-31 23:24:04 25 4
gpt4 key购买 nike

我正在尝试连接到 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;
}

就连接而言,以上代码有效。我可以通过它获取数据。

问题是发送查询需要很长时间,当我以实时模式(控制台)观察服务器时,我看到用户管理员在发送输出后从服务器注销。

换句话说,即使我没有在代码中明确注销,“admin”也会被注销。我怎样才能使这种连接持久化?

最佳答案

Asterisk AMI 不会自动关闭连接,但是网络层会自动关闭连接,当它检测到长时间没有事件(=超时)时,它会断开连接。要使连接持久化,需要使其保持忙碌(=保持事件状态),每当连接空闲时,您的应用程序都应以指定的时间间隔(=TTL)向目标服务器发送保持事件状态的数据包。我们可以使用任何类型的命令作为保活数据包,例如在 Asterisk 中您可以使用“Ping”。

但是,如果您正在寻找一些现成可用的解决方案,那么您可以为此使用一些 AMI 代理。 here are some known AMI proxies

关于php - 如何使用 PHP 建立与 Asterisk 管理器的持久连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9710092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com