FreeSWITCH 电话会议(ESL实现)

场景描述

IM软件与办公相结合,发起人选择多人建立电话会议。

实现思路

获取参会人的电话号码后,通过ESL将每个电话号码呼入会议。

核心命令

originate sofia/gateway/gatewayName/telNumber &conference(conferenceName)

核心代码

// 初始化一个handle,用于标识到FreeSWITCH的Socket连接
esl_handle_t handle = {{ 0 }};

// ip = ...
// port = ...
// password = ...

// 连接服务器
esl_status_t status = esl_connect(&handle, ip, port, NULL, password);

// 错误处理
// ...

std::string conferenceName = getUuid();  // 创建一个 UUID 以唯一标识会议名称
std::vector<std::string> collTel;  // collection of telephone numbers
// collTel = ...
// std::string gatewayName = ...
// 遍历电话号码,将每一个电话号码呼入会议
for (auto iter = collTel.begin(); iter != collTel.end(); ++iter)
{
    std::ostringstream oss;
    oss << "api originate sofia/gateway/" << gatewayName << "/" << *iter
        << " &conference(" << conferenceName << ")\n\n";
    esl_send(&handle, oss.str().c_str());
}

// 断开连接
esl_disconnect(&handle);

其他实现方式

亦可利用自定义消息实现:在客户端发送自定义消息,在服务器端监听该消息并做相应处理。
这种方式没仔细研究,待有时间再将其补充完整。

你可能感兴趣的:(FreeSWITCH,音视频,FreeSWITCH,esl,电话会议)