FreeSWITCH+Workerman+PHP 搭建呼叫中心

由于FreeSWITCH官方已经不再维护FreeSWITCH php esl模块了,但是通过mod_event_socket仍然可以使用php连接;我们可以使用 Workerman 作为中间件,进行连接网站与FreeSWITCH,实现在网站拨号、显示当前话机状态(空闲、振铃、通话、来电)等信息。

mod_event_socket是一个基于TCP的接口来控制FreeSWITCH。默认值是绑定到127.0.0.1端口8021,默认密码是ClueCon。

FreeSWITCH+Workerman+PHP 搭建呼叫中心

开发思路:
1、用 Workerman 创建一个 websocket 服务,对自己的网站进行服务;
2、再用 Workerman 创建一个客户端去连接 FreeSWITCH服务器的 mod_event_socket,

代码示例

<?php 
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 ();

前端用 WebSocket 连接服务器的 5678端口,参考 https://www.runoob.com/html/html5-websocket.html

本文收集于网络,仅供技术交流使用,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容, 欢迎发送邮件至 admin@webse.cn 举报,一经查实,本站将立刻删除涉嫌侵权内容,本文链接:https://webse.cn/15844.html

(3)
打赏 微信扫一扫 微信扫一扫
上一篇 2019-12-27 11:13
下一篇 2020-02-24 17:23

相关推荐

发表回复

登录后才能评论

评论列表(3条)

  • xiaopi
    xiaopi 2022-02-17 14:51

    你好,请问在websocket的Message回调中,如何维护子进程生成的tcp客户端?

  • xiaopi
    xiaopi 2022-02-17 14:52

    比如在websocket的回调中,收到网站发出的拨号指令,如何调用子进程建立的tcp客户端,把指令传递给freeswitch?

    • admin
      admin 2022-03-09 09:20

      @xiaopi可以使用 websocket 作为服务,让网站进行链接,再把他当作客户端链接 FS