phono使用入门

phono是tropo的jquery脚本库,使得你可以轻松地整合语音,IM服务到你的网站上去。

官网http://www.phono.com

文档http://www.phono.com/docs

它的功能很强大:

tropo支持的它都支持,而且还更强大:

每个匿名session都有唯一的sessionid,可以作为匿名sip账号,因此它可以接收呼叫包括实际电话和sip电话。

同样它可以接收发送sms短信。这个不是本身提供的。

它可以接收发送xmpp消息。

 

当初始化好phono时,会得到一个唯一sessionid类似[email protected]

这是一个可以合法的sip地址。

dial方法:

呼叫电话号码:(不能带区号+1),其实质是通过tropo使用一个号码TELA转接到目标电话。如果直接回call这个号码TELA,则告知此号码不可用。

this.phone.dial("774-271-7100")

呼叫sip:

this.phone.dial("sip:[email protected]")

呼叫tropo app:


$.phono({ onReady: function(event, phone) { var text = prompt("Enter some text you'd like to hear in Spanish"); phone.dial("app:9991442945", { headers: [ { name:"x-source", value:"en" }, { name:"x-target", value:"es" }, { name:"x-text", value:text } ] }); } });

详细call api:http://www.phono.com/docs#call-reference

接收电话:

$.phono({ onReady: function(event) { alert("My SIP address is sip:" + this.sessionId); }, phone: { onIncomingCall: function(event) { var call = event.call; alert("Incoming call"); } } });

发送xmpp消息:

$.phono({
  onReady: function() {
     this.messaging.send("[email protected]","Hello");
  }
});

对于gtalk来说,是不接受非联系人消息的,除非gtalk用户手动将这个匿名账户添加到联系人再聊条。---所以,这个临时xmpp账户基本对gtalk没有什么实际意义。

接收xmpp消息: session可作为xmpp消息address

$.phono({
  onReady: function(event) {
    alert("My XMPP address is " + this.sessionId);
  },
  messaging: {
    onMessage: function(event) {
       var message = event.message;
       alert("Message from: " + message.from + "\n" + message.body);
    }
  }
})

发送sms见http://blog.phono.com/2010/12/07/web-based-im-to-sms-gateway/ 原理是通过发送到tropo app的jabber账号由app来通过tropo的sms接口转发的。这样存在一个问题,因为多个phono用户给同一个sms用户发短信时,sms用户无法区分phono用户,因为app使用同一个电话号码,sms手机上就显示的是同一个号码的来自不同phono用户的消息?

Continue reading phono使用入门

linux shell脚本和windows bat脚本的区别造成的问题

首先最容易出错的是换行符的不同,windows 上写shell脚本放到linux上运行就不行。因为linux不认windows换行符,所以应该在notepad++这样的编辑器中修改一下 :编辑->档案格式转换->转为UNIX格式。

再一个windows bat变量使用%变量名%来替换,而在linux中需要将变量放在引号中替换如:

::windows:

set JVM_OPS=%JVM_OPS% -Djava.rmi.server.hostname=127.0.0.1

 

#shell:

JVM_OPS="$JVM_OPS -Djava.rmi.server.hostname=127.0.0.1"

Continue reading linux shell脚本和windows bat脚本的区别造成的问题

【转】包含选择与子对象选择符的区别

转自 http://blog.doyoe.com/article.asp?id=177

相信会进来看这篇文章的人,都对CSS选择符这个名词不陌生了。CSS为我们提供了很多选择符,这使得我们可以根据自己的需要选择适合的选择符来进行样式的构造。

在众多的选择符里,相信大家用的最多,最熟悉的就是ID选择符,类选择符及包含选择符等常用的选择符。然后对于一些如属性选择符,相邻选择符,子对象选择符可能就稍微有点陌生了,这当然也是有原因的,因为IE6及以下的浏览器并不支持这几个选择符,而大多数从事这方面工作的技术人员,多数时候还是主要考虑占据着浏览器市场大半壁江山的IE6,于是对这些IE6的非亲派不熟悉也成了一个没办法的必然。

在IE7,甚至是IE8,Firefox,Opera,Safari等慢慢蚕食IE6市场的今天,那些以往不大常用的选择符也逐渐开始被应用起来。比如呆会要讲到的子对象选择符。

