搜档网
当前位置:搜档网 › Selenium2_WebDriver入门指南

Selenium2_WebDriver入门指南

Selenium2_WebDriver入门指南
Selenium2_WebDriver入门指南

Selenium2.0 WebDriver入门指南

1.1 下载selenium

2.0的lib包

https://www.sodocs.net/doc/7f4432180.html,/p/selenium/downloads/list

官方User Guide:https://www.sodocs.net/doc/7f4432180.html,/docs/

1.2 用webdriver打开一个浏览器

我们常用的浏览器有firefox和IE两种,firefox是selenium支持得比较成熟的浏览器。但是做页面的测试,速度通常很慢,严重影响持续集成的速度,这个时候建

议使用HtmlUnit,不过HtmlUnitDirver运行时是看不到界面的,对调试就不方便了。使用哪种浏览器,可以做成配置项,根据需要灵活配置。

A.打开firefox浏览器:

//Create a newinstance of the Firefox driver

WebDriver driver = newFirefoxDriver();

B.打开IE浏览器

//Create a newinstance of the Internet Explorer driver

WebDriver driver = newInternetExplorerDriver ();

打开HtmlUnit浏览器

//Createa new instance of the Internet Explorer driver

WebDriverdriver = new HtmlUnitDriver();

1.3 打开测试页面

对页面对测试,首先要打开被测试页面的地址(如:https://www.sodocs.net/doc/7f4432180.html,),web driver 提供的get方法可以打开一个页面:

// And now use thedriver to visit Google

driver.get("https://www.sodocs.net/doc/7f4432180.html,");

1.4 如何找到页面元素

Webdriver的findElement方法可以用来找到页面的某个元素,最常用的方法是用id 和name查找。

假设页面写成这样:

那么可以这样找到页面的元素:

通过id查找:

WebElement element = driver.findElement(By.id("passwd-id"));

或通过name查找:

WebElement element = driver.findElement(https://www.sodocs.net/doc/7f4432180.html,("passwd"));

或通过xpath查找:

WebElement element =driver.findElement(By.xpath("//input[@id='passwd-id']"));

但页面的元素经常在找的时候因为出现得慢而找不到,建议是在查找的时候等一个时间间隔。

1.5 如何对页面元素进行操作

找到页面元素后,怎样对页面进行操作呢?我们可以根据不同的类型的元素来进行一一说明。

1.5.1 输入框(text field or textarea)

找到输入框元素:

WebElement element = driver.findElement(By.id("passwd-id"));

在输入框中输入内容:

element.sendKeys(“test”);

将输入框清空:

element.clear();

获取输入框的文本内容:

element.getText();

1.5.2下拉选择框(Select)

找到下拉选择框的元素:

Select select = new Select(driver.findElement(By.id("select"))); 选择对应的选择项:select.selectByVisibleText(“mediaAgencyA”);

select.selectByValue(“MA_ID_001”);

不选择对应的选择项:

select.deselectAll();

select.deselectByValue(“MA_ID_001”);

select.deselectByVisibleText(“mediaAgencyA”);

或者获取选择项的值:

select.getAllSelectedOptions();

select.getFirstSelectedOption();

1.5.3单选项(Radio Button)

找到单选框元素:

WebElement bookMode =driver.findElement(By.id("BookMode"));

选择某个单选项:

bookMode.click();

清空某个单选项:

bookMode.clear();

判断某个单选项是否已经被选择:

bookMode.isSelected();

1.5.4多选项(checkbox)

多选项的操作和单选的差不多:

WebElement checkbox = driver.findElement(By.id("myCheckbox.")); checkbox.click();

checkbox.clear();

checkbox.isSelected();

checkbox.isEnabled();

1.5.5按钮(button)

找到按钮元素:

WebElement saveButton = driver.findElement(By.id("save"));

点击按钮:

saveButton.click();

判断按钮是否enable:

saveButton.isEnabled ();

1.5.6左右选择框

也就是左边是可供选择项,选择后移动到右边的框中,反之亦然。例如:Select lang = new Select(driver.findElement(By.id("languages")));

lang.selectByVisibleText(“English”);

WebElement addLanguage =driver.findElement(By.id("addButton")); addLanguage.click();

1.5.7弹出对话框(Popup dialogs)

Alert alert = driver.switchTo().alert();

alert.accept();

alert.dismiss();

alert.getText();

1.5.8表单(Form)

Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:

WebElement approve = driver.findElement(By.id("approve"));

approve.click();

approve.submit();//只适合于表单的提交

1.5.9上传文件

上传文件的元素操作:

WebElement adFileUpload =driver.findElement(By.id("WAP-upload"));

String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";

adFileUpload.sendKeys(filePath);

1.6 Windows 和 Frames之间的切换

一般来说,登录后建议是先:

driver.switchTo().defaultContent();

切换到某个frame:

driver.switchTo().frame("leftFrame");

从一个frame切换到另一个frame:

driver.switchTo().frame("mainFrame");

切换到某个window:

driver.switchTo().window("windowName");

1.7 调用Java Script

Web driver对Java Script的调用是通过JavascriptExecutor来实现的,例如:JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("(function(){inventoryGridMgr.setTableFieldValue('"+ inventoryId + "','" + fieldName + "','"

+ value + "');})()");

1.8 页面等待

页面的操作比较慢,通常需要等待一段时间,页面元素才出现,但webdriver没有提供现成的方法,需要自己写。

等一段时间再对页面元素进行操作:

public void waitForPageToLoad(longtime) {

try {

Thread.sleep(time);

} catch (Exceptione) {

}

}

在找WebElement的时候等待:

public WebElementwaitFindElement(By by) {

returnwaitFindElement(by,

Long.parseLong(CommonConstant.GUI_FIND_ELEMENT_TIMEOUT),Long

.parseLong(CommonConstant.GUI_FIND_ELEMENT_INTERVAL)); }

public WebElementwaitFindElement(By by, long timeout, long interval) {

long start = System.currentTimeMillis();

while (true) {

try {

return driver.findElement(by);

} catch(NoSuchElementException nse) {

if (System.currentTimeMillis()- start >= timeout) {

throw newError("Timeout reached and element[" + by + "]not found"); } else {

try {

synchronized(this) {

wait(interval);

}

} catch(InterruptedException e) {

e.printStackTrace();

}

}

}

}

}

1.9 在selenium

2.0中使用selenium1.0的API

Selenium2.0中使用WeDriver API对页面进行操作,它最大的优点是不需要安装一个selenium server就可以运行,但是对页面进行操作不如selenium1.0的Selenium RC API那么方便。Selenium2.0提供了使用Selenium RC API的方法:

// You may use any WebDriver implementation. Firefox is used hereas an example WebDriver driver = new FirefoxDriver();

// A "base url", used by selenium to resolve relativeURLs

String baseUrl ="https://www.sodocs.net/doc/7f4432180.html,";

// Create the Selenium implementation

Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);

// Perform actions with selenium

selenium.open("https://www.sodocs.net/doc/7f4432180.html,");

selenium.type("name=q", "cheese");

selenium.click("name=btnG");

// Get the underlying WebDriver implementation back. This willrefer to the

// same WebDriver instance as the "driver" variableabove.

WebDriver driverInstance =

((WebDriverBackedSelenium)selenium).getUnderlyingWebDriver();

//Finally, close thebrowser. Call stop on the WebDriverBackedSelenium instance

//instead of callingdriver.quit(). Otherwise, the JVM will continue running after

//the browser has beenclosed.

selenium.stop();

我分别使用WebDriver API和SeleniumRC API写了一个Login的脚本,很明显,后者的操作更加简单明了。

WebDriver API写的Login脚本:

public void login() {

driver.switchTo().defaultContent();

driver.switchTo().frame("mainFrame");

WebElement eUsername= waitFindElement(By.id("username"));

eUsername.sendKeys(manager@https://www.sodocs.net/doc/7f4432180.html,);

WebElement ePassword= waitFindElement(By.id("password"));

ePassword.sendKeys(manager);

WebElementeLoginButton = waitFindElement(By.id("loginButton"));

eLoginButton.click();

}

SeleniumRC API写的Login脚本:

public void login() {

selenium.selectFrame("relative=top");

selenium.selectFrame("mainFrame");

selenium.type("username","manager@https://www.sodocs.net/doc/7f4432180.html,"); selenium.type("password","manager");

selenium.click("loginButton");

}

FreeSwitch配置和使用手册培训课件

精品文档
FreeSwitch 配置和使用手册
目录
1. FreeSwitch 简介 .....................................................................................................1 2. 获取 FreeSwitch .....................................................................................................2 3. FreeSwitch 的配置 .................................................................................................3 4. 软电话连接 FreeSwitch 使用 ................................................................................3
4.1. 语音通话.......................................................................................................................4
4.2. 发送 SMS......................................................................................................................8
1. FreeSwitch 简介
FreeSwitch 是一个开源的电话软交换平台,从一个简单的软电话客户端到运营商的软 交换设备几乎无所不能,FreeSwitch 可以用作交换机引擎、PBX、多媒体网关以及多媒体服 务器等。FreeSwitch 具有很强的伸缩性。旨在为音频、视频、文字或任何其他形式的媒体, 提供路由和互连通信协议。它创建于 2006 年,填补了许多商业解决方案的的空白。 FreeSWITCH 的也提供了一个稳定的电话平台,许多广泛使用的免费电话就是在使用它开发 的,但是它不支持视频通话。
FreeSwitch 能原生地运行在 Windows、Max OS X、Linux、BSD 及 solaris 等诸多 32/64 位平台,可以用作一个简单的交换引擎、一个 PBX,一个媒体网关或媒体支持 IVR 的服务器 等。它支持 SIP、H323、Skype、Google Talk 等协议,并能很容易地与各种开源的 PBX 系统 如 sipXecs、Call Weaver、Bayonne、YATE 及 Asterisk 等通信。FreeSWITCH 遵循 RFC 并支 持很多高级的 SIP 特性,如 presence、BLF、SLA 以及 TCP、TLS 和 sRTP 等。它也可以用作 一个 SBC 进行透明的 SIP 代理(proxy)以支持其它媒体如 T.38 等。FreeSWITCH 支持宽带
精品文档

Freeswitch中文用户手册

Freeswitch中文用户手册 第一章PSTN 与VoIP 说起VoIP,也许大家对网络电话更熟悉一些。其英文原意是Voice Over IP,即承载于IP网上的语音通信。大家熟悉家庭用来上网的ADSL吧,也许有些人还记得前些年用过的吱吱叫的老“猫”。技术日新月异,前面的技术都是用电话线上网,现在,VoIP技术使我们可以在网上打电话,生活就是这样。 所谓温故而知新,在了解任何东西以前,我们都最好了解一下其历史,以做到心中有数。在了解VoIP之前,我们需要先看一下PSTN,那在PSTN之前呢? PSTN起源 PSTN(Public Switched Telephone Network)的全称是公共交换电话网,就是我们现在打电话所使用的电话网络。 第一次语音传输是亚历山大·贝尔(Alexander Granham Bell)在1876年用振铃电路实现的。在那之前,普遍认为烽火台是最早的远程通信方式。其实峰火台不仅具备通信的完整要素(通信双方,通信线路及中继器),而且还是无线通信。当时的没有电话号码,相互通话的用户之间必须有物理线路连接;并且,在同一时间只有一个用户可以讲话(半双工)。发话方通过话音的振动激励电炭精麦克风而转换成电信号,电信号传到远端后通过振动对方的扬声器发声,从而传到对方的耳朵里。 由于每对通话的个体之间都需要单独的物理线路,如果整个电话网上有10个人,而你想要与另个9个人通话,你家就需要铺设9对电话线。同时整个电话网上就需要10 x (10-1) / 2 = 45 对电话线。 当电话用户数量增加的时候,为每对通话的家庭之间铺设电话线是不可能的。因此一种称为交换机(Switch)的设备诞生了。它位于整个电话网的中间用于连接每个用户,用户想打电话时先拿起电话连接到管理交换机的接线员,由接线员负责接通到对方的线路。这便是最早的电话交换网。 由于技术的进步,电子交换机替代了人工交换机,便出现了现代意义的PSTN。随着通信网络的进一步扩大,便出现了许许多多的交换机。交换机间通过中继线(Trunk)相连。有时一个用户与另一个用户通话需要穿越多台交换机。 后来出现了移动电话(当移动电话小到可以拿在手里的时候就开始叫“手机”),专门用于对移动电话进行交换的通信网络称移动网,而原来的程控交换网则叫固定电话网,简称固网。简单来说,移动网就是在普通固网的基础上增加了许多基站(Base Station,可以简单理解为天线),并增加了归属位置寄存器(HLR,Home Location Register)和拜访位置寄存器(VLR,Visitor Location Register),以用户记录用户的位置(在哪个天线的覆盖范围内)、支持异地漫游等。移动交换中心称之为MSC(Mobile Switch Center)。模拟与数字信号 现实中的一切都是模拟的。模拟量(Analog)是连续的变化的,如温度、声音等。早期的电话网是基于模拟交换的。模拟信号对于人类交流来讲非常理想,但它很容易引入噪声。如果通话双方距离很远的话,由于信号的衰减,需要对信号进行放大。问题是信号中经常混入线路的噪音,放大信号的同时也放大的噪音,导致信噪比(信号量与噪声的比例)下降,严重时会难以分辨。 数字(Digital)信号是不连续的(离散的)。它是按一定的时间间隔(单位时间内抽样的次数称为频率)对模拟信号进行抽样得出的一些离散值。根据抽样定理,当抽样频率是最高模拟信号频率的两倍时,就能够完全还原原来的模拟信号。 PCM PCM(Pulse Code Modulattion)的全称是脉冲编码调制。它是一种通用的将模拟信号转换成以0和1表示的数字信号的方法。 一般来说,人的声音频率范围在300Hz ~ 3400Hz 之间,通过滤波器对超过4000Hz 的频率过滤出去,

FreeSwitch自带的电话会议配置

FreeSwitch自带的电话会议配置 FreeSwitch 默认带有电话会议的例子功能,是通过conference 拨码计划实现的 打开\conf\dialplan\default.xml ,在里面有一段代码 还可以设置主持人以及会议密码。设置了主持人后,可以影响会议的开展;设置了会议密码后,与会成员必须输入正确密码才能入会。 主持人对会议的影响主要体现在以下两个方面: (1)直到主持人入会后,会议才开始; (2)主持人退出会议后,会议才结束。 那怎么设置主持人?方法如下: // 未设置主持人 设置了主持人 如何设置会议密码?方法如下: // 设置入会密码为1234 如何既设置主持人,又设置会议密码?方法如下:

部署FreeSWITCH + FusionPBX

部署freeswitch+fusionpbx 前言: freeswitch是目前开源最火的软交换系统,fusionpbx则是其gui管理界面(只有E文版本),同样也是开源。freeswitch相比asterisk功能和性能都要强大很多,毕竟freeswitch是一个开源的软交换系统,而asterisk只是一个开源的PBX系统,具体的一些特性不了解的同学可以看维基百科。 在无线路由器上不是freeswitch不是很麻烦,openwrt都有编译好的包,直接通过opkg安装就可以,但是如果需要GUI界面,这个就比较麻烦了,首先要解决的一个问题是无线路由器的flash容量不够,其次是fusionpbx是php开发的web程序,调试起来还是有点麻烦。解决无线路由器flash容量不够的办法很多,dd-wrt和tomato一般是使用opt挂载U盘来解决,openwrt一般则是block-extroot方式将U盘挂载到/overlay目录,我所使用的openwrt本身集成了block-extroot功能,直接将一个4G的U盘挂载到/overlay 目录,很好解决了flash容量不够的问题。具体操作办法我这里不累赘了,以前有很多相关的帖子,大家随便搜一下就能找到很多。 fusionpbx调试的时候,以前有一篇关于fusionpbx的文章,全E文的,不过很简单就能读明白,其使用的环境是php5,web服务利用openwrt的uhttp,数据库使用的是sqlite,但是我按照其指导,一步一步来,最后还是失败。于是我寻求其他办法,几经失败,最后在php+lighttpd+mysq组合下成功了。 我的硬件环境是tp-link TL-845N改8M flash/64M RAM/刮U加USB口,软件环境是我以前发布的一个帖子内的,帖子名:【补充】841N V8 843N 845N 等AR9341 8M uboot(带httpd)+art ,(链接 经过几个日夜的调试,终于把freeswitch+fusionpbx部署完成,不敢独享,特将笔记贴出来给有同样兴趣的同学参考一下。 好了,废话已经很多了,下面正式开始在openwrt无线路由器上部署freeswitch+fusionpbx。 一、基本配置及检出fusionpbx opkg update opkg install zoneinfo-core zoneinfo-asia opkg install subversion-client openssh-sftp-server unzip 修改/etc/config/system 时区为:Asia/ShangHai /*先略去此步骤,如fusionpbx页面报时区错误时再修改*/ 检出fusionpbx版本 cd /usr/share 二、安装应用 php部分 opkg install php5 opkg install php5-cgi opkg install php5-cli opkg install php5-fastcgi opkg install php5-mod-calendar opkg install php5-mod-curl opkg install php5-mod-dom opkg install php5-mod-gd opkg install php5-mod-iconv

FreeSwitch TLS认证客户端证书

FreeSwitch TLS认证客户端证书 FreeSwitch是基于Asterisk定制的SIP Server,支持TLS认证客户端证书,本文主要讲解FreeSwitch CA、Server、Client配套证书制作方法,以及Server单方认证客户端证书过程,如下简易流程图所示,即Server、Client双方建立Hello通讯后,Server要求Client发送Client持有的证书,以便Server确认Client 持有证书是可靠的,并与Server属于同一个CA所签发的证书,仅通过Server认证后才于后续通讯。 证书制作 1、生成CA根证书: 1)生成必要的目录:mkdir -p ssl && cd ssl。 2)生成CA根证书:openssl req -out cafile.pem -new -x509 -keyout cakey.pem -nodes -days 730 -sha1。 Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:GD Locality Name (eg, city) []:SZ Organization Name (eg, company) [Internet Widgits Pty Ltd]:GS Organizational Unit Name (eg, section) []:TEST Common Name (e.g. server FQDN or YOUR name) []:Freeswitch ROOT CA Email Address []:空 2、生成Server证书: 1)生成Server证书请求文件和私钥:openssl req -new -out server.req -newkey rsa:2048 -keyout server.key -nodes -sha1。 Country Name (2 letter code) [AU]:CN State or Province Name (full name) [Some-State]:GD Locality Name (eg, city) []:SZ Organization Name (eg, company) [Internet Widgits Pty Ltd]:GS Organizational Unit Name (eg, section) []:TEST Common Name (e.g. server FQDN or YOUR name) []:Freeswitch Server CA Email Address []:空 Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:空 An optional company name []:空 2)使用CA证书给Server证书签名:openssl x509 -req -CAkey cakey.pem -CA cafile.pem -CAcreateserial -in server.req -out server.crt -days 730 -sha1 3)拼合Server证书与私钥:cat server.crt server.key > agent.pem。 3、生成Client证书: 1)生成Client证书请求文件和私钥:openssl req -new -out client.req -newkey rsa:2048 -keyout client.key -sha1。

