freeswitch核心实现动态IVR、呼叫队列、呼叫中心全功能

背景

freeswitch动态IVR是通过mod_ivr模块来实现的,呼叫队列是通过mod_callcenter实现。但是常规开发人员对接freeswitch开发有一定难度,无论是源码C修改还是lua等脚本开发。

解决方案

本人通过封装freeswitch形成一个核心产品,功能包括IVR动态导航、坐席动态添加、动态拨号计划、坐席登入、登出、置忙、空闲、通话、呼叫转移、呼叫保持、墙插、强拆、通话记录上传、弹屏上传等功能,只需要调用http接口即可实现呼叫中心业务。同时扩展性好,可扩展智能语音客服、语音识别功能等。业务逻辑采用java封装,二次开发人员可任意修改,修改逻辑简单方便。有意者联系mokeily99@126.com或主页信息

接口文档

呼叫中心接口文档

呼叫中心接口文档.. 1

修改记录.. 1

一、        接口格式.. 1

二、        接口列表.. 2

1.    账户类.. 2

2.    通话类.. 3

3.    坐席类.. 7

4.    IVR导航类.. 19

三、        公共返回编码.. 25

修改记录

序号

内容

时间

1

添加“查询技能组列表”接口

2023-08-18

2

“通话记录上传”接口添加record_url录音地址字段

2023-08-18

3

修改“技能组查询”接口地址

2023-08-21

4

增加“2.4通话转移”接口

2023-08-21

5

增加“4.3ivr查询”接口

2023-08-22

6

“2.3通话记录上传”请求参数增加操作列表

2023-08-24

7

新增“2.5坐席通话强拆”、“2.6坐席呼叫保持取消”接口

2023-08-24

8

“3.6查询技能组列表”接口增加坐席列表返回

2023-08-25

9

新增”2.7回调地址查询”接口

2023-08-25

10

新增”2.8查看账户下注册在线坐席”接口

2023-09-14

接口统一采用http协议,json传输数据格式

  1. 账户类
  1. 令牌获取
  1. 业务流程

账户通过该接口获取令牌token,其他业务流程请求参数携带token进行校验

  1. 接口地址

http://ip:port/fs-core/fsInter/getToken

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

accId

String(500)

账户ID: fsacc001

accKey

String(255)

账户key: AA39noway

样例:

{

    "accId": "fsacc001",

    "accKey": "AA39noway"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

1003: token校验失败

1002: 参数缺失

0001: 账户ID或账户key不能为空

0002: 账户ID或账户key错误

0003: 生成token失败,请重新操作

resultMsg

String(255)

错误信息

resultData

Object

返回信息

token

resultData

String(255)

Token令牌

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": {

        "token": "1e94636e06b14c06a7cb80da6dc94f6a"

    }

}

  1. 通话类
  1. 业务端接口地址上传
  1. 业务流程

业务端上传fs端调用业务端的接口地址,包括弹屏接收地址、通话记录接收地址等

  1. 接口地址

http://ip:port/fs-core/fsInter/updateUrlInfo

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

urlPath

String(255)

调用地址

urlType

String(1)

地址类型

1:来电弹窗

2:通话记录

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001: 账户ID或账户key不能为空

0002: 账户不存在

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 来电接听通知
  1. 业务流程

电话接入坐席,坐席接听后系统调用“弹窗地址上传”中传入的地址。该接口为freeswitch调用业务系统

  1. 接口地址

1.2中上传的弹窗地址

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

accId

String(500)

所属账户

callerNo

String(255)

来电号码

calledNo

String(255)

被叫号码

callTime

String(255)

呼叫时间

answerTime

String(255)

应答时间

样例:

{

"accId ": " fsacc001",

"callerNo": " 18888888888",

"calledNo": " 1004",

"callTime": "2023-08-02 19:08:25",

"answerTime": "2023-08-02 19:08:30"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 通话记录上传
  1. 业务流程

通话完成后fs调用业务端上传的通话记录地址,进行通话记录上传

  1. 接口地址

1.2中上传的“通话记录”地址

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

accId

String(500)

所属账户

uuid

String(255)

通话唯一标识

caller_id_number

String(255)

主叫号码

destination_number

String(255)

被叫号码

start_stamp

String(255)

呼叫时间

answer_stamp

String(255)

应答时间

end_stamp

String(255)

呼叫结束时间

uduration

String(255)

总呼叫持续时间(以微秒为单位)

billsec

String(255)

可计费的通话时长(秒)

hangup_cause

String(255)

话机原因:

NO_ANSWER:被叫无应答

NORMAL_CLEARING:正常挂机

ORIGINATOR_CANCEL:主叫挂断取消

NO_USER_RESPONSE:无用户响应

record_url

String(500)

录音地址

ctr_list

List

通话操作列表

ctr_type

ctr_list

List

操作类型

0强拆1强插2保持3通话转移

create_time

ctr_list

List

操作时间

样例:

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 通话转移
  1. 业务流程

可将当前坐席接听中的电话转移至其他坐席,转移前会判断目标坐席是否有通话,无通话后进行盲转,同时当前坐席自动挂机,目标坐席振铃接听后,目标坐席和用户进行通话

  1. 接口地址

http://ip:port/fs-core/fsInter/transferConver

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

seatFrom

String(255)

转出坐席号

seatTo

String(255)

目标坐席号

phoneNo

String(255)

当前通话号码

样例:

{

    "token": "377a41dc0be640a18f619d4a64928794",

    "seatFrom": "1004",

    "seatTo": "1002",

    "phoneNo": "13333333333"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001: 账户下不存在该坐席seatFrom

0002: 账户下不存在该坐席seatTo

0003: 转出转入坐席不能相同

0004: 被转移坐席正在通话中,无法转接到目的地

0005: 坐席下不存在该通话,无法转接到其他坐席

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 坐席通话强拆
  1. 业务流程

管理员对坐席当前通话进行强拆操作,强拆后双方挂断

  1. 接口地址

http://ip:port/fs-core/fsInter/ seatConverKill

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

seatNo

String(255)

坐席号码

样例:

{

    "token": "377a41dc0be640a18f619d4a64928794",

    "seatNo": "1004"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0002: 账户下不存在该坐席

0003:坐席下无通话

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 坐席呼叫保持取消
  1. 业务流程

坐席将用户通话进行呼叫保持

  1. 接口地址

http://ip:port/fs-core/fsInter/seatConverHold

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

seatNo

String(255)

坐席号码

phoneNo

String(255)

通话号码

holdType

String(255)

操作码

0取消保持

1呼叫保持

样例:

{

    "token": "377a41dc0be640a18f619d4a64928794",

    "seatNo": "1004",

    "phoneNo": "13333333333",

    "holdType": "0"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0002: 账户下不存在该坐席

0003:坐席下通话不存在

0004:操作码错误

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 回调地址查询
  1. 业务流程

查询通话记录、弹屏回调接口地址

  1. 接口地址

http://ip:port/fs-core/fsInter/queryUrlInfo

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

urlType

String(1)

地址类型

1:来电弹窗

2:通话记录

样例:

{

    "token": "377a41dc0be640a18f619d4a64928794",

    "urlType": "2"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001:账户下不存在回调地址

resultMsg

String(255)

错误信息

resultData

List

回调地址列表

acc_id

resultData

String(255)

所属账户

url_type

resultData

String(1)

地址类型

url_path

resultData

String(255)

地址

update_time

resultData

String(255)

修改时间

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": [

        {

            "update_time": 1692498093000,

            "url_type": "2",

            "acc_id": "fsacc001",

            "url_path": "http://113.4.137.248:8083/phoneCallback/callLog"

        },

        {

            "update_time": 1692262292000,

            "url_type": "1",

            "acc_id": "fsacc001",

            "url_path": "http://113.4.137.248:8083/phoneCallback/callAnswer"

        }

    ]

}

  1. 坐席类
  1. 坐席操作
  1. 业务流程

账户添加、修改、删除坐席账号。坐席系统唯一,不能重复。修改和删除会连同修改和删除技能组中绑定关系

  1. 接口地址

http://ip:port/fs-core/fsInter/ctrlSeat

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

ctrlType

String(1)

操作类型

0:添加

1:修改

2:删除

seatNo

String(255)

坐席号

seatPwd

String(255)

坐席密码,ctrlType=0时必传

newSeatNo

String(255)

新坐席号,ctrlType=1时newSeatNo和newSeatPwd必须有一个或两个上传

newSeatPwd

String(255)

新坐席密码,ctrlType=1时newSeatNo和newSeatPwd必须有一个或两个上传

样例:

{

    "token": "1e94636e06b14c06a7cb80da6dc94f6a",

    "ctrlType": "0",

    "seatNo": "1002",

    "seatPwd": "AA39noway."

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001: 操作失败,请重新操作

0002: 账户下不存在坐席

0003: 操作类型错误!

0004:新坐席号已存在(修改)

0005:坐席号已存在(添加)

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 坐席列表查询
  1. 业务流程

查询账户下所有坐席列表。

  1. 接口地址

http://ip:port/fs-core/fsInter/querySeatList

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

样例:

{

    "token": "93bc13844b3549588cea206369fe3e59"

}

  1. 应答参数

字段名称

父节点名称

是否为父节点

是否必传

类型

备注

resultCode

String(4)

0000:成功

resultMsg

String(255)

错误信息

resultData

List

坐席列表

seat_no

resultData

String(255)

坐席工号

seat_pwd

resultData

String(255)

密码,考虑是否要返回,有密码泄露风险

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": [

        {

            "seat_no": "2007",

            "seat_pwd": "AA39noway."

        },

        {

            "seat_no": "2008",

            "seat_pwd": "AA39noway."

        },

        {

            "seat_no": "1001",

            "seat_pwd": "AA39noway."

        },

        {

            "seat_no": "1004",

            "seat_pwd": "AA39noway."

        },

        {

            "seat_no": "2009",

            "seat_pwd": "AA39noway."

        },

        {

            "seat_no": "1002",

            "seat_pwd": "AA39noway."

        },

        {

            "seat_no": "2005",

            "seat_pwd": "AA39noway."

        },

        {

            "seat_no": "2010",

            "seat_pwd": "AA39noway."

        },

        {

            "seat_no": "2006",

            "seat_pwd": "AA39noway."

        }

    ]

}

  1. 坐席签入签出
  1. 业务流程

坐席签入签出操作,签入要打开软电话前提下

  1. 接口地址

http://ip:port/fs-core/fsInter/setSeatCheck

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

seatNo

String(255)

坐席号

checkType

String(1)

操作类型

in:签入

out:签出

样例:

{

    "token": "1e94636e06b14c06a7cb80da6dc94f6a",

    "seatNo": "1004",

    "checkType": "out"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001: 操作失败,请重新操作

0002: 账户下不存在坐席

0003: 操作类型错误!

0004:新坐席号已存在(修改)

0005:坐席号已存在(添加)

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 设置坐席状态
  1. 业务流程

设置坐席置忙、置闲,注:置闲要在签入状态下才会进线。

  1. 接口地址

http://ip:port/fs-core/fsInter/setSeatState

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

seatNo

String(255)

坐席号

stateType

String(255)

状态类型

idle:空闲

busy:忙

样例:

{

      "token": "1e94636e06b14c06a7cb80da6dc94f6a",

      "seatNo": "1004",

      "stateType": "idle"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001: fs错误

0002: 账户坐席不匹配

0003: 状态类型错误

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 技能组操作
  1. 业务流程

技能组作为一个队列,通话线路进入技能组后可根据呼叫策略呼叫组下坐席成员。坐席组可作为呼叫流程的目标对象

  1. 接口地址

http://ip:port/fs-core/fsInter/ctrlQueues

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

ctrlType

String(1)

操作类型

0:添加

2:删除

queueAcc

String(255)

技能组账户,不能是中文,建议用英文数组组合,技能组账户系统唯一,不能重复

queueName

String(255)

技能组名称,ctrlType=0时必传

strategy

String(255)

呼叫规则,ctrlType=0时必传

random:随机

Ring-all:同时呼叫所有的客户端,某个接听后其它客户端自动挂断

Longest-idle-agent:最大空闲客户端优先

Round-robin:最后一次客户端通话的优先

Top-down:从上倒下查找客户端

agent-with-least-talk-time:最少通话时间的客户端优先

agent-with-fewest-calls:最少通话次数的客户端优先

样例:

{

    "token": "1e94636e06b14c06a7cb80da6dc94f6a",

    "ctrlType": "0",

    "queueAcc": "test3",

    "queueName": "测试技能组2",

    "strategy": "random"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001: 操作失败,请重新操作

0002: 账户下不存在技能组(修改)

0003:技能组已存在!(添加)

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 查询技能组列表
  1. 业务流程

查询账户下技能组列表

  1. 接口地址

http://ip:port/fs-core/fsInter/queryQueues

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

queueAcc

String(500)

技能组账户

样例:

{

    "token": "377a41dc0be640a18f619d4a64928794",

    "queueAcc": "test2"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

resultMsg

String(255)

错误信息

resultData

List

返回信息

queue_name

resultData

String(255)

技能组名称

queue_strategy

resultData

String(255)

呼叫规则

queue_acc

resultData

String(255)

技能组账户

acc_id

resultData

String(255)

所属账户

tier_list

resultData

List

技能组下坐席列表

seat_no

tier_list

String(255)

坐席号

update_time

tier_list

String(255)

修改时间

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": [

        {

            "queue_name": "测试技能组1",

            "update_time": 1691218423000,

            "queue_strategy": "random",

            "tier_list": [

                {

                    "update_time": 1691241377000,

                    "seat_no": "2006"

                },

                {

                    "update_time": 1692939044000,

                    "seat_no": "8888"

                },

                {

                    "update_time": 1691243249000,

                    "seat_no": "2007"

                },

                {

                    "update_time": 1691246747000,

                    "seat_no": "2010"

                },

                {

                    "update_time": 1692940984000,

                    "seat_no": "1003"

                },

                {

                    "update_time": 1692933018000,

                    "seat_no": "6666"

                },

                {

                    "update_time": 1691235932000,

                    "seat_no": "2005"

                },

                {

                    "update_time": 1692940716000,

                    "seat_no": "1006"

                },

                {

                    "update_time": 1691245174000,

                    "seat_no": "2009"

                },

                {

                    "update_time": 1691237028000,

                    "seat_no": "1004"

                },

                {

                    "update_time": 1691243927000,

                    "seat_no": "2008"

                }

            ],

            "maxaccept": "d130987dcbff472db6bbf1f0b7a8e696",

            "queue_acc": "support",

            "acc_id": "fsacc001"

        }

    ]

}

  1. 坐席绑定技能组操作
  1. 业务流程

坐席与技能组绑定和解绑操作,同一个坐席可以绑定到多个技能组中

  1. 接口地址

http://ip:port/fs-core/fsInter/bindQueue

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

ctrlType

String(1)

操作类型

0:绑定

2:解绑

queueAcc

String(255)

技能组账户,“技能组操作”接口中创建的技能组账户

seatNo

String(255)

坐席号

样例:

{

    "token": "1e94636e06b14c06a7cb80da6dc94f6a",

    "ctrlType": "0",

    "seatNo": "1001",

    "queueAcc": "test2"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001: 操作失败,请重新操作

0002: 账户下不存在该技能组

0003: 账户下不存在该坐席

0004: 坐席已经绑定到技能组下,无需重复操作!

0005: 坐席与技能组不存在绑定关系!

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. 查看账户下注册在线坐席
  1. 业务流程

查询账户下已经注册在线的坐席列表,同时返回注册坐席的签入状态、话机状态等信息

  1. 接口地址

http://ip:port/fs-core/fsInter/ getSignList

  1. 请求参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

seatNo

String(500)

坐席号

样例:

{

    "token": " 337d7f2d8ca54ce1aa0b3146b130dee3"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001:账户下不存在该坐席号

resultMsg

String(255)

错误信息

resultData

List

返回信息

acc_id

resultData

String(255)

所属账户

seat_no

resultData

String(255)

坐席账号

reg_status

resultData

String(255)

签入状态

Available:签入

Logged Out:签出

On Break:无效状态,一般不会有该状态,建议删除坐席重新创建

seat_status

resultData

String(255)

坐席状态

Idle:忙

Waiting:闲

Receiving:振铃

In a queue call:通话中

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": [

        {

            "reg_status": "Available",

            "seat_status": "Waiting",

            "seat_no": "1004",

            "acc_id": "fsacc001"

        }

    ]

}

  1. IVR导航类
  1. IVR上传
  1. 业务流程

本接口为单个IVR上传,功能包括创建和修改(上传及启用),无论创建还是修改都要提交全部参数,系统会删除原有IVR后重新生成新的IVR,一个账户下会有多个IVR流程,例如:

1、 周一至周五的08:00:00-16:59:59点是上班时间的IVR。

2、 周一至周五的0:00:00-08:00:00点是下班时间IVR

3、 周一至周五的17:00:00-23:59:59点是下班时间IVR,

4、 周六至周日的0:00:00-23:59:59为休息日的IVR。

虽然2、3、4可能都是一样的IVR内容,但是也要单独上传,系统不根据工作或非工作时间区分IVR,只根据时间段区分

  1. 接口地址

http://ip:port/fs-core/fsInter/createIvr

  1. 请求参数

字段名称

父节点名称

是否为父节点

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

ivrName

String(255)

Ivr名称

ivrCode

String(255)

Ivr编码,系统内唯一

weekDays

String(255)

生效时间,用逗号分隔

周日=1

周一=2

周二=3

周三=4

周四=5

周五=6

周六=7

beginTime

String(255)

开始时间hh:mm:ss

endTime

String(255)

结束时间hh:mm:ss

menuList

List

Ivr菜单列表

menuCode

menuList

String(255)

菜单编码,系统内唯一

subFlag

menuList

String(1)

主菜单标识1主菜单0非主菜单

greetLongType

menuList

String(1)

开场语类型

1文字

2语音文件

目前只支持1文字

greetLong

menuList

String(500)

开场语文字

greetShortType

menuList

String(255)

重复短文字类型

1文字

2语音文件

目前只支持1文字

greetShort

menuList

String(500)

重复短文字,播报后规定时间内无操作播放

timeout

menuList

String(255)

等待超时时间,毫秒。可不传,默认10000十秒

maxFailures

menuList

String(255)

最大按键失败次数。可不传,默认3次

maxTimeouts

menuList

String(255)

最大超时次数。可不传,默认3次

entryList

menuList

List

按键条目列表

pressType

entryList

String(1)

按键类型

1语音播报

2转技能组

3跳转ivr菜单

4返回上一层

pressKey

entryList

String(1)

对应按键数0-9、*。建议*作为返回上一层的按键,有些场景可能导致*成为特殊绑定键无法修改成其他功能键

mapperContent

entryList

String(500)

对应按键执行的内容,pressType=1、2、3时必填

pressType=1时填写播报的文字内容

pressType=2时填写技能组账户

pressType=3时填写菜单编码menuCode

样例:

{

      "token": "93bc13844b3549588cea206369fe3e59",

      "ivrName": "工作日IVR",

      "ivrCode": "d130987dcbff472db6bbf1f0b7a8e696",

      "weekDays": "2,3,4,5,6",

      "beginTime": "08:00:00",

      "endTime": "17:00:00",

      "menuList":[{

           "menuCode": "034d6fb908ac4c8a9f1a8d391351d970",

           "subFlag": "1",

           "greetLongType": "1",

           "greetLong": "欢迎致电呼叫中心系统",

           "greetShortType": "1",

           "greetShort": "公司简介请按1,人工坐席请按0",

           "timeout": "10000",

           "maxFailures": "3",

           "maxTimeouts": "3",

           "entryList":[{

                 "pressType": "3",

                 "pressKey": "1",

                 "mapperContent": "184d6fb9084d4c8a97da6a391356f9l"

           },{

                 "pressType": "2",

                 "pressKey": "0",

                 "mapperContent": "support"

           }]

      },{

           "menuCode": "184d6fb9084d4c8a97da6a391356f9l",

           "subFlag": "0",

           "greetLongType": "1",

           "greetLong": "呼叫中心是在一个相对集中的场所,由一批服务人员组成的服务机构.通常利用计算机通信技术,处理来自企业、顾客的电话垂询,尤其具备同时处理大量来话的能力",

           "greetShortType": "1",

           "greetShort": "重听请按9,返回上一层请按星号键",

           "timeout": "10000",

           "maxFailures": "3",

           "maxTimeouts": "3",

           "entryList":[{

                 "pressType": "1",

                 "pressKey": "9",

                 "mapperContent": "呼叫中心是在一个相对集中的场所,由一批服务人员组成的服务机构.通常利用计算机通信技术,处理来自企业、顾客的电话垂询,尤其具备同时处理大量来话的能力"

           },{

                 "pressType": "4",

                 "pressKey": "*"

           }]

      }]

}

  1. 应答参数

序号

字段名称

是否为父节点

是否必传

类型

备注

10.4.1

resultCode

String(4)

0000:成功

0001: 菜单列表不能为空

0002: 插入entry表失败

0003: 插入menu表失败

0004: 插入ivr主表失败

10.4.2

resultMsg

String(255)

错误信息

10.4.3

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. IVR状态设置
  1. 业务流程

设置单个IVR状态,包括启用、禁用、删除(删除无法恢复)。

  1. 接口地址

http://ip:port/fs-core/fsInter/ivrStatusSet

  1. 请求参数

字段名称

父节点名称

是否为父节点

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

ivrCode

String(255)

Ivr编码,系统内唯一

status

String(1)

设置状态

0:启用

1:禁用

2:删除

样例:

{

    "token": "93bc13844b3549588cea206369fe3e59",

    "ivrCode": "d130987dcbff472db6bbf1f0b7a8e696",

    "status": "0"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001: 状态码错误

0002:账户下不存在该ivr

resultMsg

String(255)

错误信息

resultData

Object

返回信息

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": null

}

  1. IVR查询
  1. 业务流程

查询账户下IVR列表

  1. 接口地址

http://ip:port/fs-core/fsInter/ivrQuery

  1. 请求参数

字段名称

父节点名称

是否为父节点

是否必传

类型

备注

token

String(500)

Token令牌,令牌获取返回值

ivrCode

String(255)

Ivr编码,系统内唯一

样例:

{

    "token": "93bc13844b3549588cea206369fe3e59"

}

  1. 应答参数

字段名称

是否为父节点

父节点名称

是否必传

类型

备注

resultCode

String(4)

0000:成功

0001: 状态码错误

0002:账户下不存在该ivr

resultMsg

String(255)

错误信息

resultData

List

IVR列表

acc_id

resultData

String(255)

所属账户

ivr_name

resultData

String(255)

Ivr名称

ivr_code

resultData

String(255)

Ivr编码

week_days

resultData

String(255)

生效时间

begin_time

resultData

String(255)

开始时间

end_time

resultData

String(255)

结束时间

able_flag

resultData

String(1)

状态标识

0:启用

1:禁用

menu_list

resultData

List

菜单列表

menu_code

menu_list

String(255)

菜单编码

sub_flag

menu_list

String(1)

主菜单标识

1主菜单0非主菜单

greet_long_type

menu_list

String(1)

开场语类型

1文字

2语音文件

目前只支持1文字

greet_long

menu_list

String(500)

开场语文字

greet_short_type

menu_list

String(1)

重复短文字类型

1文字

2语音文件

目前只支持1文字

greet_short

menu_list

String(500)

重复短文字,播报后规定时间内无操作播放

max_failures

menu_list

String(255)

最大按键失败次数

max_timeouts

menu_list

String(255)

最大超时次数

timeout

menu_list

String(255)

等待超时时间,毫秒

entry_list

menu_list

List

按键条目列表

press_type

entry_list

String(1)

按键类型

1语音播报

2转技能组

3跳转ivr菜单

4返回上一层

press_key

entry_list

String(1)

对应按键数0-9、*。

mapper_content

entry_list

String(500)

对应按键执行的内容

样例:

{

    "resultCode": "0000",

    "resultMsg": "操作成功!",

    "resultData": [

        {

            "ivr_name": "工作日IVR",

            "menu_list": [

                {

                    "greet_long": "欢迎致电呼叫中心系统",

                    "max_failures": "3",

                    "greet_short": "公司简介请按1,人工坐席请按0",

                    "menu_code": "034d6fb908ac4c8a9f1a8d391351d970",

                    "max_timeouts": "3",

                    "entry_list": [

                        {

                            "press_key": "0",

                            "press_type": "2",

                            "mapper_content": "support"

                        },

                        {

                            "press_key": "1",

                            "press_type": "3",

                            "mapper_content": "80583401_menu_184d6fb9084d4c8a97da6a391356f9l"

                        }

                    ],

                    "sub_flag": "1",

                    "timeout": "10000",

                    "greet_long_type": "1",

                    "greet_short_type": "1"

                },

                {

                    "greet_long": "呼叫中心是在一个相对集中的场所,由一批服务人员组成的服务机构.通常利用计算机通信技术,处理来自企业、顾客的电话垂询,尤其具备同时处理大量来话的能力",

                    "max_failures": "3",

                    "greet_short": "重听请按9,返回上一层请按星号键",

                    "menu_code": "184d6fb9084d4c8a97da6a391356f9l",

                    "max_timeouts": "3",

                    "entry_list": [

                        {

                            "press_key": "*",

                            "press_type": "4"

                        },

                        {

                            "press_key": "9",

                            "press_type": "1",

                            "mapper_content": "呼叫中心是在一个相对集中的场所,由一批服务人员组成的服务机构.通常利用计算机通信技术,处理来自企业、顾客的电话垂询,尤其具备同时处理大量来话的能力"

                        }

                    ],

                    "sub_flag": "0",

                    "timeout": "10000",

                    "greet_long_type": "1",

                    "greet_short_type": "1"

                }

            ],

            "able_flag": 0,

            "end_time": "23:00:00",

            "week_days": "1,2,3,4,5,6,7",

            "begin_time": "08:00:00",

            "ivr_code": "d130987dcbff472db6bbf1f0b7a8e696",

            "acc_id": "fsacc001"

        }

    ]

}

错误码

错误信息

0000

成功

1002

参数缺失

1003

token校验失败

9999

系统异常

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十年一梦惊觉醒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值