如何从远程服务器连接到ESL?

时间:2014-05-23 07:50:37

标签: php freeswitch

我想在PHP中创建一个Web界面来查看FreeSWITCH活动(调用等),这些活动可能托管在与运行FS的服务器不同的服务器上。

我已经使用命令行(php single_command.php status)查看了FS服务器上的服务器状态,但现在我想从另一台服务器看到此状态。

当我尝试将ESL.php文件复制到此远程服务器并尝试检查状态时,我收到以下错误消息:

Fatal error: Call to undefined function new_ESLconnection() in  
/var/www/freeswitch/ESL.php on line 127

这是我的index.php文件:

<?php
ini_set('display_errors', 1);
$password = "ClueCon";
$port = "8021";
$host = "192.168.2.12";

require_once('ESL.php');

set_time_limit(0); // Remove the PHP time limit of 30 seconds for completion due to loop watching events

// Connect to FreeSWITCH
$sock = new ESLconnection($host, $port, $password);
// We want all Events (probably will want to change this depending on your needs)
$sock->sendRecv("status");

// Grab Events until process is killed
while($sock->connected()){
  $event = $sock->recvEvent();
  print_r($event->serialize());
}
?>

我发现网络服务器没有安装FreeSWITCH,所以错误信息很明显,但我不知道如何从这个网络服务器访问这些信息。

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

根据您的需要,您可以使用入站或出站套接字。我不太了解PHP和FS事件套接字但是用python尝试了。我强烈建议您完成此link

所以,如果你只是想做一个小任务,如发起一个电话,桥接任何两个给定的号码等,我认为你应该使用入站套接字(从你的web服务器向freeswitch服务器发出cli命令)或mod_xml_rpc。

如果您希望完全控制FS服务器上发生的所有事情,例如显示实时呼叫状态并修改其状态或说出完整的交互式电话仪表板,那么您应该使用Outbound套接字。(您的FS服务器将发送所有事件到你的网络服务器。)

但是在你的情况下问题是我认为你没有正确构建php ESL模块。 此链接可能会帮助您installing ESL

答案 1 :(得分:0)

您可能需要考虑使用XMLRPC,而不是使用ESL。这种联系非常直接:

https://wiki.freeswitch.org/wiki/Freeswitch_XML-RPC

XMLRPC的凭据位于autoloads_configs / xml_rpc.conf.xml中