FreeSWITCH ESL添加PHP模块支持 freeswitch-esl-php

Song • 103次浏览 • 0个评论 • 2018-12-16 10:58:19

此功能库基于freeswitchmod_event_socket模块开发,支持所有版本PHPmod_event_socket是一个基于TCP的接口来控制FreeSWITCH。默认值是绑定到127.0.0.1端口8021,默认密码是ClueCon

一、环境配置

你可以使用任何版本的php进行连接,freeswitch可以是远程服务器也可以是本地。

  • php
  • freeswitch

二、快速开始

使用前先clone线上库,然后运行代码测试Demo即可。

git clone 
cd freeswith_php_esl

然后运行测试代码即可测试:

> php demo.php

FreeSWITCH Version 1.9.0+git~20180619T173242Z~25e9376b29~64bit (git 25e9376 2018-06-19 17:32:42Z 64bit)

三、API列表

1、connect(ip,port,password)

用于连接freeswitch服务器,返回结果为truefalse;使用方法如下:

<?php
require_once 'freeSwitchEsl.php';

$freeswitch = new Freeswitchesl();
$connect = $freeswitch->connect("127.0.0.1","8021","ClueCon");
if ($connect) {
    echo "connect success";
}

如果登陆失败会输出错误信息,可以自己去掉注释。

2、api(api comment,args)

通过ESL执行API命令,此API会返回数据执行结果,如果不想等待数据返回或者异步执行可以直接使用下方bgapi

$version = $freeswitch->api("version");
$status = $freeswitch->api("status");
$sofia = $freeswitch->api("sofia status");

更多freeswitchapi命令可以执行:

$sofia = $freeswitch->api("show api");

3、bgapi(api comment,args)

api(api comment)方法相同,非阻塞模式异步执行:

$originate = $freeswitch->bgapi("originate user/1000 &echo");

4、execute(comment,args,uuid)

api(api comment)方法相同,异步执行:

$originate = $freeswitch->bgapi("originate user/1000 &echo");

execute

5、executeAsync(comment,args,uuid)

api(api comment)方法相同,异步执行:

$originate = $freeswitch->bgapi("originate user/1000 &echo");

execute

6、events(sorts,args)

event命令用于订阅来自FreeSWITCH的事件。您可以在同一行上指定监听的所有的事件,它们应该用空格分隔;sorts即返回数据类型,args即监听的事件。

$status = $freeswitch->events("plain","ALL");

7、recvEvent()

events(sorts,args)配套使用,用于获取所有数据,返回服务器的原始数据。

$received_parameters = $freeswitch->recvEvent();
a、serialize(received_parameters,type)

serialize即按住指定格式返回数据,建议与events监听的类型一样,这样处理性能更加优秀;typeplain、jsonxml三种类型。

$serialize_info = $freeswitch->serialize($received_parameters,"xml");
b、getHeader(received_parameters,args)

可以获取返回的指定数据,如果不存在则返回空。

$Event_Name = $freeswitch->getHeader($received_parameters,"Event-Name");

使用例子:

<?php
require_once 'freeSwitchEsl.php';

$freeswitch = new Freeswitchesl();
$connect = $freeswitch->connect("127.0.0.1","8021","ClueCon");
if ($connect) {
    $status = $freeswitch->events("json","ALL");
    while (true) {
        $received_parameters = $freeswitch->recvEvent();
        if (!empty($received_parameters)) {
            $info = $freeswitch->serialize($received_parameters,"json");
            var_dump($info);
            $Event_Name = $freeswitch->getHeader($received_parameters,"Event-Name");
            echo $Event_Name;
        }
    }
}

7、disconnect()

断开phpfreeswitch之间的socket;建议每次使用后都需要断开。

库地址
earnp/freeswitch-esl-php

提交评论
要回复文章请先登录注册
用户评论
  • 没有评论
    公告
    中国晚上好,随时随地分享前沿科技,好吃好玩,有趣有料的新鲜事;本站可以分享资源,技术,观点,态度;同时希望大家做一个文明的分享者!
    广告
    pytorch中文网