呼叫模块

线路配置

cti_line@domain [哈希表]

  1. key 线路名字
  2. value 线路配置JSON格式

    {
    "params": {
    "count": 1,
    "rest": 1000,
    "fault_threshold": 0,
    "fault_try_interval": 0
    },
    "variables": {
    "origination_caller_id_number": "主叫号码"
    }
    }
    • params 参数
      • count [数字类型] 并发
      • rest [数字类型] 分配一次后的休息时间,单位毫秒
      • fault_threshold [数字类型] 失败阈值
      • fault_try_interval [数字类型] 故障超过阈值的重试间隔,单位毫秒
      • dialstring [字符串类型] 拨号串。比如usr/1000,sofia/gateway/ims/${destination_number},${destination_number}会替换成实际的被叫号码
    • variables 通道变量
      • origination_caller_id_number [字符串类型] 主叫号码
      • origination_caller_id_name [字符串类型] 主叫名字
      • ignore_early_media=true [字符串类型] 忽略早期媒体
      • absolute_codec_string [字符串类型] 编码持续
      • origination_uuid [字符串类型] UUID
      • originate_timeout [字符串类型] 呼叫超时 必须和(ignore_early_media=true )一起使用才生效。单位秒

线路组配置

cti_line_group@domain [哈希表]

  1. key 线路组名字
  2. value 线路组配置JSON格式

    {
    "enable": true,
    "redialer_count": 3,
    "rest": 1000,
    "redialer_rule": {
    "hangup_sipcode": [408],
    "hangup_cause": [16],
    "duration": 10,
    "bill": 1
    },
    "no_redialer_rule": {
    "hangup_sipcode": [408],
    "hangup_cause": [16],
    "duration": 10,
    "bill": 1
    },
    "line": [
    ["frist1", "first2"],
    ["second1", "second2"]
    ]
    }
    • enable [布尔类型] 是否启用
    • redialer [数字类型] 重拨次数,重播规则先判断是否符合no_redialer_rule中的任意一个规则,如果符合就不重拨,如果不符合在判断是否符合redialer_rule中的任意一个规则,如果符合就重播,如果都不符合,就不重拨。
    • rest [数字类型] 如果不为0,覆盖线路的rest
    • redialer_rule 符合规则重拨
      • hangup_code [数字数组类型] 结束通话的协议代码
      • hangup_cause [数字数组类型] 结果通话的原因(switch_call_cause_t)
      • duration [数字类型] 呼叫的持续时间小于这个值,单位毫秒
      • bill [数字类型] 接通时间小于这个值,单位毫秒
    • no_redialer_rule 符合规则不重拨
      • hangup_code [数字数组类型] 结束通话的协议代码
      • hangup_cause [数字数组类型] 结果通话的原因(switch_call_cause_t)
      • duration [数字类型] 呼叫的持续时间大于这个值,单位毫秒
      • bill [数字类型] 接通时间大于这个值,单位毫秒
    • line 使用的线路,二维数组,可实现多个优先级,例子说明:先frist1和frist2中查找空闲线路,如果frist1和frist2都不可用,就在”second1”,”second2”中查找空闲线路。

队列呼叫任务

