外呼

智能外呼对接文档
一, 申请对接外呼任务
方式:统一通知平台页面配置

字段 字段名称 数据类型 备注
system_code 系统编码 String(必填) 申请外呼服务系统
type 任务类型 String(必填) 调用外呼服务时传递的任务标识,,一个系统可以申请多个任务类型
replay_times 播报内容重复次数 Int 不填值默认3
addr 调用方消息返回接口地址 String 不填值情况下系统会返回至kafka,调用方自行订阅消息,kafka在other2集群,主题”INS_CORE_RESPONSE”
ips 调用方实例ip String(必填) 用于生产调用时做白名单控制,支持网段,多实例多网段中间用”,”隔开
operation_type 操作类型 String(必填) 新增操作填add ,修改填uopdate,删除填delete
menu_list menu_list列表开始
menu_code 菜单编码 String 唯一
menu_content 菜单播报内容 String 播报菜单内容停顿用标点符号隔开
key _list 播报语音接受按键 String key _list列表开始
menu_key 播报语音接受按键 int 用于接收客户反馈按键
key_response_content 选择按键后的播报内容 String 如secondary_menu为空,此字段必填值
secondary_menu 选择按键后的下级菜单编码 String 如key_response_content为空,此字段必填值,内容是下级菜单编码
key _list 播报语音接受按键 String key _list列表结束

json例子:
{
“system_code”: ”CLS-RIDER”,
“type”: ”PQYY”,
“replay_times”: 3,
“addr”: ”http: www.baidu.com”,
“ips”: ”0.0.0.1,0.0.0.2”,
“operation_type”: ”add”,
“menu_list”: [{
“menu_code”: ”PQYY”,
“menu_content”: “下级菜单请按1,具体操作请按2”,
”key_list”: [{
“menu_key”: 1,
“key_response_content”: ””,
“secondary_menu”: ”PQYY_2”

	},
	{
		“menu_key”: 2,
		“key_response_content”: ”谢谢你的按键”,
		“secondary_menu”: ””
	}]
},
{
	“menu_code”: ”PQYY_2”, 
	”menu_content”: ”你帅请按1,不帅请按2”,
	”key_list”: [{
		“menu_key”: 1,
		“key_response_content”: ”你很帅”,
		“secondary_menu”: ””
	},
	{
		“menu_key”: 2,
		“key_response_content”: ”挺帅”,
		“secondary_menu”: ””
	}]
}]

}

功能:
主要用于进行系统接入配置,主要体现在任务类型配置,IP白名单配置或者网段配置,以及按键及按键内容配置!
涉及表有:

  1. 任务类型表:taskType
    systemCode:系统名称
    type:任务类型
    addr:反馈接口地址
    MenuCode:菜单编码(选取code集合中第一个传入code)
    replayTimes:语音重播次数
  2. 网段白名单表:whiteSegment
    Segment:网段值
    taskType:任务类型
  3. IP白名单表:whiteList
    clientIp:实例ip
    taskType:任务类型
  4. 按键内容表:ivr_menu
    code:菜单code(唯一)
    keys:有效按键
    content:语音播报内容
    task_type:任务类型
  5. 播报内容表: ivr_menu_response
    menu_code:菜单code(与按键内容表中code关系是一对多)
    menu_code_key:按键
    content:语音播报内容
    secondary_menu:下级菜单code
    task_type:任务类型
    flag: 1、转人工 2、接收短信号码 3、重播全部语音

二, 外呼任务接口调用
字段 字段名称 数据类型 备注
businessId 业务系统ID String 业务系统定义的标识,在任务反馈会返回
phoneNumber 外呼号码 String(必填)
content 外呼内容 String(必填) 完整播报内容
startTime 外呼开始时间 Date
stopTime 外呼截止时间 Date
type 任务类型 String(必填) 在申请外呼服务时填的任务类型

1、返回:response 含 returnFlag(成功或失败标识)returnMessage(成功或失败原因)和 taskId(唯一标识)
成功返回例子:
{
“returnFlag”: “0”,
“returnMessage”:“成功”,
“taskId”:“0001”
}
失败返回例子:
{
“returnFlag”: “1”,
“returnMessage”:“电话号码含有非数字字符”,
“taskId”:""
}

