场景描述
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);
其他实现方式
亦可利用自定义消息实现:在客户端发送自定义消息,在服务器端监听该消息并做相应处理。
这种方式没仔细研究,待有时间再将其补充完整。