帮助中心

热线:028-65711111         工作时间:周一至周五 09:00-18:00
​About us
Help center
Application
Products
Home
成都添闰OLA-API文档
来源:成都添闰通讯技术有限公司版权所有 | 作者:成都添闰通讯 | 发布时间: 2019-01-11 | 8979 次浏览 | 分享到:

目的

 

本手册提供了呼叫中心相关的 API 说明。

 

背景

 

该项目以软交换平台 FreeSWITCH 为核心,对外提供呼叫中心开发接口。开发者可以灵活方便的与其行业应用业务系统进行集成。

 

名词术语

 

• HTTP Hyper Text Transfer Protocol

• JS JavaScripts

• FreeSWITCH 软交换平台

• 坐席(agent) 每个话务员(SIP 客户端)即为一个坐席

• 队列(queue) 为了能跟踪坐席状态,每个坐席必须加入一个队列。队列和坐席的关系为一对多的关系。

• WebSocket协议 它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。

 

 

概述

   

• 系统集成接口主要采用JavaScripts对外提供,部分接口采用HTTP对外提供。

• 坐席(agent)状态主要有:未签入、已签入、示闲中、示忙中。

• 部分方法依赖于坐席状态,只有特定状态才能操作。

• 只有示闲中,才能呼入呼出。

 

 

1. JS接口


1.1引入ola_api.js文件

   具体文件请联系添闰通讯获取。

1.2创建Websocket连接
        1.2.1方法定义

方法名称

说明

依赖

websocket_connect()

与话务服务器创建连接。

onMessage()

回调函数,用于接受服务器端推送信息。(状态变更,来电弹屏等都在该函数中处理)。

onConnect()

创建连接后订阅服务器端信息。

onClose()

连接关闭后执行操作。


        1.2.2 方法示例
    function websocket_connect()

    {

        var websocket_url = "ws://"+serIp+":"+serPort+"/ola_socket";

        ola.connect(websocket_url);

        ola.onConnect = onConnect;

        ola.onClose = onClose;

        ola.onMessage = onMessage;

    }

    //注:serIp为服务器ip;serPort为服务器应用端口

 

    function onConnect()

    {

        console.log("websocket connected!");

        ola._extn = ola_extn;

        ola.subscribe('ola.queue.' + ola_queue + '.' +  ola_extn);

        ola.subscribe('ola.caller.' + ola_extn);

        ola.get_agent_state(ola_extn);

    }

    //注:ola_extn为坐席分机号;ola_queue为坐席队列号

 

    function onClose() {

       //自定义内容,可为空

    }

    //注:ola_extn为坐席分机号;ola_queue为坐席队列号

 

    function onMessage(evt)

    {

        var data = JSON.parse(evt.data);

        console.log(data);

        if (data.event_type == "agent_state")//分机状态

        {

            if (data.state == "busy")

            {

                if (data.private_data == "ring") //话机振铃

                {

                    //data.other_dn; 呼入的号码

                    //data.call_accept 话务流水(是通话记录表里的主键) //此处可open页面作为来电弹屏

                 } else if (data.private_data == "answered")//话机已接听

                {

                    //此处可open页面作为接听弹屏

                }

            }

            else if (data.old_state == "busy") //已挂机

            {

                //可扩展自动示闲

            }

        }

    }


 

1.3签入
        1.3.1方法定义

方法名称

说明

依赖

login()

签入

分机未签入


        1.3.2 方法示例

    function login()

    {

        ola.login(ola_queue, ola_extn, {type: "onhook"});

    }

    //注:ola_queue为坐席签入队列;ola_extn为坐席分机号



1.4签出
        1.4.1方法定义

方法名称

说明

依赖

logout()

签出

分机已签入


        1.4.2 方法示例

    function logout()

    {

        ola.logout();

    }



1.5示闲
        1.5.1方法定义

方法名称

说明

依赖

go_ready()

示闲

分机已签入;分机非空闲


        1.5.2 方法示例

    function go_ready()

    {

        ola.go_ready();

    }



1.6示忙
        1.6.1方法定义

方法名称

说明

依赖

go_break()

示忙

分机空闲


        1.6.2 方法示例

    function go_break()

    {

        ola.go_break();

    }



1.7拨号
        1.7.1方法定义

方法名称

说明

依赖

dial()

拨号

分机空闲


        1.7.2 方法示例

    function dial(phone)

    {

        ola.dial(phone);

    }

    //注:phone电话号码



1.8转呼
        1.8.1方法定义

方法名称

说明

依赖

transfer()

转呼

通话中


        1.8.2 方法示例

    function transfer(phone)

    {

        ola.transfer(phone);

    }

    //注:phone电话号码 或者分机号



1.9三方通话
        1.9.1方法定义

方法名称

说明

依赖

three_way(ola_extn,phone)

三方通话

通话中


        1.9.2 方法示例

    function three_way(phone)

    {

        ola.three_way(ola_extn,phone);

    }

    //注:ola_extn为本机分机号;phone为第三方分机号



1.10通话保持
        1.10.1方法定义

方法名称

说明

依赖

hold()

通话保持

通话中


        1.10.2 方法示例

    function hold()

    {

        ola.hold();

    }



1.11解除保持
        1.11.1方法定义

方法名称

说明

依赖

unhold()

解除保持

通话中,已保持


        1.11.2 方法示例

    function unhold()

    {

        ola.unhold();

    }



1.12监听
        1.12.1方法定义

方法名称

说明

依赖

monitor(ola_extn,dest)

监听

示闲中;被监听分机在通话中


        1.12.2 方法示例

    function monitor(ola_extn,dest)

    {

        ola.monitor(ola_extn + "", dest + "");

    }

    //注:ola_extn为本机分机号;dest为被监听方的分机号



1.13解除监听
        1.13.1方法定义

方法名称

说明

依赖

unmonitor(ola_extn)

取消监听

监听中


        1.13.2 方法示例

    function unmonitor(ola_extn)

    {

        ola.unmonitor(ola_extn);

    }

    //注:ola_extn为本机分机号



1.14挂机
        1.14.1方法定义

方法名称

说明

依赖

hangup()

挂机

通话中


        1.14.2 方法示例

    function hangup()

    {

        ola.hangup();

    }



2. HTTP接口

2.1队列创建
        2.1.1 URL 

    /api/ola/queues/

        2.1.2 调用说明

    调用方式:POST

    HTML头部信息Content-Typeapplication/x-www-form-urlencoded

        2.1.3 参数说明

参数名称

是否必须

类型

长度

描述

queueId

Integer

6

队列编号,唯一

strategy

String

11

策略,写死为fifo_onhook

moh

String

100

用户呼入队列时的等待音乐。该音乐文件在服务器上必须存在。例如:

/temp/wait.mp3

other_attrs

String

500

其它配置信息,以key-value结构存放,下面单独一个表格进行说明

 

     other_attrs参数说明:

参数名称

是否必须

类型

长度

描述

chim_freq

Integer

3

队列等待超时时间。单位:秒

agent_timeout

Integer

3

分机等待超时时间。单位:秒

hidden_caller_number

String

5

是否隐藏号码。true隐藏;false不隐藏

judge_after_hangup

Integer

1

呼入挂机评价。1需要/0不需要

judge_after_hangup_ob

Integer

1

呼出挂机评价。1需要/0不需要


        2.1.4 示例

    curl -XPOST -d "strategy=fifo_onhook&&moh=/temp/wait.mp3&other_attrs{'chim_freq':'30','agent_timeout':'30',hidden_caller_number:'false'}"   http://127.0.0.1:8080/api/ola/queues/100001

 

    返回值

    成功:

    {"queue":{"name":"100001","id":"","strategy":"fifo_onhook","callback":"","moh":"/temp/wait.mp3","state":"stopped","created_at":[50,48,49,56,45,48,51,45,48,53,32,49,55,58,51,50,58,52,54,46,54,56,53,52,49,52],"other_attrs":"undefined","comment":""}}

 

2.2队列启动和停止
        2.2.1 URL 

    /api/ola/queues//

        2.2.2调用说明

    调用方式:PUT

    HTML头部信息Content-Typeapplication/x-www-form-urlencoded

        2.2.3参数说明

参数名称

是否必须

类型

长度

描述

queueId

Integer

6

队列编号

action

String

11

动作。启动或停止,start/stop


        2.2.4 示例

        curl -XPUT http://127.0.0.1:8080/api/ola/queues/100001/start

        curl -XPUT http://127.0.0.1:8080/api/ola/queues/100001/stop

 

        返回值

        成功:

        {"queue_state":"running","queue_pid":"<0.19954.16>"}

        {"queue_state":"stopped"}

 

2.3队列删除
        2.3.1 URL 

    /api/ola/queues/

        2.3.2调用说明

    调用方式:DELETE

    HTML头部信息Content-Typeapplication/x-www-form-urlencoded

        2.3.3参数说明

参数名称

是否必须

类型

长度