2、失败原因列表:
电话号码含有非数字字符
电话号码长度校验失败
外呼内容字数长度校验失败
外呼号码已在黑名单
IP不在白名单
任务类型不存在
其他原因

功能:
进行任务有效性识别,保存请求日志,任务执行时间,固定语音播报内容等信息以方便IVR扫描任务进行呼叫!
涉及表:

  1. 请求日志表:request_log
    phone_number:外呼号码
    content:固定外呼内容
    start_time:开始外呼时间
    stop_time:结束外呼时间
    task_type:任务类型
    client_ip:客户端IP
    response_code:请求的返回码(0-失败,正整数-成功)
  2. 任务表:task
    Task_id:等于请求日志表ID
    system_code:系统名称
    phone_number:外呼号码
    content:外呼内容
    start_time: 预期最早外呼时间
    stop_time: 预期最晚外呼时间
    priority:任务优先级
    replay_times: 语音重播次数
    status: 外呼状态(0-未外呼,1-已外呼,3-超时未外呼)
    ivr_server:ivr服务器ip
    retry_time:反馈次数
    menu_code: 菜单编码
    prefix_number:外呼前缀

技术点:
Inet_aton:网址转int数据
inet_ntoa:int数据转网址

任务反馈:
1、方式:kafka,http,https
2、Kafka:INS_CORE_RESPONSE 集群:other2
3、研发人员:邓朝贵
字段 字段名称 数据类型 备注
businessId 业务系统ID String 对应外呼请求任务时的businessId
taskId 任务ID String 对应外呼成功时返回的taskId
phoneNumber 客户号码 String
status 外呼状态 int 0:未外呼,1:已外呼
beginTime 实际外呼开始时间 Date
connectTime 实际外呼接通时间 Date 此字段为空的话,代表已外呼客户未接听
finishTime 实际外呼结束时间 Date
keyRecord 客户按键 String
systemCode 系统编码 String
message 备注 String 任务执行备注
talkTimes 接通时长 int finishTime- connectTime

扫描二维码关注公众号,回复: 4585257 查看本文章

若申请对接外呼任务时有传入接口地址:
反馈方式为: 以http post方式调用传入接口地址,
请求的Content-Type为application/x-www-form-urlencoded

数据推送成功后接口返回样例:
1.推送成功接口返回样例
{
“errno”: 0,
“errmsg”:“成功”,
}
2.推送失败接口返回样例
{
“errno”: 1,
“errmsg”:“失败”,
}

若申请对接外呼任务时未传入接口地址
反馈方式为: 利用kafka反馈数据, kafka在other2集群,主题”INS_CORE_RESPONSE”,请自行订阅信息

反馈类型数据查询:
查询反馈日志中未反馈或者反馈失败但是反馈次数小于三次的数据进行反馈,若task_type表中存在反馈地址则通过http请求调用反馈地址进行反馈,若不存在反馈地址则通过发送kafka形式由用户自行订阅kafka形式进行反馈!

查询条件:
String sql=" SELECT f.id AS id,f.task_id AS taskId,f.phone_number AS phoneNumber,f.status AS status,"+""
			+" DATE_FORMAT(f.`begin_time`,'%Y-%m-%d %H:%i:%S') AS beginTime,DATE_FORMAT(f.`connect_time`,'%Y-%m-%d %H:%i:%S') AS connectTime,DATE_FORMAT(f.`finish_time`,'%Y-%m-%d %H:%i:%S') AS finishTime,f.talk_times AS talkTimes,"+""
			+" f.key_record AS keyRecord,f.sysCode AS sysCode,t.addr AS addr,r.business_id AS businessId ,r.response_message AS message,f.mobile_phone AS  mobilePhone  FROM feedback_log f "+""
			+" INNER JOIN request_log r  ON f.task_id = r.id INNER JOIN task_type t ON r.task_type = t.type Where f.id IN (:ids)";

猜你喜欢

转载自blog.csdn.net/congxinkaishi_136/article/details/85122823