cti_queue_dialer_task@template [哈希表]

  1. key任务名字
  2. value 任务配置JSON格式

    {
    "params": {
    "enable": true,
    "line_group": ["外呼使用的线路组"],
    "limit":100,
    "start_time": "2020-1-20 12:00",
    "stop_time": "2020-1-22 12:00",
    "work_hour": [{
    "begin": "8:00",
    "end": "12:00"
    }, {
    "begin": "14:00",
    "end": "18:00"
    }],
    "work_week": [1,2,3,4,5],
    "holiday": [{
    "begin": "2020-1-20 12:00",
    "end": "2020-1-21 12:00"
    }, {
    "begin": "2020-1-21 12:00",
    "end": "2020-1-22 8:00"
    }],
    "number_queue": "号码队列",
    "domain": [""],
    "destination_extension":"8888",
    "destination_dialplan":"XML",
    "destination_context":"default"

    },
    "variables": {
    "origination_caller_id_number": "被叫号码",
    "absolute_codec_string": "pcma,pcmu,g729"
    }
    }
    • params 任务参数
      • enable [布尔] 是否启用任务
      • line_group [数组] 外呼使用的线路组,如果配置多个线路组,第一个线路组呼叫失败,会使用第二个继续呼叫。
      • limit [数字] 任务并发,同时呼叫多少号码。
      • start_time [字符串] 任务启动时间
      • stop_time [字符串] 任务停止时间
      • work_time [数组] 任务工作时间,可以配置多个时间范围
        • begin [字符串] 开始时间
        • end [字符串] 结束时间
      • work_week [数组] 工作日,参数是星期,就是每个星期的那些天是工作日。比如 星期一到星期五是工作日,0代表星期日。
      • holiday [数组] 放假时间,参数是具体的放假时间范围。
      • number_queue 任务关联的号码队列。
      • doamin 哪些服务器执行这个任务。一个任务可以同时分配给多个服务器共同执行。
      • destination_extension 应答后转接目的分机
      • destination_dialplan 应答后转接目的拨号方案类型,比如XML
      • destination_context 应答后转接目的上下文,比如default,public
    • variables 任务的通道变量
      • origination_caller_id_number [字符串类型] 主叫号码
        • origination_caller_id_name [字符串类型] 主叫名字
        • ignore_early_media=true [字符串类型] 忽略早期媒体
        • absolute_codec_string [字符串类型] 编码持续

cti_queue_dialer_task@host [哈希表]

  1. key 任务名字
  2. value 任务配置JSON格式,和 cti_queue_dialer_task@template 含义一样,未配置的会使用 cti_queue_dialer_task@template 模板配置。

号码队列 [列表]

{
"params": {
"number":"被叫号码"
},
"variables": {
"origination_caller_id_number": "被叫号码",
"absolute_codec_string": "pcma,pcmu,g729"
}
}
  • number 被叫号码
  • variables 通道变量,优先级 号码配置(本配置) > cti_queue_dialer_task@host > cti_queue_dialer_task@template > cti_line@domain

定时呼叫

cti_schedule_dialer_config@domain [哈希表]

  1. key任务名字
  2. value 任务配置JSON格式
    {
    "params": {
    "line_group": ["外呼使用的线路组"],
    "destination_extension":"8888",
    "destination_dialplan":"XML",
    "destination_context":"default"

    },
    "variables": {
    "origination_caller_id_number": "被叫号码",
    "absolute_codec_string": "pcma,pcmu,g729"
    }
    }

cti_schedule_dialer_number@domain [有序集合]

  1. score 计划呼叫的时间戳
  2. string 号码配置json,和号码队列的号码配置一样。

    {
    "params": {
    "number":"被叫号码",
    "expires":0,
    "config":"cti_schedule_dialer_config@domain里面的任务名字"
    },
    "variables": {
    "origination_caller_id_number": "被叫号码",
    "absolute_codec_string": "pcma,pcmu,g729"
    }
    }
    • expires 过期时间(unix时间戳,1970年1月1日(UTC/GMT的午夜)开始所经过的秒数),当前时间超过这个时间,就不会呼叫这个号码了,如果值为0,忽略这个参数。如果没可用线路时,重新写回redis,score设置为当前时间+60,如果expires为0,或者超过了expires,就不会写会redis了。

配置改变通知

config@all config@host [通道]

cti_queue_dialer_task@template改变PUBLISH 通知到 config@all,cti_queue_dialer_task@host改变PUBLISH 通知到 config@host。

{
"type":"config_change",
"table":"cti_queue_dialer_task",
"key":"test"
}

{
"type":"config_change",
"table":"cti_line",
"key":"abc"
}

{
"type":"config_change",
"table":"cti_line_group",
"key":"g1"
}
  • type,config_change:配置改变
  • table,那个表修改了,只需要@前面的。
  • key table的主键,比如任务表名字。