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

我正在尝试连接到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)将保持活动数据包发送到目标服务器.我们可以使用任何类型的命令作为保持活动包,如星号,您可以使用“Ping”.

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

上一篇:STM32硬件I2C双机通信


下一篇:11章学习笔记