由于
mod_event_socket是一个基于TCP的接口来控制FreeSWITCH。默认值是绑定到127.0.0.1端口8021,默认密码是ClueCon。
开发思路:
1、用 Workerman 创建一个 websocket 服务,对自己的网站进行服务;
2、再用 Workerman 创建一个客户端去连接 FreeSWITCH服务器的 mod_event_socket,
代码示例
use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
$worker = new Worker ( 'websocket://0.0.0.0:5678' );
$worker->onWorkerStart=function($worker){
//链接freeswitich 服务器 默认 tcp 8021 端口 密码:ClueCon
$fsconn = new AsyncTcpConnection('tcp://127.0.0.1:8021'); //workerman 与freeswitch 在同一服务器,不同时输入正确IP地址
$fsconn->onMessage = function($fsconn, $data) {
$array = array(" "," ","\t","\n","\r");
$content_type= str_replace($array, '', $data);
if ($content_type == "Content-Type:auth/request") {
$re=$fsconn->send("auth ClueCon\r\n\r\n");
$re=$fsconn->send("event json ALL\r\n\r\n");//订阅所有的事件,项目中可以有选择订阅
}
};
$fsconn->connect();
};
$worker->onMessage = function ($connection, $data) {
//TODO
//此处接受网站发来的消息,如外呼、注册等消息
//可参考向指定客户端发送消息案例 http://doc.workerman.net/faq/send-data-to-client.html
};
Worker::runAll ();