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 Details

    • eslClient

      private final Client eslClient
  • Constructor Details

    • EslService

      public EslService()
  • Method Details

    • toResult

      private Map<String,Object> toResult(EslMessage msg)
      将 EslMessage 统一转换为 Map 结果 - ok: 是否以 +OK 开头 - replyText: Reply-Text 头信息 - contentType: Content-Type 头 - body: 按行拼接后的 Body 文本
    • toResult

      private Map<String,Object> toResult(CommandResponse response)
      将 CommandResponse 统一转换为 Map 结果(包含原始 command 与消息体)
    • api

      public Map<String,Object> api(String command, String args)
      执行同步 API 命令
      Parameters:
      command - FreeSWITCH API 命令(如 reloadxml、sofia、uuid_bridge 等)
      args - 命令参数,允许为空
      Returns:
      标准化结果 Map
    • bgapi

      public CompletableFuture<Map<String,Object>> bgapi(String command, String args)
      执行异步 BGAPI 命令(不阻塞),返回 BACKGROUND_JOB 事件内容
      Parameters:
      command - FreeSWITCH BGAPI 命令
      args - 命令参数
    • reloadXml

      public Map<String,Object> reloadXml()
      触发 reloadxml,重载主配置与拨号计划(对 SIP Profile 变更可能还需 sofia rescan/restart)
    • reloadAcl

      public Map<String,Object> reloadAcl()
      触发 reloadacl,重载访问控制列表
    • status

      public Map<String,Object> status()
      FreeSWITCH 运行状态
    • show

      public Map<String,Object> show(String what)
      show 系列查询(channels/calls/registrations 等)
      Parameters:
      what - 例如:channels、calls、registrations
    • xmlFlushCache

      public Map<String,Object> xmlFlushCache()
      刷新 XML 缓存(常与 mod_xml_curl 配合)
    • sofiaStatus

      public Map<String,Object> sofiaStatus()
      获取 sofia 总览状态
    • sofiaProfileAction

      public Map<String,Object> sofiaProfileAction(String profile, String action)
      对指定 profile 执行动作
      Parameters:
      profile - profile 名称,如 internal/external
      action - 动作:rescan/restart/start/stop 等
    • setLogLevel

      public Map<String,Object> setLogLevel(IModEslApi.LoggingLevel level)
      设置 FreeSWITCH 日志输出级别(同 console.conf 的级别枚举)
    • cancelLogging

      public Map<String,Object> cancelLogging()
      取消通过 setLogLevel 开启的日志输出
    • originateRaw

      public Map<String,Object> originateRaw(String args)
      直接透传 originate 参数串 示例:{"args":"{ignore_early_media=true}sofia/gateway/gw/1001 &park"}
    • uuidAnswer

      public Map<String,Object> uuidAnswer(String uuid)
      应答通道
    • uuidKill

      public Map<String,Object> uuidKill(String uuid, String cause)
      挂断通道(可选携带 cause)
      Parameters:
      uuid - 通道 UUID
      cause - 可选,hangup cause
    • uuidTransfer

      public Map<String,Object> uuidTransfer(String uuid, String dest, String dialplan, String context, String leg)
      转接通道
      Parameters:
      uuid - 通道 UUID
      dest - 目的路由(拨号计划目标)
      dialplan - 如 XML
      context - 如 default
      leg - 选项 -bleg|-both
    • uuidBridge

      public Map<String,Object> uuidBridge(String uuidA, String uuidB)
      桥接两个通道
    • uuidBroadcast

      public Map<String,Object> uuidBroadcast(String uuid, String file, String legs)
      向通道注入播放(广播)
      Parameters:
      legs - aleg|bleg|both,默认 aleg
    • uuidRecord

      public Map<String,Object> uuidRecord(String uuid, String action, String path)
      控制通道录音
      Parameters:
      action - start|stop
      path - start 时可选指定保存路径
    • uuidSetVar

      public Map<String,Object> uuidSetVar(String uuid, String var, String value)
      设置通道变量
    • uuidGetVar

      public Map<String,Object> uuidGetVar(String uuid, String var)
      获取通道变量
    • uuidSendDtmf

      public Map<String,Object> uuidSendDtmf(String uuid, String dtmf)
      向通道发送 DTMF
    • conference

      public Map<String,Object> conference(String room, String subCommand, String args)
      conference 子命令统一入口 示例:room=9000, subCommand=list;或 subCommand=kick, args=