FreeSWITCH中文网,电话机器人开发网 ,微信订阅号:

FreeSWITCH及VOIP,Openser,电话机器人等产品中文技术资讯、交流、沟通、培训、咨询、服务一体化网络。QQ群:293697898

FREESWITCH+ GUI PBX CTI 呼叫中心中间件 =FSGUI


tags:FreeSWITCH GUI 大并发 好用的 免安装 free download FSGUI 可视化界面 创建时间:2016-08-28 15:25:03

FSGui = FreeSwitch + GUI + 性能 + 易管理 + 易维护

一幅图说明FSGUI

相关接口

控制接口:http://www.6fok.com/topics/13

会议接口:http://www.6fok.com/topics/14

python 事件通知示例:http://www.6fok.com/topics/15

java调用控制接口示例: http://www.6fok.com/topics/70

python控制接口示例: https://github.com/nwaycn/FSGui/tree/master/CallInterface

来电、接通、挂机等通知的websocket接口参考:http://www.6fok.com/topics/88

安装手册:

http://www.nway.com.cn/uploads/2017/02/150823273563.pdf 作为参考,下载以本文中最新版为准

使用手册:

V2.3.2.0 : http://www.nway.com.cn/uploads/2017/03/231338123289.pdf

V2.3.1.3使用手册 : http://www.nway.com.cn/uploads/2017/02/242218125744.pdf

 FSGui是由上海宁卫信息技术有限公司自主研发的新一代的呼叫平台,它将云呼叫、VOIP、PSTN、IMS、DID、IVR等集成在一起,实现将IP网络和传统通信通过语音完美结合在一起。并为第三方呼叫及事件查询提供RESTful接口。

FSGui 优势是什么?
1. 处理能力更强,内存数据库+PG+ GOLang天生的高性能。
2. 数据更安全,只要硬件到位,那我们的数据就可以进行实时热备,以及更多的如读写分离等,且数据库是PostgreSQL的,它是开源的。
3. 对接设备更丰富,从思科到avaya到华为到其它厂商均可支持。
4. 业务流与通信流分离,通信流保证最稳定的媒体能力,业务流来控制媒体内容。
5. 扩展更丰富,可以方便的引申出更多通信领域的增值服务。
6. 使用更简便,我们可以做到由GUI配置而减少初级工程师或客户人员的工作量。
7. 服务更到位,专业的人可以做专业的事。

针对FreeSWITCH开发的GUI及更底层的PBX功能扩展,小并发免费二进制

整个系统分为如下的结构

结构图

应用说明

  • WEBServer nway_pbx_web 用于处理所有的web访问,但不包括restful接口

  • AUTHServer nway_pbx_auth 用于处理FreeSwitch的Register消息

  • PBXServer nway_pbx 业务主应用,用于处理路由,网关,IVR等呼叫业务层

  • FreeSwitch

  • Postgresql

  • Redis

  • rings/common 用于报工号等通用的一些语音彩铃

GUI测试登录: http://139.196.40.50:8080/index ,admin 123456

注:FSGui是基于FreeSwitch进行的二次封装,在特大并发时,我们采用各种优秀的其它商业套件或,Opensips、Kamailio作前置,可参考 http://www.6fok.com/topics/2

功能概要

 ```   
1.    路由管理
2.    录音管理
3.    分机管理
4.    分机组管理
5.    网关管理
6.    网关组管理
7.    区域策略管理
8.    时间策略管理
9.    报工号
10.   按键IVR
11.   自动语音智能IVR
12.   语音信箱
13.   报表管理
14.   黑名单管理
15.   彩铃管理
16.   电话会议管理
17.   控制接口,发起呼叫,记录通话过程中的各种状态,并与第三方应用进行交互
18.   会议控制接口 ,可与第三方应用进行交互
19.   与第三方CRM等对接接口,支持restful或socket,支持python php java c++ c ruby golang等开发语言
20.   转码服务(G711,G723,G722,G729,ILBC,OPUS,ARMNB,GSM...)
21.   IMS接入
22.   超级ACD排队机
23.   WEBRTC音频模式,SIP终端,S口设备注册
24.  FIFO排队,来电队列,座席队列
25.  去电回铃检测
26.   。。。。。。
```