FreeSwitch配置和使用手册(DOC)

FreeSwitch 配置和使用手册
FreeSwitch 配置和使用手册
目录
1. 2. 3. 4.
FreeSwitch 简介 ..................................................................................................... 1 获取 FreeSwitch ..................................................................................................... 2 FreeSwitch 的配置 ................................................................................................. 3 软电话连接 FreeSwitch 使用 ................................................................................ 3
4.1. 4.2. 语音通话....................................................................................................................... 4 发送 SMS...................................................................................................................... 8
1. FreeSwitch 简介
FreeSwitch 是一个开源的电话软交换平台,从一个简单的软电话客户端到运营商的软 交换设备几乎无所不能,FreeSwitch 可以用作交换机引擎、PBX、多媒体网关以及多媒体服 务器等。FreeSwitch 具有很强的伸缩性。旨在为音频、视频、文字或任何其他形式的媒体, 提供路由和互连通信协议。它创建于 2006 年,填补了许多商业解决方案的的空白。 FreeSWITCH 的也提供了一个稳定的电话平台,许多广泛使用的免费电话就是在使用它开发 的,但是它不支持视频通话。 FreeSwitch 能原生地运行在 Windows、 Max OS X、 Linux、 BSD 及 solaris 等诸多 32/64 位平台,可以用作一个简单的交换引擎、一个 PBX,一个媒体网关或媒体支持 IVR 的服务器 等。它支持 SIP、H323、Skype、Google Talk 等协议,并能很容易地与各种开源的 PBX 系统 如 sipXecs、Call Weaver、Bayonne、YATE 及 Asterisk 等通信。FreeSWITCH 遵循 RFC 并支 持很多高级的 SIP 特性,如 presence、BLF、SLA 以及 TCP、TLS 和 sRTP 等。它也可以用作 一个 SBC 进行透明的 SIP 代理(proxy)以支持其它媒体如 T.38 等。FreeSWITCH 支持宽带
1

