Package com.bytedesk.call.esl
Class EslService
java.lang.Object
com.bytedesk.call.esl.EslService
@Service
@ConditionalOnProperty(prefix="bytedesk.call.freeswitch",
name="enabled",
havingValue="true",
matchIfMissing=false)
public class EslService
extends Object
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescription执行同步 API 命令执行异步 BGAPI 命令(不阻塞),返回 BACKGROUND_JOB 事件内容取消通过 setLogLevel 开启的日志输出conference(String room, String subCommand, String args) conference 子命令统一入口 示例:room=9000, subCommand=list;或 subCommand=kick, args=originateRaw(String args) 直接透传 originate 参数串 示例:{"args":"{ignore_early_media=true}sofia/gateway/gw/1001 &park"}触发 reloadacl,重载访问控制列表触发 reloadxml,重载主配置与拨号计划(对 SIP Profile 变更可能还需 sofia rescan/restart)设置 FreeSWITCH 日志输出级别(同 console.conf 的级别枚举)show 系列查询(channels/calls/registrations 等)sofiaProfileAction(String profile, String action) 对指定 profile 执行动作获取 sofia 总览状态status()FreeSWITCH 运行状态toResult(CommandResponse response) 将 CommandResponse 统一转换为 Map 结果(包含原始 command 与消息体)toResult(EslMessage msg) 将 EslMessage 统一转换为 Map 结果 - ok: 是否以 +OK 开头 - replyText: Reply-Text 头信息 - contentType: Content-Type 头 - body: 按行拼接后的 Body 文本uuidAnswer(String uuid) 应答通道uuidBridge(String uuidA, String uuidB) 桥接两个通道uuidBroadcast(String uuid, String file, String legs) 向通道注入播放(广播)uuidGetVar(String uuid, String var) 获取通道变量挂断通道(可选携带 cause)uuidRecord(String uuid, String action, String path) 控制通道录音uuidSendDtmf(String uuid, String dtmf) 向通道发送 DTMFuuidSetVar(String uuid, String var, String value) 设置通道变量转接通道刷新 XML 缓存(常与 mod_xml_curl 配合)
-
Field Details
-
eslClient
-
-
Constructor Details
-
EslService
public EslService()
-
-
Method Details
-
toResult
将 EslMessage 统一转换为 Map 结果 - ok: 是否以 +OK 开头 - replyText: Reply-Text 头信息 - contentType: Content-Type 头 - body: 按行拼接后的 Body 文本 -
toResult
将 CommandResponse 统一转换为 Map 结果(包含原始 command 与消息体) -
api
执行同步 API 命令- Parameters:
command- FreeSWITCH API 命令(如 reloadxml、sofia、uuid_bridge 等)args- 命令参数,允许为空- Returns:
- 标准化结果 Map
-
bgapi
执行异步 BGAPI 命令(不阻塞),返回 BACKGROUND_JOB 事件内容- Parameters:
command- FreeSWITCH BGAPI 命令args- 命令参数
-
reloadXml
触发 reloadxml,重载主配置与拨号计划(对 SIP Profile 变更可能还需 sofia rescan/restart) -
reloadAcl
触发 reloadacl,重载访问控制列表 -
status
FreeSWITCH 运行状态 -
show
show 系列查询(channels/calls/registrations 等)- Parameters:
what- 例如:channels、calls、registrations
-
xmlFlushCache
刷新 XML 缓存(常与 mod_xml_curl 配合) -
sofiaStatus
获取 sofia 总览状态 -
sofiaProfileAction
对指定 profile 执行动作- Parameters:
profile- profile 名称,如 internal/externalaction- 动作:rescan/restart/start/stop 等
-
setLogLevel
设置 FreeSWITCH 日志输出级别(同 console.conf 的级别枚举) -
cancelLogging
取消通过 setLogLevel 开启的日志输出 -
originateRaw
直接透传 originate 参数串 示例:{"args":"{ignore_early_media=true}sofia/gateway/gw/1001 &park"} -
uuidAnswer
应答通道 -
uuidKill
挂断通道(可选携带 cause)- Parameters:
uuid- 通道 UUIDcause- 可选,hangup cause
-
uuidTransfer
public Map<String,Object> uuidTransfer(String uuid, String dest, String dialplan, String context, String leg) 转接通道- Parameters:
uuid- 通道 UUIDdest- 目的路由(拨号计划目标)dialplan- 如 XMLcontext- 如 defaultleg- 选项 -bleg|-both
-
uuidBridge
桥接两个通道 -
uuidBroadcast
向通道注入播放(广播)- Parameters:
legs- aleg|bleg|both,默认 aleg
-
uuidRecord
控制通道录音- Parameters:
action- start|stoppath- start 时可选指定保存路径
-
uuidSetVar
设置通道变量 -
uuidGetVar
获取通道变量 -
uuidSendDtmf
向通道发送 DTMF -
conference
conference 子命令统一入口 示例:room=9000, subCommand=list;或 subCommand=kick, args=
-