使用说明书:

http://freeswitch.net.cn/100.html

来去电,摘机,挂机,响铃等消息,使用代码

https://github.com/nwaycn/FSGui/blob/master/EventOrCDR.py

Restful接口调用示例:

https://github.com/nwaycn/FSGui/tree/master/CallInterface


安装和更新日志

特别提醒: 注意防火墙

Centos 6 FSGUI ISO镜像安装(推荐)

下载

V2.3.5.1 beta ISO: https://pan.baidu.com/s/1jIQeV9G

V2.3.3.0 alpha RPM包: http://pan.baidu.com/s/1ge37vO3

V2.3.3.0 alpha ISO包: http://pan.baidu.com/s/1c2kqSt6

V2.3.1.3 下载 https://pan.baidu.com/s/1pL0MEmv

V2.3.1.2下载 https://pan.baidu.com/s/1gePiQY3

V2.2.1 下载 https://pan.baidu.com/s/1slctYYL

安装

使用光盘刻录机或ultraiso等工具把iso镜像写入u盘,由光盘或u盘引导后启动,进行自动安装。

用户: root, 密码: Nway123

FSGUI主路径: /opt/fsgui

Postgresql 路径: /usr/pgsql-9.6/

Postgresql data 路径 : /db/pgsql/data

Postgresql 的超级用户 postgres的密码: Nway2017

如果修改了postgres的相关信息,则需要配置两项:

/usr/local/FSGUI/conf/app.conf 文件中为web配置

/usr/local/FSGUI/Nway.conf 文件为后台和认证服务应用的配置

配置

这里的配置,主要是网络ip的配置

vi /etc/sysconfig/network-scripts/ifcfg-eth0

```

DEVICE="eth0"
BOOTPROTO="static"                                        改为static
HWADDR="08:00:27:28:44:81"
IPV6INIT="no"
NM_CONTROLLED="yes"
ONBOOT="yes"                                             改为yes
TYPE="Ethernet"
UUID="7d03dad6-2c06-402a-8e6b-8224764e91d3"
IPADDR=192.168.1.205                                       改为自己的ip
GATEWAY=192.168.1.1                                       实际的路由网关
NETMASK=255.255.255.0                                     子网掩码

```

接着,就可以重启了,就可以用了

Web管理界面为 : http://ip:8080/index admin 123456

管理控制接口地址 : http://ip:8085 认证用户在Nway.conf中:

restuser=admin
restpassword=admin

ip:8083为针对 FreeSwitch的OutBound服务

ip:3000为针对 FreeSwitch的认证服务

web访问地址:

localhost:8080 默认用户名 admin,123456

先执行InstallPreService.bat后再执行 Start.bat,已测试windows 2003,2008下可以,win8,win10不可行,如有问题可以查看windows的服务中,redis freeswitch,postgresql三个的服务启动是否正常

正常应会有nway_pbx_web.exe, nway_pbx_auth.exe, nway_pbx.exe三个启动,FreeSwitch和redis及Postgresql已作为服务运行

Debian 8 下运行:

虚拟机安装

Virtual Box虚拟机安装:

下载: http://pan.baidu.com/s/1eSolxJ0

需要下载: https://www.virtualbox.org/

系统为debian 8,64位,所以一定要支持64位虚拟化

用户: root, 密码: Nway123

FSGUI主路径: /usr/local/FSGUI

Postgresql 路径: /usr/local/pgsql

Postgresql data 路径 : /db/pgsql/data

Postgresql 的超级用户 postgres的密码: Nway2017

如果修改了postgres的相关信息,则需要配置两项:

/usr/local/FSGUI/conf/app.conf 文件中为web配置

/usr/local/FSGUI/Nway.conf 文件为后台和认证服务应用的配置

从virtual box中使用这个包:

点击: 管理->导入虚拟电脑 1.

2

3.

4.

5.

6.

7.

然后就可以导入后使用啦

注意: 网络默认地址: 192.168.1.203 ,可以自行修改

Web管理界面为 : http://ip:8080/index admin 123456