第一章-谈freeswitch架构

Architecture of FreeSWITCH
Freeswitch 癿架构
欢迎来到 FreeSWITCH! 如果你正读到此,那么无可置疑你对 VOIP 呾电信行业很感兴趣。 FreeSWITCH 是一个在电信通讯技术革命中起到革命性软件。在看返个强大癿软件癿架构前,我们先瞧 一瞧有趣癿电信技术。返对我们深入了解 FreeSWITCH 会有帮劣。 在此章节,我们将会了解: ? 一场电信业癿革命 ? FreeSWITCH 癿特性 ? 终端呾拨号模块 ? FreeSWITCH 是怎么简化像语音留言返样复杂癿应用癿
一场革命已经开始,秘密已被揭开
对亍大夗数人来说,电话癿工作原理是比较神秘癿。它癿工作原理被保守为秘密已经讲夗年了。我们仅 仅是把我们癿电话插到墙上癿电话口里,然后它们正常使用了。大夗数人仅仅返样做,然后期待它们工 作正常。丌过电信界癿革命已经开始了,我们已经开始去解开返个电信业遗留癿最关键秘密。现在,像 你我返样癿普通人都有能力去创建比传统电信系统更好,同时可以以相对较低癿价格提供高级功能癿电 话系统。丌少人已经将 FreeSWITCH 用亍商业电话系统,获叏利润。FreeSWITCH 已经把返一切发得更 加癿容易了,所以我们要看一下它癿架构,更好癿理解它是如何工作癿。 如果返些概念吩起来很晦涩难懂呾抽象,丌要担心呾丧气,学习电话技术,特别是 VOIP,可丌是一朝一 夕癿事情,其实,我们建议你夗读几遍本章节。在你看第一遍癿时候尽可能夗癿理解不吸收,然后当你 读完了第五章后再重复温习一遍,理解了 XML 癿拨号方案,你会惊讶癿収现你对 VOIP 呾 FreeSWITCH 癿理解将会大大癿提升。当你读完第 9 章节癿内容后再来略读它第三遍,通过外部命令来控制 FreeSWITCH, 在那时,你将会有一个深刻地领会到 VOIP 呾 FreeSWITCH 癿概念。给自己一个充足癿 时间去消化返些陌生癿新概念。然后你就会収现你已经是一个非常牛癿 FreeSWITCH 管理员。如果你丌 气馁,你会对返个陌生而美妙癿电话丐界有一个有意义癿讣知。电话呾电话系统都是非常复杂难理解 癿,幵丏经过夗年癿収展,通讯发来越来越夗样化。 在美国呾英国最流行癿电话当属传统模拟电话,我们也叨它 POTS lines 戒 纯粹老癿电话服务(Plain Old Telephone Service)。大夗数我们今天使用癿电话,仍传统癿 Ma Bell 电话到秱劢无线电话,同样