描述

queueId

Integer

6

队列编号


        2.3.4 示例

        curl -XDELETE http://127.0.0.1:8080/api/ola/queues/100001

 

        返回值

        成功:

        {"code":200,"result":"success"}

 

2.4队列排队情况查询接口
        2.4.1 URL 

    /api/ola/queues//get_callers

        2.4.2调用说明

    调用方式:GET

    HTML头部信息Content-Typeapplication/x-www-form-urlencoded

        2.4.3参数说明

参数名称

是否必须

类型

长度

描述

queueId

Integer

6

队列编号


        2.4.4 示例

        curl -XGET http://127.0.0.1:8080/api/ola/queues/100001/get_callers

 

        返回值

        成功:

        {"count":"0","callers":[]}

2.5队列空闲坐席查询接口
        2.5.1 URL 

    /api/ola/agents?queue_name=&state=ready

        2.5.2调用说明

    调用方式:GET

    HTML头部信息Content-Typeapplication/json

        2.5.3参数说明

参数名称

是否必须

类型

长度

描述

queueId

Integer

6

队列编号


        2.6.4 示例

           curl -XGET http://127.0.0.1:8080/api/ola/agents?queue_name=100001&state=ready

 

        返回值

        成功:

        {"count":"0","agents":[]}

2.6坐席信息查询接口
        2.6.1 URL 

    /api/ola/agents/

        2.6.2调用说明

    调用方式:GET

    HTML头部信息Content-Typeapplication/x-www-form-urlencoded

        2.6.3参数说明

参数名称

是否必须

类型

长度

描述

extn

Integer

4

分机号,不传则查询所有


        2.6.4 示例

        curl -XGET http://127.0.0.1:8080/api/ola/agents/1001

 

        返回值

        成功:

        {"agent":[{"extn":"1001","id":"1001","channel_uuid":"","name":"1001","type":"onhook","weight":"0","queue":"10020","moh":"","wrapup_time":"5000","dial_string":"user/1001","state":"unready","old_state":"","private_data":"","sip_state":"","device":"","sip_ip":"","created_at":"2018-03-05 17:26:40.892605","updated_at":"undefined","call_direction":"","other_number":"","gateway":"","answered_at":"","comment":""}]}

 

2.7批量外呼接口
        2.7.1 URL 

    /api/ola/agents//group_call/

        2.7.2调用说明

    调用方式:PUT

    HTML头部信息Content-Typeapplication/x-www-form-urlencoded

        2.7.3参数说明

参数名称

是否必须

类型

长度

描述

extn

Integer

4

分机号

queueId

Integer

6

接听后转入的队列号

numbers

String

200

被叫号码串,以半角的逗号分隔【,

batch_accept

String

20

批量外呼流水,可在通话记录中根据该值查询

gateway

String

20

外呼线路。若不填,则自动根据extn查找该组织默认线路。


        2.7.4 示例

        curl -XPUT -d "numbers=13900000001,13900000002&batch_accept=12345" http://127.0.0.1:8080/api/ola/agents/1001/group_call/10285

 

        返回值

        成功:

        {"code":200,"result":"success"}

 

 


2.8批量外呼播放录音/文字接口
    2.8.1 URL

    /api/ola/agents//play_audio

 

    2.8.2调用说明

    调用方式:POST

    HTML头部信息Content-Typeapplication/x-www-form-urlencoded

    文字转语音需要用到第3方接口,目前百度免费,需要您自行去百度申请账号,并将账号告知我们。

    2.8.3参数说明

参数名称

是否必须

类型

长度

描述

extn

Integer

4

分机号

filetype

String

4

1. 值为text表示播放文字;

2. 为空则播放录音文件

file

String

200

1. 待播放文字(utf-8格式);

2. 录音文件绝对路径

numbers

String

200

被叫号码串,以半角的逗号分隔【,

batch_accept

String

20

批量外呼流水,可在通话记录中根据该值查询

gateway

String

20

外呼线路。若不填,则自动根据extn查找该组织默认线路。


    2.8.4 示例

    curl -XPOST -d "filetype=text&file=utf8格式的文字&numbers=13900000001,13900000002&batch_accept=12345"

    http://127.0.0.1:8080/api/ola/agents/1001/ play_audio 

 

    curl -XPOST -d " file=/soft/bea/xx.mp3&numbers=13900000001,13900000002&batch_accept=12345"

    http://127.0.0.1:8080/api/ola/agents/1001/ play_audio 

 


    返回值

    成功:

    {"code":200,"result":"success"}