FSGUI动态座席组及最新的推送事件的接口

阅读 187 次  0 条评论
到2020-7实现的座席组逻辑如下: a. 在系统中预定几个组,如 110,12345,12320等 B. 接着由座席上线时,指定上线了哪几个组 c. 我们在路由中配置了,如 85733555是进到12320这个组,则配操作符为 16,明细是 12320这个组号 d. 优先进行和组配套的黑名单,如果是处于黑名单就挂 机或放音 e. 接着查询历史沟通记录,如果记忆中的座席空闲,那么就由该座席来处理,否则找空闲座席处理 f. 如果没有历史沟通,就直接找该组空闲座席 g. 如果没空闲座席了,则判断是vip还是普通用户来电,有一定时器,不断优先判断vip的来电,接着判断普通的来电,在查找到有空闲座席的情况下,转给该空闲座席. h. 不同的客户,需求有所不同,在有关挂 机的要求,有的要求放音几次后挂 ,有的是,客户不挂 机,我们不主动挂 机,按实际来配. 1. # 获取token 返回值: "token":"token code" 非正常返回值: "Not Authorized" ```bash curl -d '{"username": "admin", "password": "admin"}' -H "Content-Type:application/json" http://ip:8085/api/login ``` 2. # 上线 让座席分机为上线或下线,即up or down //up为上线 //down为下线 里边的组,可以为多个如: "12345,12320" ```bash curl -H "Content-Type: application/json" -d '{"Extension":"1002","Value":"up" ,"Groups":"12345,110"}' -H "Authorization:Nway token " http://ip:8085/api/extension_seatstate ``` 3. # 分机忙闲 让座席分机置忙或置闲 ,这里和设置呼叫状态,在不同的客户需求时,需要进行分开,否则可能只用呼叫状态一项处理不了 //ready or rest //ready 意为设置为闲 //rest 意为设置为忙,小休,开会等 ```bash curl -H "Content-Type: application/json" -d '{"Extension":"1002","Value":"ready" }' -H "Authorization:Nway token " http://ip:8085/api/extension_seatstatus ``` 4. # 设置呼叫状态 //ring,talking,ivr,ready,typing,no_answer, no_ready //ready是等待电话-置闲 //talking是正在通话中 //typing 整理态,接完电话后在整理,默认5分钟 //no_answer 久不应答,即响铃后座席未接 //busy 置忙 //rest 小休 ```bash curl -H "Content-Type: application/json" -d '{"Extension":"1002","Value":"ring" }' -H "Authorization:Nway token " http://ip:8085/api/extension_callstate ``` 5. # 获取排队中的来电 按以下的信息返回排队中的电话信息 ```go Uuid string //呼入的channel的uuid Number string //呼入的号码 RealCallinNumber string //实际呼入的号码 Group string //进入的组 Level string //保留用于normal,vip CallinTime time.Time //呼入时间 ``` ```bash curl -H "Authorization:Nway token " http://ip:8085/api/queues ``` 6. # 获取所有的分机状态 按以下的信息返回所有的分机状态信息 ```go Extension string RegStatus string AgentState string CallState string LastStatusChangeTime string ``` ```bash curl -H "Authorization:Nway token " http://ip:8085/api/get_extensions ``` 7. # 事件和消息的推送 我们使用redis的pub/sub模式推送如来电,挂 机等事件,以及来电排队等事件,以及cdr ## a. 来电,振铃,接通,挂 机等事件 需要psubscribe event_* 就会将所有的event事件推过来 模式如下: ```bash evt_name,callin_number, dest_number, domain, dtmf, gateway, originate_number, direction, auuid, buuid, origination_dest_number ``` 其中evt_name为以下项: ```go EVENT_CALLIN EVENT_NAME = 1 + iota //呼入 EVENT_CALLOUT //呼出 EVENT_RING //回铃 EVNET_ALERT //振铃 EVENT_ANSWER //应答 EVENT_HANGUP //座席 EVENT_DTMF //按键 EVENT_PLAYRING //开始放音 EVENT_PLAYSTOP //放音结束 EVENT_PARK //park掉 EVENT_UNPARK //解决park EVENT_HOLD //hold掉 EVENT_UNHOLD //unhold EVENT_BRIDGED //已桥接 EVENT_DESTORY //已完全释放 EVENT_TALKING //正在通话中 EVENT_DA //回铃检测 ``` ​ Callin_number为呼入号码,或称为主叫号码 ​ dest_number 目标号码 ​ domain 域,先不用考虑 ​ dtmf, 如果是按键,则这里有值 ​ gateway, 如果是呼出,则这是呼出的gateway名称 ​ originate_number, 原主叫号码 ​ direction, 呼入还是呼出 ​ auuid, 这条通道的uuid ​ buuid, 关联通道的uuid ​ origination_dest_number 原始被叫号码 ## b. 通话详单信息 以前采用http推送模式,虽然也没什么影 响,但后来还是采用redis或进一步放个大点的mq等的来完成推送消息的过程 ``` psubscribe cdr_* ``` 其中,主叫,被叫,如果是呼入到座席,那么中间经过了几个没有回应或转接的信息都一起推送过来,如代码: ```golang arr := []string{strings.Trim(uuid, " "), strings.Trim(a_caller_id_number, " "), strings.Trim(a_destination_number, " "), strings.Trim(a_start_stamp, " "), strings.Trim(a_answer_stamp, " "), strings.Trim(a_end_stamp, " "), strings.Trim(a_duration, " "), strings.Trim(a_billsec, " "), strings.Trim(a_sip_hangup_disposition, " "), strings.Trim(a_record_file, " "), strings.Trim(str_no_answer_agents, " "), strings.Trim(destination_number, " "), strings.Trim(start_stamp, " "), strings.Trim(answer_stamp, " "), strings.Trim(end_stamp, " "), strings.Trim(duration, " "), strings.Trim(billsec, " ")} if len(no_answer_agents) > 0 { var tmpstr string tmpstr = "{" for _, v := range no_answer_agents { tmpstr += v + "," } tmpstr = tmpstr[:len(tmpstr)-1] tmpstr += "}" arr = append(arr, tmpstr) } else { arr = append(arr, "") } ``` ## c. 排队信息 ```bash psubscripe queue_* ``` 其大概信息如下: ``` method, uuid, number, group, level, callin_time ``` ## d. 在分机发生状态变化时,由系统向外发状态变更 ``` psubscripe agent_* ``` 其大概信息如下: ``` number, status, time ```

0条回复

主题回复:

(您需要 登录 后才能回复 没有账号 ?)
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet