顯示具有 Asterisk 標籤的文章。 顯示所有文章
顯示具有 Asterisk 標籤的文章。 顯示所有文章

星期一, 5月 11, 2009

Asterisk 整合 gtalk

gtalk.conf =>
[buddy]
username=xxx@gmail.com
disallow=all
allow=ulaw
context=google-in ;order apparently matters, needs to be placed after username= ?
connection=gtalk_account

jabber.conf =>
[gtalk_account]
type=client
serverhost=talk.google.com
username=yyy@gmail.com/Talk ;; Astersk 的 gtalk 分身,必須要有此帳號
secret=zzz ;; yyy@gmail.com 的密碼
port=5222
usetls=yes ; TLS is required by talk.google.com, you'll get a 'socket read error' without
usesasl=yes
buddy=xxx@gmail.com
buddy=aaa@gmail.com
statusmessage="From Miles Blogger"
timeout=100

;; 從 Asterisk 分機撥給 gtalk 帳號 xxx@gmail.com
;; 會從yyy@gmail.com 撥給 xxx@gmail.com

dialplan =>
exten => 888,1,NoOp(+++ Dial to xxx@gmail.com +++)
exten => 888,n,Dial(Gtalk/gtalk_account/xxx@gmail.com)
exten => 888,n,Hangup

從 xxx@gmail.com 撥給 yyy@gmail.com 會轉到 Asterisk 的 dialplan 中的
[google-in] 裡面


更多的詳情可參看:
http://www.voip-info.org/wiki/view/Asterisk+Google+Talk

星期四, 4月 30, 2009

Asterisk 整合 VoiceXML

VoiceGlue
http://www.voiceglue.org/

安裝說明
http://voiceglue.org/wiki/doku.php?id=voiceglue_0.9_installation_instructions

因為我是用Gentoo , 所以只好使用困難的安裝方法 :-)
經過一番努力安裝完成後,接著就看設定部分
http://voiceglue.org/wiki/doku.php?id=voiceglue_0.9_user_guide

測試的 Dialplan 為
exten => 6666,1,NoOp("++++ Test voiceglue +++")
exten => 6666,n,Answer
exten => 6666,n,AGI(agi://localhost/url=http%3A%2F%2Flocalhost%2Fvxml%2Fhello.vxml)
exten => 6666,n,Hangup


http://localhost/vxml/hello.vxml 內容為

(vxml version="2.0" xmlns="http://www.w3.org/2001/vxml")
(form)
(block)
(prompt)
Welcome
(/prompt)
(/block)
(/form)
(/vxml)


voiceglue 預設是使用 flite 做為 TTS,
我們可以將其改用 espeak ,使其支援中文,方法如下:
修改 voiceglue_tts_gen
將其內容改為
system ("espeak", "-s 120", "-v", "zh", "-w", $file, "\"".$ARGV[1]."\"");
system ("mv", $file, $file . ".16khz.wav");
system ("sox", $file . ".16khz.wav", "-r", "8000", $file);
system ("rm", "-f", $file . ".16khz.wav");

就是這麼簡單 :-)

試著將 http://localhost/vxml/hello.vxml
中的 Welcome 改成中文,就可以聽到中文的語音囉

PS: 網頁必須是 UTF8 格式

Asterisk & 中文 TTS

espeak
http://espeak.sourceforge.net/
有支援中文的 TTS

asterisk-espeak is a eSpeak text-to-speech module for the Asterisk open-source PBX
http://asterisk-espeak.sourceforge.net/

若是用 asterisk 1.6.x 的版本,可參考以下的說明 patch
http://www.mail-archive.com/openpkg-cvs@openpkg.org/msg21782.html


記得要在 espeak.conf 設定
voice=zh
如此才會正確的處理中文


正確 install 成功後,測試的 Dialplan 如下
exten => 900,1,NoOp("+++++ Test espeak ++++")
exten => 900,n,Answer
exten => 900,n,espeak(測試中,你好,歡迎使用 asterisk |any)
exten => 900,n,Hangup


PS: 中文必須使用 UTF8 格式

星期一, 5月 28, 2007

Asterisk extensions.conf (二)

extensions.conf

設計撥號規則 (二)
-----------------------------------------------------------------
通常我們會將 extensions.conf 切分成好幾個檔,
然後再 include 進來 , 這樣比較好做規劃

例如: 將從 FXO 進線的撥號規則存入 fxo_incoming.conf ,
從 SIP 進線的撥號規則存入 sip_incoming.conf

在 extensions.conf 中 , 就可以用
;;; For fxo incoming
#include fxo_incoming.conf
;;; For sip incoming
#include sip_incoming.conf
將其檔案 include 進來 , 另外要注意的是有另一種 include ,
是 include context , 而非 include 檔案

例如在 extensions.conf 中

[test_context]
exten => 1234,1,Answer
.....
.....
;;; include context : test2_context
include test2_context

[test2_context]
exten => 2345,1,Answer
....
....

即表示 context [test_context] , 包括 [tests_context] 這個 context 內容
亦即 context [test_context] 設定為
exten => 1234,1,Answer
.....
.....
exten => 2345,1,Answer
....
....

--------------------------------------------------------------------------------
Asterisk 使用以下特殊用途 extension 名稱:

* i : 使用者按下沒有定義的 extension 號碼
* s : Start extension in context
* h : Hangup extension
* t : Timeout extension
* T : AbsolutTimeout() extension
* o : Operator extension, used for operator exit by pressing zero in voicemail
--------------------------------------------------------------------------------
Macro (巨集)
範例:
Using a macro to create extensions
[globals]
PHONE1=Zap/1
PHONE2=SIP/6002

;;; Macro(oneline,${PHONE1},${PHONE2},${PHONE3}....)
;;; ${ARG1} 就等於 ${PHONE1} , ${ARG2} 就等於 ${PHONE3} 依此類推 ...
[macro-oneline]
exten => s,1,Dial(${ARG1},20,t)
exten => s,2,Voicemail(u${MACRO_EXTEN})
exten => s,3,Hangup
exten => s,102,Voicemail(b${MACRO_EXTEN})
exten => s,103,Hangup

[local]
exten => 6601,1,Macro(oneline,${PHONE1})
exten => 6602,1,Macro(oneline,${PHONE2})

星期三, 5月 23, 2007

Asterisk extensions.conf (一)

Asterisk 可說是目前當紅的 open source IP PBX
詳細說明可至 http://www.voip-info.org/wiki/view/Asterisk 查看

接下來將會以我所知來說明 Asterisk 的設定與運用

extensions.conf

設計撥號規則

內容如下:

;;;撥號規則的環境變數
[general]
;;;預設為 no
static=yes
;;;預設為 no , 如果 writeprotect=no 且 static=yes , 則當在 CLI command 模式中, 執行 save dialplan,
;;;將會儲存目前的撥號規則設定
writeprotect=yes
;;;如果設定為 yes , 則系統將會依據其判斷猜測其為 BUSY,CONGENSTION或HANGUP而終止通話斷線,強烈建議設定為yes
autofallthrough=yes
;;;若設定為 yes, 則執行 extensions reload 時 , 將會清除通用變數的資料
clearglobalvars=no
;;;
priorityjumping=no

;;;撥號規則的通用變數
[globals]
;;; 設定 INCOMING 變數等於 Zap/3&Zap/4
;;; 於撥號規則內可用 ${INCOMING} 來運用 (變數名稱不分大小寫 , 也就是 ${INCOMING} 相當於 ${incoming})
INCOMING => Zap/3&Zap/4
;;; 撥號規則是由一推的 contexts 所組成 , 每一個 context 由一推的 extensions 組成
;;; 例如以下: [sip_outgoing] 即是一個 context
[sip_outgoing]
;;; exten = extension,priority,Command(parameters) (使用 = 或 => 都可以)
extension => 123,1,Answer
extension => 123,2,Dial(SIP/456,30)
extension => 123,3,Hangup
;;; Pattern , 在 extension 中第一個字為 _ 時 , pattern 才有作用
;;; X 表示 0 至 9
;;; Z 表示 1 至 9
;;; N 表示 2 至 9
;;; [1237-9] 表示 1,2,3,7,8,9
;;; . 表示一個或多個任意字
;;; ! 表示 0 個或多個任意數
;;; 例如以下表示所有 4 位數字的都符合
extension => _XXXX,1,Answer
extension => _XXXX,2,Dial(SIP/567,30)
extension => _XXXX,3,Hangup