接口对接,快速集成文档参照。
任务调用接口集成
第一步:获取实例ID以及场景ID
参照业务管理创建外呼实例和外呼话术后,进行获取对应的实例ID(InstanceId)及场景ID(ScriptId)。获取位置参见下图:
业务管理:找到创建好的业务,点击编辑,会展示实例ID。
场景ID:进入业务,找到场景管理,在所创建的话术场景侧,点击场景ID,即可获取。
第二步:创建外呼任务
调用CreateJobGroup接口,获取返回的JobGroupId
第三步:上传外呼号码名单
调用AssignJobs - 批量创建外呼任务接口,传入上面获取到的JobGroupId,将外呼被叫号码名单传入该任务中
任务结果自动推送回调
MQ简介
介绍:对于每个外呼任务的呼叫完成状态,智能外呼服务会通过消息队列(RocketMQ)的方式通知调用方。消息中会返回任务Id,外呼任务的状态(接通/无人接听/呼叫失败)等。
操作:接入方在阿里云购买的RocketMQ服务,RocketMQ需要为版本4.0的MQ服务,现在默认建立都是5.0的MQ实例,需要客户通过自助服务工具自行申请加白为MQ 4.0,客户建立好MQ实例以及Topic和GroupId后,需要提供以下信息给到智能外呼机器人的运营人员:
1.消息队列实例
2.子账号的AK 和 SK,需要同时开通MQ和智能外呼机器人的管理权限
3.Topic和GroupId
4.namesever
MQ的SDK版本建议:
<dependency>
<groupId>com.aliyun.openservices</groupId>
<artifactId>ons-client</artifactId>
<version>1.8.8.Final</version
</dependency>
MQ开通以及集成
RocketMQ的购买参见其产品详情页:产品详情页。
订阅RocketMQ消息参见RocketMQ的帮助文档:消息队列RocketMQ版帮助文档。
开通消息队列后该如何获取任务完成信息参考文档:
MQ消息类型:
消息级别 | 消息类型 | EventType |
任务 | 任务完成 | JobComplete |
通话 | 开始呼叫 | Dialing |
通话 | 接通通话 | CallAnswered |
通话 | 通话结束:挂机或者未接通超时 | CallFinished |
录音 | 录音生成成功 | RecordingReady |
CallFinished消息体
{
"contacts": [
{
"honorific": "0861752659680",
"id": "c27c0414-e8db-4735-9794-95c08d03a668",
"name": "0861752659680",
"phoneNumber": "19990563338",
"referenceId": "C5"
}
],
"eventTime": 1723450215923,
"eventType": "CallFinished",
"extras": [
{
"key": "TenantId",
"value": "1871840481341364"
},
{
"key": "ServiceId",
"value": "209566505377768184"
}
],
"groupId": "cedf70e5-c801-49f3-9215-e772293f5e7a",
"id": "d6f07788-bb47-41f9-b8c2-58720bf238df",
"instanceId": "87a3b859-6124-43e5-9371-40dc90e80170",
"referenceId": "f2dcbca80a3d49caadfcd16d1650b812",
"tagHits": [
],
"task": {
"actualTime": 1723450215592,
"callId": "dec3b9ec40c14961a8c47a1366fb7901",
"calledNumber": "19990563338",
"callingNumber": "075536567741",
"endTime": 1723450215592,
"id": "770ab0c4-56dd-4c0f-b44d-8539b7b3d393",
"planedTime": 1723450208000,
"status": "Busy"
}
}
JobComplete消息体:
{
"eventType":"JobComplete",
"eventTime":1588850490334,
"instanceId":"08a4c460-****-737e069a154f",
"groupId":"8869f35d-****-9b46437bc0fa",
"id":"08a4c460-****-737e069a154f",
"status":"Failed",
"failureReason":"NoAnswer",
"extras":[
{
"key":"custom",
"value":"aaa"
}
],
"contacts":[
{
"id":"762c2e16-****-00a0f13372b1",
"honorific":"test",
"name":"test",
"phoneNumber":"11111111",
"referenceId":"762c2e16-****-00a0f13372b1"
}
],
"tasks":[
{
"id":"60b48efe-****-5d6b70479641",
"callId":"60b48efe-****-5d6b70479641",
"planedTime":1588850490334,
"actualTime":1588850490334,
"endTime":1588850490334,
"callingNumber":"123456",
"calledNumber":"11111111",
"status":"NoAnswer"
},
{
"id":"60b48efe-****-5d6b70479642",
"callId":"60b48efe-****-5d6b70479642",
"planedTime":1588850590334,
"actualTime":1588850590334,
"endTime":1588850590334,
"callingNumber":"123456",
"calledNumber":"11111111",
"status":"NoAnswer"
}
]
}
RecordingReady消息体:
{
"eventType":"RecordingReady",
"eventTime":1588850490334,
"instanceId":"08a4c460-***-737e069a154f",
"groupId":"8869f35d-***-9b46437bc0fa",
"id":"08a4c460-***-737e069a154f",
"extras":[
{
"key":"custom",
"value":"aaa"
}
],
"contacts":[
{
"id":"762c2e16-***-00a0f13372b1",
"honorific":"test",
"name":"test",
"phoneNumber":"11111111",
"referenceId":"762c2e16-***-00a0f13372b1"
}
],
"recording":{
"taskId":"60b48efe-***-5d6b70479641",
"callId":"60b48efe-***-5d6b70479641",
"duration":5,
"fileName":"a.wav",
"mkvUrl":"https://a.wav",
"url":"https://a.wav"
}
}
枚举值:
任务级别
- JobComplete 任务完成
通话级别
- Dialing 开始呼叫
- CallAnswered 通话接通
- CallFinished 通话结束,挂机或者未接通超时
录音级别
- RecordingReady 录音生成成功
JobGroup状态示例值
-JobGroupStatus {
Draft(0),草稿
Scheduling(1),调度中
Executing(2),执行中
Completed(3),已完成
Paused(4),挂起
Failed(5),失败
Cancelled(6),已取消
Initializing(7),初始化
}
Job状态示例值
-JobStatus {
Scheduling(0, "调度中"),
Executing(1, "执行中"),
Succeeded(2, "结束-已触达"),
Paused(3, "暂停"),
Failed(4, "结束-未触达"),
Cancelled(5, "已取消-人工干预"),
Drafted(6, "草稿态"),
}
Task状态示例值
-TaskStatus {
Executing(0, "正在拨打"),
Succeeded(1, "已接通"),
NoAnswer(2, "未接通-无人接听"),
NotExist(3, "未接通-空号"),
Busy(4, "未接通-占线"),
Cancelled(5, "未呼出-任务停止"),
Failed(6, "失败"),
NotConnected(7, "未接通-无法接通"),
PoweredOff(8, "未接通-关机"),
OutOfService(9, "未接通-被叫停机"),
InArrears(10, "未接通-被叫欠费"),
EmptyNumber(11, "未呼出-空号不外呼"),
PerDayCallCountLimit(12, "未呼出-超出每日上限"),
ContactBlockList(13, "未呼出-黑名单"),
CallerNotRegistered(14, "未呼出-主叫号码未注册"),
Terminated(15, "未呼出-被终止"),
VerificationCancelled(16, "未呼出-呼叫前验证不通过取消"),
OutOfServiceNoCall(17, "未呼出-被叫停机不外呼"),
InArrearsNoCall(18, "未呼出-被叫欠费不外呼"),
CallingNumberNotExist(19, "未呼出-主叫号码不存在"),
}
未触达原因示例值
-JobFailureReason {
Unknown(0),未知错误
NoAnswer(1),无人接听
InvalidStrategy(2),无效的策略,策略配置不正确
TimeUp(3),调度时发现超时
NoStrategy(4),策略为空或没有找到
CallFailed(5),呼叫失败
PerDayCallCountLimit(6),号码每日呼叫次数限制
ContactBlockList(7),禁止外呼名单
EmptyNumber(8),空号不再外呼
JobPerDayCallCountLimit(9),号码每日呼叫次数限制
VerificationCancelled(10),呼叫前验证不通过取消
ContactSuspended(11),止呼
InArrears(12),欠费
OutOfService(13),停机
NoneRepeatableJobMaxAttemptCountLimit(14),任务最大尝试次数, 当RepeatBy(@see )为None时生效
}