要讲子对象选择符,当然得顺带讲一下包含选择符,因为这两者之间有着共同之处:

如以下一段简单的包含选择符例子:

body p{
  color:#f00;
}

这是一个最简单的包含选择符,它表达的意思是所有body里面的p都将以红色的字显示。

我们再来看一个子对象选择符的例子:

body>p{
  color:#f00;
}

这是一个子对象选择符,意思是所有body里面的“子对象”p都将以红色的字显示。

以同一段html为例,分别应用以上两段样式:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta http-equiv="Content-Language" content="gb2312" />
<title>em test</title>
<meta name="Author" content="Doyoe(飘零雾雨), [email protected]" />
</head>
<body>
<p>传说中的测试</p>
<div><p>传说中的测试</p></div>
<p>传说中的测试</p>
<div><p>传说中的测试</p></div>
</body>
</html>

包含选择符的效果为:

(图一)

子对象选择符的效果:

(图二)

从图一和图二上我们可以看出,包含选择符定义的样式应用到了body下的所有p元素上;而子对象选择符定义的样式只应用到body下的第一和第三个p元素上,这是因为第二和第四个p元素并非body的儿子,而是它的孙子。

由此可以见包含选择符的深度和广度超过子对象选择符;而子对象选择符的针对性和唯一性比包含选择符强。大家可以根据实际情况选择选择何种选择符来达到自己的目的。

Continue reading 【转】包含选择与子对象选择符的区别

javascript 同步互斥

javascript 是单线程的,但是事件,ajax回调,setTimeout等却是可以造成异步的。这让我有点有些担心,在写函数时是否需要注意数据互斥同步的情况?

我们需要认识到javascript的单线程的特性,它是一门可重入语言,每个函数调用都是原子的,它的事件回调也都是线性序列的,因此对于函数内部的每个数据都可以放心认为它是只被当前函数占有的。这句话是说在函数里面的数据访问修改都不用担心另外的线程可能修改它,你只注意不要自己在这个函数里面修改了它而自己还没注意,比如循环数组时又把这个数组中的某个元素给删除了。

下面的代码证实了这一原理:

>(function() { var data = [1, 2, 3, 4, 5, 6, 7, 8, 9];

Continue reading javascript 同步互斥

不用表格垂直居中

先看这篇文章:

http://www.qianduan.net/css-to-achieve-the-vertical-center-of-the-five-kinds-of-methods.html

第一种方法使用display:table,这个ie不兼容

第二中使用绝对定位,不好用

第三个使用固定高度,在居中div之前加个浮动div。文章说这个最常用,但是它要居中div高度可知,那么这个只能用于宏观排版了,我认为主要场合是页面整体布局时,这个时候高度确实应该是固定的。一般不固定高度的也不会需要水平居中。

第四个固定高度,绝对定位,而且不兼容ie,可以忽略。

第五个适合单行文本置中切高度可知。

Continue reading 不用表格垂直居中

javascript闭包

关于闭包,要说清楚那要说半天,见我转载的文章:http://kazge.com/archives/257.html

我来说说这个经典问题:

<script language="javascript" type="text/javascript"> 
var li=document.getElementsByTagName("li"); 
for(var i=0;i<li.length;i++){ 
  li[i].onclick=function(){alert(i);} 
} 
</script>

执行结果很“古怪”,每个li元素点击时都是显示相同的提示。

实际上理解了闭包的原理就很清楚了。

所谓闭包即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内部函数。

重点是它可以访问上层范围的局部变量,闭包执行时它如果访问上层变量,那么访问到的是上层变量在闭包执行时的值。

这样就好理解所谓的经典问题了:

代码中闭包中访问了i是上层变量,这个循环结束后,i值为li元素的个数,当点击li元素时执行闭包,那么自然就是固定的值了。

正是具有这种特性闭包才如此的灵活。假如访问的上层变量是定义闭包时的值,那么闭包就不是闭包了。

Continue reading javascript闭包

通过邮编获得时区 fetch timezone from zip code

通过邮编获得时区可以通过http://www.geonames.org 提供的服务来做到:

首先你要注册成他的账户,激活免费服务。

然后看其文挡http://www.geonames.org/export/web-services.html

这网站是好人,免费啊。

首先调用Postal Code Search

api.geonames.org/postalCodeSearchJSON?postalcode=邮编参数&maxRows=1&username=你的用户名

此调用返回进度和纬度

{
	"postalCodes" : [{
				"adminName2" : "Gwinnett",//上级地区名
				"adminCode2" : "135",
				"adminCode1" : "GA",
				"postalCode" : "

xxxxxxx",
"countryCode" : "US",
"lng" : -123.123123,
"placeName" : "xxxxxxx",
"lat" : 12.12312312,
"adminName1" : "Georgia"//上上级地区名,省
}]
}

然后调用Timezone Search

http://api.geonames.org/timezoneJSON?lat=纬度参数&lng=经度参数&username=你的用户名

此调用返回目标地区当前时间,时区

{
	"time" : "2011-12-29 03:05",
	"countryName" : "United States",
	"sunset" : "2011-12-29 17:36",
	"rawOffset" : -5,
	"dstOffset" : -4,
	"countryCode" : "US",
	"gmtOffset" : -5,
	"lng" : -123.123123,
	"sunrise" : "2011-12-29 07:41",
	"timezoneId" : "America/New_York",
	"lat" : 12.12312312
}

Continue reading 通过邮编获得时区 fetch timezone from zip code

免费的sip电话,绑定到gvoice

对于voip开发来说,测试是个麻烦事,最好是有个sip电话,且可以打得通的。

这篇文章:

10款国外免费VoIP服务 http://kazge.com/archives/714.html

里面的我都试过,首先发现iptel  http://www.iptel.org/service 似乎可以用,它提供免费sip账号,可是我使用xlite和它官方推荐的jitsi都连不通。只好作罢。

关于它的配置可以参考这个 http://kazge.com/archives/715.html   写得很详细

最后还是使用gtalk2voip,它也是提供sip免费账户的。

https://www.gtalk2voip.com/gtalk_service_fromsip.shtml

只要在gtalk中添加[email protected]机器人

添加成功后你就具有一个免费的sip号码了,加入你的gtalk账号是[email protected]那么你的sip就是[email protected] 这样对这个账号的呼叫就可以转到gtalk来应答了。

另外你也可以使用sip Broker来直接使用固定电话打到gtalk上来,

http://www.gtalk2voip.com/gtalk_service_sipbroker.shtml

这一切的前提是你必须有个gvoice账号,那就是说你要有个可以绑定的北美地区电话。

so ……, 你懂的!

Continue reading 免费的sip电话,绑定到gvoice

【转】谷歌語音集成到Asterisk

转自:http://www.tux89.com/telephonie/integration-google-voice-a-asterisk/?lang=zh-tw

谷歌語音集成到Asterisk

你想要使用谷歌語音, 但你不居住在美利堅合眾國, 然後知道,這是可能的. 你怎麼說 ? 簡單, 閱讀本節 ! 但是,什麼是谷歌語音 ? 下面是一個簡單的定義 維基百科 :

« 谷歌語音 是一家電信服務 (電話和 短信) 谷歌推出的建議 11 3月 2009 美國. 這項服務通常是保留給美國居民, 但一些職能 (網絡電話, 通話記錄) 是提供給非​​美國人誰 Gmail的 美國英語和 谷歌實驗室 激活. »

有趣的是,谷歌目前提供電話到北美,不需任何費用的年底 2011. 再經過 ! 為什麼不利用這個機會向谷歌整合Asterisk的語音,從而有了一種代替 MagicJack. 不同的方法存在Asterisk的語音接口到谷歌. 該方法需要,我們在這裡看到的設備命名 歐倍德. 該設備的生產商是OBIHAI,對面就是MagicJack, 俄不需要連接到電腦操作, 因為它是一個完全獨立的設備.

OBI Asterisk

歐倍德 110

國際文憑組織提供 幾種可能性, 其中包括可以直接連接到谷歌語音使用Jabber帳戶作為協議. 這使您可以直接接聽電話,手機連接到歐. 通過手機連接的端口歐倍德一個 FXO端口到Asterisk, 我們可以做一個谷歌到Asterisk語音主幹. 通過, 我買了歐倍德 110 在eBay為 60美元.

下面是步驟,為實施此解決方案.

有Gmail帳戶

如果你還沒有一, 按照此 鏈接 與您共創一個帳戶.

Création Google Voice

為了使全谷歌語音激活, 你需要一個電話號碼與美國領土. 要做到, 你需要兩件事情, iptel一個帳戶,另一個 IPkall.

獲取公眾 iptel.org SIP帳戶

您必須先開通免費 iptel通過創建一個帳戶 iptel.org

Enregistrement à IPTEL.ORG

假設我們要為用戶創建一個帳戶 «機管局 BB心跳», 輸入並繼續執行下面的參數 :

  • 名字: 機管局
  • 姓: BB心跳
  • 電子郵件: aa.bb @ gmail.com
  • 電話: Votre_#​​_de_téléphone
  • 您的時區: Peu_importe
  • 選擇你的用戶名: aa.bb
  • 選擇密碼 : MOT_DE_PASSE_SÉCURE
  • 確認密碼: MOT_DE_PASSE_SÉCURE

Accepter IPTEL.ORG

IPTEL.ORG complété

現在反悔 iptel.org 並驗證您的帳戶信息.

Login IPTEL.ORG

Information IPTEL.ORG

得到一個電話號碼在美國 (美國) IPkall

利用信息從您的新帳戶 iptel.org, 訂閱 Ipkall 以免費電話號碼在美國 (美國).

Enregistrement IPKALL.COM

總是假定我們要創建一個帳戶為用戶節“AA BB”的, 輸入並繼續執行下面的參數 :

  • 選擇帳戶類型: SIP協議
  • 選擇您IPKall區號號碼: 選擇
  • SIP電話號碼: aa.bb杜孔特iptel.org
  • SIP代理: sip.iptel.org
  • 電郵地址: aa.bb @ gmail.com
  • 密碼: MOT_DE_PASSE_SÉCURE
  • # 幾秒鐘響前懸掛: 120

IPKALL.ORG complété

您將通過電子郵件發送的電話號碼在美國 (美國). 這是您的第一個數字鍵啟動谷歌語音美國以外的土壤. 注意,如果您的帳戶不活動期間超過 IPkall 30 天 (沒有訪問園區), 您的帳戶將自動被禁用,您將失去的電話號碼被分配.

Courriel IPKALL

設置新的電話號碼與您的SIP帳戶

下載並安裝 的X位 或任何其他軟件電話, 並配置您的手機與您的帳戶資料如下所述iptel.org :

  1. 顯示名稱: aa.bb @ iptel.org
  2. 用戶名: aa.bb
  3. 密碼: Mot_De_Passe_iptel.org
  4. 授權的用戶名: aa.bb @ iptel.org
  5. 域名: iptel.org

Configuration Xlite

你的文章現在準備接聽電話.

xlite aa.bb

帶上電話與你的手,撥打電話號碼取得IPkall. 在我們的例子, 這個數字 (253) 785-0717. 發布您的X - Lite的聲音應, 然後接電話.

您現在準備著手谷歌語音激活.

語音激活的谷歌在美國以外

最繁瑣的步驟是連接到谷歌語音,並找到一個代理服務器,將啟用該帳戶之聲. 您不能激活他們的帳戶谷歌語音如果你是在美國本土, 這意味著在更具體的條款, 有一個 IP地址的地理位置是有跡可尋的美國. 你會明白,代理是第二個密鑰來激活他們的帳戶谷歌語音.

所需的標準是代理 :

  • 透明模式
  • 美國
  • 支持SSL / HTTPS的

您可以執行下面的搜索在谷歌 :

透明美國的SSL

在我的案例, 其中的一個環節提供的搜索引擎谷歌一直 : 網址://www.xroxy.com/proxy1698051.htm

請注意,代理可能無法發揮作用和可供使用. 這裡有兩個代理讓您開始 :

  • 173.226.153.208:8080
  • 216.240.138.76:5555

如果你好奇的物理位置的代理, 使用這個鏈接找到它的地理位置 : http://www.iplocation.net/

為確保代理功能, 使用此鏈接 : http://www.myiptest.com/staticpages/index.php/http-proxy-checker-tool.html

現在調整瀏覽器的代理設置, 在我的情況歌劇院.

Proxy Opera

以前有一個谷歌帳戶, 現在就註冊谷歌語音 : https://www.google.com/voice

PréUpgrade Google Voice

您應該看到的按鈕 “升級我的帳戶”. 如果你沒有看到這個按鈕, 是你的代理不工作,風鏡想你是不是在地上的美利堅合眾國.

新聞 «升級我的帳戶 “開始的過程是使谷歌語音,然後按”使用入門“.

Étape 1 Google Voice

現在指定一個或多個搜索條件,以接收的電話號碼,谷歌.

Sélection numéro Google Voice

例如, 為準則 tuxme, 如下的選擇.

numéro tuxme Google Voice

選擇並繼續. 在我們的例子, 任意選擇 (706) 688-9634 或706 - 6TU - XME4.

鍵入一個密碼為您的郵箱,並表明您接受這些條款的谷歌.

Mot de passe Google Voice

輸入電話號碼,收到並繼續 IPkall. 在我們的例子, 這個數字 (253) 785-0717.

Ajout téléphone Google Voice

在事件的數目 IPkall已分配在過去和另一個用戶將用於啟動語音 Gogle, 你將看到下面的錯誤信息.

Erreur de numéro Google Voice

取消您的帳戶 IPkall, 在另一重建, 然後繼續你的新號碼.

Canceler IPKALL.COM

回到谷歌語音配置, 最後一步是檢查. 你會被要求指定一個有效的電話號碼在美國. 輸入號碼先前收到IPkall. 請確保您有軟電話的X - Lite和現在的功能, 只要按一下 « 現在給我打電話 ».

Validation Google Voice

接聽來電的X - Lite和然後鍵入二位數的撥號鍵盤相應的代碼,您說,谷歌語音.

Validation Xlite Google Voice

就是這樣 ! 大功告成.

Google Voice complété

現在你不需要使用代理連接到谷歌語音. 您可以撥打和接聽電話到新的谷歌語音號碼. 在我們的例子, 這個數字 (706) 688-9634 或706 - 6TU - XME4. 在此期間創造一條主幹在Asterisk IPkall, 確保您有客戶端上運行的X - Lite的,因為它作為一個外部鏈接,谷歌語音. 此外, 如前面提到的, 如果您的帳戶內的閒置超過 IPkall 30 天 (沒有訪問園區), 您的帳戶將自動被禁用,您將失去的電話號碼被分配. 在我們的例子, 這個數字 (253) 785-0717.

配置設置與歐比谷歌帳戶語音

OBi110

這幾乎完成. 連接 Obi110在你的本地網絡,並採取電話聽筒. 現在, 通話 « ***1 ».

歐倍德將決定該 IP地址配置.

用你的瀏覽器,進入到這個地址 : 網址://adresseIP /

該密碼是 «管理 “,默認密碼是 «管理».

更改IP地址的國際文憑組織為一個靜態的IP地址,而不是主動的,做一下重新啟動 «重新啟動?.

一旦你重新啟動歐倍德, 到站點配置歐 :http://www.obihai.com/itspConfiguration/itspConfiguration-googlevoice.html

設置 IP設置的歐, 郵政編碼您的谷歌語音號碼, 在我們的例子 « 706 “ID和谷歌帳戶, 在我們的例子« aa.bb », 並點擊配置. 歐倍德重新啟動您的最後一次,一切都完成.

Paramètres OBI pour Google Voice

撥打電話, 的問題,看它是否確實有效. 大 !!!

連接到Asterisk的歐倍德

OBi et Asterisk

除非你希望使用谷歌帳戶,你的聲音歐倍德與模擬電話, 你必須連接的RJ11端口歐倍德 110 以一個 FXO端口的電話環境. 這可能是Digium公司的接口卡, 一個 ATA或思科路由器的FXO端口. 欲了解更多細節,如何進行, 見一下面列出的三個項目 :

當您的聲音歐倍德, 顯然,你的電話號碼從谷歌語音, 電話將被直接傳遞到你的Asterisk服務器,您可以檢索通過您的來電 RVI.Ce​​pendant, 你必須改變對谷歌語音的設置為以下介紹.

Paramètres Google Voice

撥出電話, 你只需要設置一個退出的途徑獲得的FXO端口,電話將直接轉給你的谷歌語音由國際文憑組織誰去休息的法寶.

善用 !

Continue reading 【转】谷歌語音集成到Asterisk

Pagination


Total views.

© 2013 - 2019. All rights reserved.

Powered by Hydejack v6.6.1