基于LINUX平台的SIP网络电话系统构建

封面(基于Linux平台的SIP网络电话系统构建) 摘要:基于SIP的网络电话于现在的办公,沟通等方面使用广泛。SIP是freeswitch的核心部分,所以本文主要整理了我在学习SIP过程中安装freeswitch,zoiper的过程以及遇到的问题。我使用的平台是VMware Workstation1与32位虚拟机Centos6.6。 关键字:SIP、freeswitch、网络 引言 在互联网时代,网络已成为我们了解世界,与世界沟通的一大方式,而VoIP电话作为网络语音通信的主导也在蓬勃发展。随着移动网络与无线网络的发展,VoIP电话的成本也会下降,操作也会更简便,也将变得更为普及。基于SIP的VoIP网络电话正在被越来越多的网络电话商所支持。 正文 在安装网络电话前,我先安装了VMware Workstation12,并安装了Centos6.6。 1、网络电话的安装过程 (1)配置环境 虚拟机网络连接使用NAT模式,可共享主机IP上网,安装编译安装freeswitch依赖的一些包。 命令:yum-y install git autoconf automake nano libtool gcc-c++ ncurses-devel make expat-devel zlib zlib-devel libjpeg-devel unixODBC-devel openssl-devel gnutls-devel libogg-devel libvorbis-devel curl-devel libtiff-devel mysql-server php php-mysql php-posix php-gd

Centos7下Freeswitch1.6安装

Centos7下Freeswitch1.6安装FreeSwitch 1.6安装环境 FreeSwitch 1.6版本安装,系统环境Centos7_x64(在Centos6.5下make安装不通过,官方也不建议在Centos6.5环境安装)数据库PostgreSQL_9.5(原生支持) 参考链接: https://https://www.sodocs.net/doc/7f4432180.html,/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7 https://https://www.sodocs.net/doc/7f4432180.html,/confluence/display/FREESWITCH/PostgreSQL+in+the+core 关闭Selinux setenforce 0 /bin/sed -i -e s,'SELINUX=enforcing','SELINUX=disabled', /etc/selinux/config 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service 添加FreeSwitch 1.6的RPM库 yum install -y https://www.sodocs.net/doc/7f4432180.html,/freeswitch-release-1-6.noarch.rpm 安装软件必须的依赖包 yum install -y gitgcc-c++ autoconfautomakelibtoolwget python ncurses-develzlib-devellibjpeg-developenssl-devel e2fsprogs-devel sqlite-devellibcurl-develpcre-develspeex-develldns-devellibedit-devel libxml2-devel libyuv-devel opus-devellibvpx-devel libvpx2* libdb4* libidn-devel unbound-devellibuuid-devellua-devellibsndfile-develyasm-develbr Centos7下安装freeswitch还需要安装以下几个依赖库 yum install -y libvpx2-devel libyuv-devel opus-devel 添加数据库ODBC支持

freeswitch源码分析

总体来说,FreeSWITCH是一个基于组件的架构,如下图: FreeSWITCH可以仅包括FS Core独立运行,外围各种不同种类的组件(module)增强了FreeSWITCH的功能。 开发者可以使用public API,遵循FreeSWITCH的接口标准,开发各种不同种类的module来增强FreeSWITCH的功能。 分析(一) 什么是FreeSWITCH FreeSWITCH 是一个可扩展的开源跨平台的电话平台,支持音频、视频、文本或任何其他形式的媒体使用的协议的路由与交互。它于2006年成立。FreeSWITCH 也提供一个稳定的技术平台,可供许多电话应用开发利用的免费工具。

FreeSWITCH 最初由Anthony Minessale在Brian West和Michael Jerris的协助下设计和开发。这三人原先都是asterisk的开发者。这个项目的设计目标包括模块化、跨平台的支持,可扩展性和稳定性。今天,许多更多的开发者和使用者都为FreeSWITCH在贡献力量。 FreeSWITCH支持各种通信技术,如Skype,SIP、H.323、GoogleTalk,因此它容易与其他的开源PBX进行对接,如:sipXecs、Call Weaver、Bayonne、YATE 和Asterisk。 FreeSWITCH支持许多高级的SIP特性,如presence、BLF、SLA以及TCP TLS和sRTP。它也可以作为一个透明代理(有媒体或无媒体),扮演SBC和T.38代理的角色。 FreeSWITCH既支持宽带、窄带编码。Voice channel和conference bridge模块可以支持8k、16k、24k、32k和48k不同的码率,而且这些不同码率的通道可以进行bridge。如果G.729编解码经过授权,FreeSWITCH也是支持的。 FreeSWITCH支持Windows,Mac OS X ,Linux,BSD和Solaris的32与64位平台。 FreeSWITCH支持传真,无论是音频,还是T.38,而且可以微微音频和T.38的网关。 FreeSWITCH的很多开发者,都是非常有经验的开发人员。他们同时也参与其他开源软交换产品的开发,如:openSER, sipXecs, Asterisk和Call Weaver. 目录结构 ├── configure ├── configure.in ├── Makefile.am ├── Makefile.in ├── modules.conf :需要编译的module列表 ├── patches/ :补丁包 │ ├── MODAPP-293.diff │ ├── mod_portaudio_snow_leopard.diff │ ├── sofia.diff

用freeswitch配置一些有用的功能

配置用户组: 有时候需要同时拨打多个用户的号码。因此可以把这些用户的号码配置在一个分组中,实现这个功能需要改动两个配置文件: 1.在freeswitch中group在conf/directory/default.xml 中配置,首先定位到groups节点。如果想把1000 1001 1019编在一个分组,假设组的名字为xiaobai。那么可以在groups中加入以下内容: 2.在conf/dialplan/default.xml 中配置拨号计划。首先打开default.xml 配置文件,然后定位到group_dial_billing 在之后加入

这两步完成之后用户组就配置成功了, 3.拨打2003 用户组中的所有的电话就会ring ,当一个被叫摘 机后其它的用户就自动挂机。 2.配置caller-id display: 进入conf/directory/default/*.xml 如果想配置1000号码的display caller-id 则打开1000.xml 然后定位 到 把Extension 1000 改成自己的显示用户名比如xiaobai 这样当拨打别人的电话时在被叫方就显示xiaobai 这样的主叫方的 名字。 3.配置codec: 进入conf/var.xml 定位到: 这里使用X-PRE-PROCESS预处理命令设置了freeswitch支持的codec。如果想让其支持单个 的codec 或者别的codec 直接在这一行改写就可以了,或者把这一行屏蔽,把 X-PRE-PROCESS改为xX-PRE-PROCES是freeswitch不识别这一行,然后在这行下面加一行:假设只支持G722. 这样就只支持G722了。截图 如下: 4.设置freeswitch的监听ip和端口 用netstat –an|grep 5060 可以看到freeswitch监听的ip地址。其默认的监听端口号是5060.

freeswitch依赖库详细-借鉴

Parent Directory Python-2.5.1.tgz apr-1.2.8.tar.gz apr-iconv-1.1.1.tar.gz apr-util-1.2.8.tar.gz boost_1_49_0.tar.gz celt-0.10.0.tar.gz ??? communicator_semi_6000_20080321.tar.g z curl-7.39.0.tar.gz flite-1.5.4-current.tar.bz2 freeradius-client-1.1.6.tar.gz g729/

gettext-0.15.tar.gz 言版 glib-2.12.3.tar.gz howl-1.0.0.tar.gz iksemel-1.2.tar.gz ilbc-0.0.1.tar.gz jpegsrc.v8d.tar.gz js.tar.gz js20051231.zip json-c-0.9.tar.gz lame-3.98.4.tar.gz ldns-1.6.17.tar.gz libbv32-0.1.tar.gz

libdict-0.2.1.tar.gz libedit-20140618-3.1.tar.gz libetpan-0.48.tar.gz libmemcached-0.32.tar.gz libnatpmp-20090310.tar.gz libresample-0.1.3.zip libressl-2.0.3.tar.gz libshout-2.2.2.tar.gz libsndfile-1.0.17.tar.gz 件解析 memstat_0.8.tar.gz mongo-c-driver-0.92.2.tar.gz mono-1.2.3.1.tar.gz mozilla.tar.gz

基于SIP 的WebRTC 媒体服务器

基于SIP协议的WebRTC媒体服务器 特性 ●采用Context呼叫控制,基于号码或ID灵活控制路由。 ●支持出/入局SIP/IMS中继线路。 ●媒体处理完全采用GIPS 语音引擎模块,良好的QoS,提供Skype 级别的音频抗丢包特 性。 ●内置VP8 <---> H264 转码 ●内置视频MCU 混屏模块。 ●内置多方电话会议模块。 ●内置呼叫记录(话单)模块。 ●友好的管理界面(基于ExtJS 4.X 开发)。 ●WebRTC 客户端完全兼容Chrome,Firefox,Opera,及所有Chrome 内核的浏览器, 未来将支持微软标准CU-RTC-WEB。 ●支持实时通话管理,分机在线信息管理。 ●支持基于SIP 的文字消息收发。 应用场景举例: ●WEB网络电话: 快速组建Web网络电话系统,只需增加一条SIP/IMS落地中继,即可快速支持拨打手机,座机电话。

●WEB呼叫中心: 系统完全使用WebRTC 客户端,进行内部电话呼叫,与原有系统无缝对接,完成呼叫中心去app化,去插件化演进。 ●CRM呼叫/弹屏模块: 快速与现有CRM 系统集成,嵌入少量js 代码,即可让现有CRM支持无插件点击呼叫,来点弹屏等实用功能。 ●扩展MCU 多点会议: 为现有IPPBX 增加功能,可无缝对接Asterisk,FreeSwitch 等开源软交换,将所有视频呼叫接入只媒体服务器处理,完成多人视频会议混屏,录制等功能。 ●跨网络高品质中继: 为异地办公创建中继线路,提供高品质语音传输线路,利用GIPS,NetEQ,FEC等抗丢包能力,可在最高45% 的丢包环境下完成提供舒适的通话语音。 ●OTT社交软件视频通话平台: 通过Context 拨号方案控制,可支持客户端P2P音视频呼叫,文字消息,呼叫推送等功能。 ●视频监控平台扩展: 通过WebRTC to SIP/ WebRTC to RTSP转换模块,将现有的监控视频画面转后,通过浏览器直接查看。 ●视频会议协议转换网关: 为现有视频会议系统增加WebRTC转换网关,例如Cisco,PolyCom 等视频会议系统增加WebRTC 客户端接入支持。 对接支持 ●SIP 客户端 Linphone Csipsample MicroSIP Doubango BeeHD Baresip RealPresence Mobile ●HTML5客户端 Sipml5, jssip,Ext-js-phone

FreeSWITCH入门指南

FreeSWITCH入门指南 Getting Started Guide 入门指南From FreeSWITCH Wiki 从 FreeSWITCH 维 基Jump to: 跳转到: 导航,搜索The purpose of the following page is to instruct new users on how to configureFreeSWITCH in a basic way.以下网页的目的,是指导新用户如何 配置 FreeSWITCH的一个基本方式。 It is also intended to provide people with a basic understanding of theconfiguration files and how they are processed.这也是为了提供一 个配置文件的基本了解的人以及他们如何处理。 If FreeSWITCH is not already installed on your system youshould read the .如果 FreeSWITCH不是已经安装在您的 系统,你应该阅读安装指南。Thisguide is not intended to allow for more than a default configuration.本指南不打算让超过默认配置。FreeSWITCH 布局 FreeSWITCH has a modular design. FreeSWITCH采用模块化设计。 This design allows itto be extended without breaking functionality or requiring massive recoding efforts.这 种设计允许它在不破坏的功能或要求重新编写大量的努力延长。 Each module

基于XML的数据交换在分布式WEB系统中的应用研究

2018年7月 改动都记录到二进制日志Binarylog 中。 (2)备服务器会利用主服务器Mysql 上预先设置好的账号登录到主Mysql ,读取主Mysql 的Binarylog ,并写入到自身的中继日志Relaylog 中。 (3)备服务器Mysql 的sql 线程负责读取中继日志Relay 鄄log ,并执行一遍。 完成上面三个步骤后,主服务器Freeswitch 对Mysql 的所有操作都会在备服务器的Mysql 中操作一遍,从而实现了主备机Mysql 数据的实时同步。当主备机发生切换动作时,主机Freeswitch 运行的数据已经同步到备机中,从而保证系统整体服务不中断,提高系统可靠性。 3.3Freeswitch 时钟同步 Freeswitch 双机热备的正常运行,依赖于两台服务器之间的时钟同步,当服务器之间的时钟差值过大,会影响系统的高可用性。由于机场、核电、港口码头实际运行环境大多数是封闭的局域网,服务器无法通过互联网获取实时时钟信息,因此系统采用内部时钟同步的方案:以主服务器为NTP 服务器,备服务器周期性的同步主服务器时钟,以确保两台服务器时钟相同。 4结束语 针对机场、核电、港口码头,本文设计并实现了一套基于Freeswitch 的高可用通信调度系统。该系统采用了服务器双机热备模式,实现了Mysql 数据的实时同步和服务器之间的时钟同步,提高了系统整体可用性,系统模块化的设计为日后开发更强大的通信调度系统提供了基础。 参考文献 [1]杜金房,张令考.FreeSwitch 权威指南[M].机械工业出版社,2014. 收稿日期:2018-6-20作者简介:谌介人(1983-),男,工程师 。 图2Mysql 主从备份过程 基于XML 的数据交换在分布式WEB 系统中的应用研究 谢鸿韵(福州大学至诚学院, 福建福州350002)【摘要】近几年来,Web 应用程序非常流行, 应用起来也是相当快捷方便的,同时也可以给用户一个安全的网络环境。为了能够更好的发展Web 系统的研究, 本文就简单的介绍了基于XML 的数据交换在其系统中的应用研究,并结合实际例子进行了具体方法的研究。【关键词】XML ;分布式Web 系统;应用程序【中图分类号】TP393.09【文献标识码】A 【文章编号】1006-4222(2018)07-0031-02 随着Web 系统的广泛应用,虽然本身具有很多的优点,但同时也存在着许多不足的地方。Web 系统的本身就是相当复杂的,同时其系统应用起来没有那么的灵活,而且其系统是特别有针对性的一般都是对特定的客户端进行编程的,倘若需要其他的服务器的程序连接,那么就需要重新编写程序。在Web 系统重新新应用时,通常会出现大量且重复的代码,这对一些并不是计算机专业的人来说是很难理解,也就造成了在操作上的困难。而且Web 系统在向自动化方向保存时以前应用的语言程序一般都是HTML ,却很难保存原有数据的含义。 1基于XML 的数据交换 XML 是标准通用语言的子集,它的全称就是扩展识别语言。这种语言程序通常非常适合程序之间的数据交换,例如本文所研究的分布式Web 系统。对于原来通常会的具有跨平台性的HTTP ,而XML 的数据交换同样也可以做到同样的效果,而且XML 还是非常适合分布式Web 系统,也因此XML 数据交换也就成为了在分布式Web 系统中相对来说较合适的标记语言。XML 与HTML 的区别就是,XML 只关注所传输数据的本身,而HTML 还是非常注重数据的表达方式,这也是XML 的优势所在。XML 就可以根据数据的本身,然后让用户 的数据传输的过程中只有语意的标记环绕,这就减少了数据在传输的过程中数据库的一些检索和修改的问题。运用这样的一个语言传输系统就可以简单的进行描述说需要传输的信息,这也使得XML 成为在因特网上信息共享功能的一个非常重要的路径。 这是由于它本身是又有一个开放性的语言程序交换,而且能够在不同的程序之间进行交换,它是没有平台的针对性的,应用起来对于客户而言也是非常方便的。他自我的描述企业对企业之间的网络内部交换的关系,这是对于企业来说这样的一个方式也是非常合适的选择。因为这样的一个数据传输的工具的同时进行网络共享,也就变得更为方便简单,这根本是无须在共享之前相互协商的,就可以在程序之间进行共享。综上所述,也就使得它成Internet 上一个共享信息较强大的途径。与此同时,倘若通过DOMAPI 这样的编程就可以非常容易地编写出来XML 的程序,也就使得它在分布式Web 系统中可以得到灵活的应用。 2基于Web 的分布式三层体系结构 对于Web 得分不是来说大致可以分成三个层次,分别有客户端、应用程序服务器和数据服务器。 通信设计与应用31

相关主题