管理控制接口地址 : http://ip:8085 认证用户在Nway.conf中:

restuser=admin restpassword=admin

ip:8083为针对 FreeSwitch的OutBound服务

ip:3000为针对 FreeSwitch的认证服务

手工安装

暂时需要自行安装 FreeSwitch,Redis,Postgresql 编译好的基于debian 8 64位的FreeSwitch二进制包可以下载: http://pan.baidu.com/s/1hrMvI0s

或者,freeswitch,redis,nwaypbx等的二进制包,下载地址:http://pan.baidu.com/s/1o77qz8Y 需要预先安装一些第三方包,如下:

    wget -O - https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add -

    echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.6/ jessie main" >         /etc/apt/sources.list.d/freeswitch.list

    apt-get update && apt-get install -y freeswitch-meta-all

如果是FSGui-Debian8-20161217.zip,则要如下操作:

解压压缩包到/usr/local下,保证 /usr/local/freeswitch/bin/freeswitch路径、/usr/local/nwaypbx/nway_pbx 、 /usr/local/redis/src/redis-server 是有效的

+---db
+---freeswitch
+---nwaypbx
|   +---assets
|   |   +---avatars
|   |   +---bootstrap-datepicker-1.6.4-dist
|   |   |   +---css
|   |   |   +---js
|   |   |   \---locales
|   |   +---css
|   |   |   +---images
|   |   |   \---img
|   |   +---examples
|   |   +---font-awesome
|   |   |   +---4.1.0
|   |   |   |   +---css
|   |   |   |   \---fonts
|   |   |   \---4.2.0
|   |   |       +---css
|   |   |       \---fonts
|   |   +---fonts
|   |   +---img
|   |   +---js
|   |   \---locales
|   +---conf
|   +---controllers
|   +---entity
|   +---libs
|   +---models
|   +---routers
|   +---service
|   +---static
|   |   +---css
|   |   +---img
|   |   \---js
|   +---tests
|   \---views
|       +---agent
|       +---baseconfig
|       +---cdr
|       +---conference
|       +---dialplan
|       +---dialplandetail
|       +---error
|       +---extension
|       +---fifo
|       +---gateway
|       +---gatewaygroup
|       +---ivr
|       +---ivrdetail
|       +---layout
|       |   \---sections
|       +---log
|       +---main
|       +---report
|       +---ring
|       +---system
|       +---timeplan
|       \---user
\---redis
 +---deps
 |   +---geohash-int
 |   +---hiredis
 |   |   +---adapters
 |   |   \---examples
 |   +---jemalloc
 |   |   +---bin
 |   |   +---doc
 |   |   +---include
 |   |   |   +---jemalloc
 |   |   |   |   \---internal
 |   |   |   \---msvc_compat
 |   |   |       \---C99
 |   |   +---lib
 |   |   +---src
 |   |   \---test
 |   |       +---include
 |   |       |   \---test
 |   |       +---integration
 |   |       +---src
 |   |       +---stress
 |   |       \---unit
 |   +---linenoise
 |   \---lua
 |       +---doc
 |       +---etc
 |       +---src
 |       \---test
 +---src
 +---tests
 |   +---assets
 |   +---cluster
 |   |   +---tests
 |   |   |   +---helpers
 |   |   |   \---includes
 |   |   \---tmp
 |   +---helpers
 |   +---integration
 |   +---sentinel
 |   |   +---tests
 |   |   |   \---includes
 |   |   \---tmp
 |   +---support
 |   +---tmp
 |   \---unit
 |       \---type
 \---utils
     +---create-cluster
     +---hashtable
     +---hyperloglog
     +---lru
     \---releasetools
按 http://freeswitch.net.cn/27.html 安装postgresql
使用pg_dump导入解压包中db/nwaycc161216.backup 确保postgresql已启动
chmod +x /usr/local/freeswitch/bin/*
chmod +x /usr/local/nwaypbx/nway_pbx*
chmod +x /usr/local/redis/src/redis-*
启动freeswitch # /usr/local/freeswitch/bin/freeswitch -nc
启动redis # /usr/local/redis/redis-server
启动nway_pbx相关的 #cd /usr/local/nwaypbx/
nohup ./nway_pbx & && nohup ./nway_pbx_web & && nohup ./nway_pbx_auth &

  1. 使用pg_dump导入 https://github.com/nwaycn/FSGui/blob/master/Debian8/db.backup
  2. 使用https://github.com/nwaycn/FSGui/tree/master/Debian8/Freeswitchconf/conf 替换FreeSwitch的默认配置
  3. 启动Redis
  4. 启动freeswitch
  5. 启动postgresql
  6. 修改nway.conf和conf/app.conf 中的连接字符串及端口等数据
  7. 等待大约1分钟后启动nway_pbx_web nway_pbx_auth nway_pbx

Changelog:


2017-5-31: V2.3.5.0 beta

修改一些bug

增加一个内置接口,记忆呼转

增加一个内置接口,export

2016-8-31 14:30

增加批量生成网关或IMS对接的gateway页面及接口, 操作步骤: 网关管理 ->网关列表-> 批量创建

然后下载模板按实际数据编辑excel表格后上传,并提交即可。


可以试着用 http://nssm.cc/commands 这个工具注册exe为windows服务

程序下载,可以从github.com上拉下对应的系统包进行运行

https://github.com/nwaycn/FSGui

截图手册

  1. 登录

  1. 首页

  1. 先进行基础配置

对于系统运行所需的一些路径参数进行配置

  1. 彩铃配置

进行彩铃配置前,先上传一个彩铃后,把路由配置和ivr配置中的相关彩铃先删除后,再删现有彩铃

  1. 分机列表

  1. 添加分机

新添加的分机,在nway_pbx_auth启动后,则ip话机或其它voip方式应用就可以注册到系统中。

7.列出分机组

  1. 添加分机组

  1. 路由列表

这里的路由是整个系统的路由,不管是内呼内,内呼外,外呼内等,还是呼队列,ivr,分机直转都需要走这个地方的路由。

  1. 新建路由

  1. 路由明细

列出路由中具体路的明细,一个路由有多条明细

  1. 添加路由明细

  1. IVR列表

IVR可以嵌套,即第一层ivr下再转给第二层ivr,第二层ivr再转给第三层ivr

  1. 新建IVR

  1. IVR明细

  1. 添加IVR明细

  1. 网关组列表

  1. 添加网关组

  1. 网关列表

  1. 添加网关

当前免费版不提供批量导入网关配置功能,收费版可提供

21 队列列表

  1. 添加队列

23. 话单管理

  1. 系统配置

用于进行了路由,ivr等变更时,需要通知后台底层应用重新加载数据,否则还是跑旧数据应用

  1. 接口展示

全部为restful的接口,可以为php,c#,java,golang,ruby等开发语言提供管理控制接口,暂时分机状态需要由另一端语言去查询和操作,下个版本会全部由restful接口实现

  1. 会议管理

由restful接口进行处理,即由平台发起一个conference,而不提供由平台等待外部呼叫呼入conference

  1. 黑名单

  1. 超级ACD排队机

  1. WEBRTC相关

更新说明:

2017-4-14:

增加呼出放音后再转呼给其他分机或外线的接口:

呼叫两个通道且放音,originate_playring

这个接口可以替代原上一个接口originage,即我们不指定播放的ring_id即可

Job_uuid 源主叫uuid get_uuid获得

Callername sip里的name

Callernum  aleg  号码

Calleenum bleg 号码

A_gatewayname  如果a是外线,则要指定a的出局网关

B_gatewayname  如果b是外线,则要指定b的出局网关

A_effective_caller_id_num  a到b显示的号码

B_effective_caller_id_num  b到a在a上显示的号码

A_external   false,true,标记a是不是外线

B_external   false,true,标记b是不是外线

Ring_id ,     上传后的彩铃id,在这里以字符串发送

先呼内线再呼外线



 curl -H "Content-Type:application/json" -d '{"Job_uuid":"1234","Callername":"1001","Callernum":"1001","Calleenum":"018621575908","A_gatewayname":"nwaycall","B_gatewayname":"nwaycall","A_effective_caller_id_num":"18621575908","B_effective_caller_id_num":"13671947488","A_external":"false","B_external":"true","Ring_id":"35"}'  -H"Authorization:Nway token" http://127.0.0.1:8085/api/originate_playring

先呼外线再呼内线

  curl -H "Content-Type:application/json" -d '{"Job_uuid":"1234","Callername":"18621575908","Callernum":"018621575908","Calleenum":"1001","A_gatewayname":"nwaycall","B_gatewayname":"nwaycall",

  "A_effective_caller_id_num":"18621575908",

 "B_effective_caller_id_num":"13671947488","A_external":"true","B_external":"false","Ring_id":"35"}'  -H "Authorization:Nway token"http://127.0.0.1:8085/api/originate_playring

两线均为外线

   curl -H "Content-Type:application/json" -d                                                                                                     '{"Job_uuid":"1234","Callername":"18621575908","Callernum":"018621575908","Calleenum":"013671947488","A_gatewayname":"nwaycall","B_gatewayname":"nwaycall","A_effective_caller_id_num":"18621575908","B_effective_caller_id_num":"13671947488","A_external":"true","B_external":"true","Ring_id":"35"}'  -H "Authorization:Nway token"http://127.0.0.1:8085/api/originate_playring

增加路由和IVR过程中由外部的URL来控制业务流程:

增加接口操作类型:external_execute_uri

在IVR明细或路由明细中配置,且配置了相关的url后,则按以下业务逻辑处理

//定义

SRCNUMBER      = "SrcNumber"

    INGATEWAY      = "InGateway"

    OUTGATEWAY     = "OutGateway"

    DESTNUMBER     = "DestNumber"

    DOAMIN         = "Domain"

    STATUS         = "Status"

    STATUS_SUCCESS = "Success"

    STATUS_FAILED  = "Failed"

    UUID           = "Uuid"

    RESSTRING      = "restring"

    //返回的控制消息指令

    CTRL_RINGFILE      = "RingFile"

    CTRL_DTMF          = "Dtmf"

    CTRL_DATA          = "Data"

    CTRL_DIGIT_LEN     = "DigitLen"

    CTRL_SHORTRING     = "ShortRing"

    CTRL_VALIDRING     = "ValidRing"

    CTRL_MAX_TIMEOUT   = "MaxTimeout"

    CTRL_INNER_TIMEOUT = "InnerTimeout"



    //OPERATE,从远程接收的命令

    COMMAND    = "Cmd"

    BRIDGE     = "bridge"

    DTMF       = "dtmf"

    PLAYRING   = "playring"

    BRIDGEGROUP = "bridgeGroup"//转给座席组

    TTS        = "tts"         //由远程返回tts数据,通过配好的tts后播放

    CONFERENCE = "conference"

    HANGUP     = "hangup"

//处理由远程返回的http值

        if C[COMMAND] == BRIDGE {

            //Cmd=bridge,Data=8888



            ...

        } else if C[COMMAND] == BRIDGEGROUP {

            //Cmd=bridgeGroup,Data=9000



            ...

        } else if C[COMMAND] == DTMF {

           //Cmd=dtmf,RingFile=/tmp/longfile.wav,ShortRing=/tmp/shortfile.wav,ValidRing=/tmp/validfile.wav,DigitLen=18,MaxTimeout=360,InnerTimeout=60

            var digitlen int = 1

            var maxtimeout int = 360

            var innertimeout int = 20

            var err2 error



             ....

            dtmf, resErr := PlayGetDigits(c,C[CTRL_RINGFILE], C[CTRL_VALIDRING], "#", digitlen,maxtimeout, innertimeout, 3)

            ...

        }else if C[COMMAND] == PLAYRING {

            //Cmd=playring,Data=/tmp/av.mpt



            ...

        } else if C[COMMAND] == TTS {

            //Cmd=tts,Data="你好,你的订单号是12345678"  //暂不实现

        } else if C[COMMAND] == CONFERENCE {

            //Cmd=conference,Data=6000



             ...

        } else if C[COMMAND] == HANGUP {

            //Cmd=hangup



             ...

        }


上海老李,QQ:1354608370,FreeSWITCH QQ群: