
Asteriskのインストール
![]()
STEP1. ひつようなもの
その1. Asteriskは、Linux上で動きますので、AsteriskサーバにするPCが必要です。
Fritzは、今回はテスト用にIBMのThinkPAD R31を使うことにしました。
Asteriskのドキュメントにも書いてありますが、これはAsteriskをお試し的に
使う場合のことで、どこかのサイトの本番環境で利用するのであれば、ちゃんとした
パフォーマンスのマシンを用意しましょう。
その2. 次にOSですが、Asteriskのホームページを見ると、Asteriskは結構いろんなディストリビューションのLinuxや
がんばればWindowsやMacOSなんかでも動くみたいです。
一応、RedHatかFedraCoreあたりが無難でしょう。
安定稼動のヒント
Asteriskをオフィスなどで利用する際は、X−Windowなどの
GUI環境は使わずに、CUIログインしてコンソールベースのOSで利用
することをお勧めします。
安定稼動のヒントU
Asteriskがうまく動作していない場合。
vm ware などの仮想OS上でAsteriskを使っていると、
思わぬ不具合が出るものです。
仮想OS上での運用はあくまでも確認作業的なところで止めておくべきでしょう。
反応がものすごく遅くなったり、
エコーやノイズが乗るなどの現象が出たりします。
その3. さて、ここからいよいよソースのGET⇒コンパイル⇒インストールです。
Asteriskもバージョンが新しくなったりして、構築方法がいろいろと
変わってきましたので、以下のページにバージョン毎のインストールメモを
まとめてみました。
>>Asteriskの構築MEMOはここをクリック<<
上に戻る
SIP電話を使ってAsteriskをテストする
![]()
STEP1. テスト環境
その1. まずはテストですので、電話回線の準備などはせず、
面倒な設定も省いて、ローカルなLAN環境でテストします。
テストには、以下のような構成でPCを用意しました。
PC1とPC2は、SIPフォンのソフトをインストールして、電話機のかわりにします。
そのネットワーク上にAsteriskサーバを設置して、2台のPC間で通話ができるか
テストしてみます。
それぞれのIPアドレスを以下のように設定しました。
Asterisk 192.168.100.100 PC 1 192.168.100.101 PC 2 192.168.100.102
STEP2. クライアントを導入
その1. なんだか気がつけばいろんなクライアントが出てきているので、
ここはひとつクライアント専用ページも作るかな・・・
ということで。
ページを更新しました。
ソフトフォンもハードフォンもいろいろ評価していますので
随時情報をUPしていきたいと思います。
その2. X-Lite
>>X-Liteの設定記録はここをクリック<<
その3. IDEFISK
>>IDEFISKの設定記録はここをクリック<<
その4. PJSIP
>>PJSIPの設定記録はここをクリック<<
その5. CISCO7940
>>7940の設定記録はここをクリック<<
STEP3. ソフトフォン設定の概要
設定内容 どのようなSIPクライアントでも、下記のような設定になっていれば
使えると思います。
PC1用設定
設定項目 設定値 コメント Enabled YES これは最後にYESにします Display Name PC1 任意の文字です User Name 5001 内線番号 Password pc5001 パスワード Domain 192.168.100.100 AsteriskのIPアドレス SIP Proxy 192.168.100.100 AsteriskのIPアドレス realm asterisk - PC2用設定
設定項目 設定値 コメント Enabled YES これは最後にYESにします Display Name PC2 任意の文字です User Name 5002 内線番号 Password pc5002 パスワード Domain 192.168.100.100 AsteriskのIPアドレス SIP Proxy 192.168.100.100 AsteriskのIPアドレス realm asterisk -
STEP4. Asterisk側の設定
その1. まずは、内線番号の登録をします。
変更対象のファイル:/etc/asterisk/extensions.conf
extensions.confの[globals]セクションに以下のエントリを追加します。
PHONE1NM=SIP/5001
PHONE2NM=SIP/5002
これは、単純にマクロを定義しているだけです。
その2. 続いて、extensions.confに以下のセクションを追加します。
[test-local]
;
exten => 5001, 1, Dial(${PHONE1NM},20,Ttm)
exten => 5001, 2, Hangup
;
exten => 5002, 1, Dial(${PHONE2NM},20,Ttm)
exten => 5002, 2, Hangup
この部分は、Asteriskに5001と5002がダイヤルされたらどうするかを
教える部分です。上記の例では、5001とダイヤルされたら、PHONENM1で
定義された番号をダイヤルするという定義です。
詳細はあとで記述するとして、まずはこの設定で動作するかどうかを検証します。
その3. 次にSIP電話を登録します。
/etc/asterisk/sip.conf に以下のエントリを追加します。
[5001]
type=friend
secret=pc5001
aith=md5
nat=yes
host=dynamic
reinvite=no
canreinvite=no
qualify=1000
dtmfmode=inband
callerid="PC 1" <5001>
disallow=all
allow=ulaw
allow=alaw
context=test-local
[5002]
type=friend
secret=pc5002
aith=md5
nat=yes
host=dynamic
reinvite=no
canreinvite=no
qualify=1000
dtmfmode=inband
callerid="PC 2" <5002>
disallow=all
allow=ulaw
allow=alaw
context=test-local
ここでは、secret というのがパスワードを記述する部分です。
STEP4. いよいよSIP電話の通話テスト
その1. さて、いよいよSIP電話交換機としてのAsteriskの実験開始です。
Asteriskの起動は以下のようにします。
asterisk -cvvv
すると、どどどーっとログメッセージのようなものが表示されます。
とくにおかしなエラーメッセージなど表示されなければasteriskのサーバの
起動は完了です。
ただし、このモードですと、asteriskのコンソールがずっと起動されたままの
状態になり、Linuxのシェルに戻れなくなってしまうので、デバッグ時などには
便利ですが、実際の運用にはちょっと不便です。
そこで、一旦asteriskを終了して、以下のようにしてasteriskを起動します。
asteriskの終了コマンド
stop now
asteriskの起動(asteriskコンソールを切り離した状態で起動)
asterisk -vvv &
そして表示が一通りおさまったところで、以下のコマンドを投入してasteriskの
コンソールに接続します。
asterisk -r
これで、いつでも quitと入力すればasterisk
コンソールから抜け出すことが出来るようになります。しかも、asterisk
コンソールを抜け出した後もasterisk自体は動いています。
その2. さて、いよいよテストダイヤルしてみましょう。
X-Liteの5001の端末から5002を呼び出してみます。
5001の電話機から5002とダイヤル
すると、asteriskコンソールにExecuting Dial などとログがどどーっと表示され、
続いて5002の端末がリンギングすると思います。
そこで、5002の端末の受話器を上げてみましょう。
両者間で通話が出来るはずです。
また、asteriskコンソールから、dial 5001@test-localとすると
5001の端末が鳴動するとおもいます。
上に戻る
録音された音声をSIP電話機で聞く
![]()
STEP1. /etc/asterisk/extensions.conf 設定
その1. さて、端末間の通話ができたところで、こんどはあらかじめ
録音された音声を電話機から聞けるように設定してみます。
/etc/asterisk/extensions.confに以下のようなエントリを作ります。
[demo]
exten => s, 1, BackGround(demo-congrats)
exten => s, 2, Hangup
ここでは、/var/lib/asterisk/sounds/ にある demo-congrats.gsm
というファイルを再生するようになります。
/var/lib/asterisk/sounds は、/etc/asterisk/asterisk.confの
astvarlibdir で定義されています。
次に、以前作った[test-local]エントリに以下の行を追加します。
exten => 1000, 1, Goto(demo, s, 1)
その2. Asteriskに定義ファイルの再ロードを指示します。
Asteriskコントロールから reload コマンドを投入します。
その3. ここで、X-Liteから1000をダイヤルします。
すると英語の女性の声でアナウンスが流れ、アナウンスが終了すると
電話が切れるということが確認できると思います。
エラーメッセージなどが出て音声が再生されない場合は、
BackGround(demo-congrats)
としなければいけないところを
BackGround( demo-congrats )
などのように、括弧と文字(demo-congrats)の間に空白文字が
入っていないか確認します。
上に戻る
自分で録音したファイルをSIP電話機で聞く
![]()
STEP1. WAVファイル作成&テスト
その1. まずは、WindowsのサウンドレコーダなどでWAVファイルを作ります。
ファイル形式は普通にPCM、22.050KHz、16ビット、モノラルで
OKです。たとえば、testrec.wav を作ったとしましょう。
その2. testrec.wav を Asterisk サーバへもってきます。
そして、以下のコマンドを実行してAsteriskが利用できる形式へ変換します。
sox testrec.wav -r 8000 -c 1 testrec.gsm resample -ql
作成した.gsmファイルは、/var/lib/asterisk/sounds/ へコピーします。
そして、/etc/asterisk/extensions.conf を以下のように変更します。
[demo]
exten => s, 1, BackGround(testrec)
exten => s, 2, Hangup
あとは、Asteriskにreloadコマンドを投入して、再度1000をダイヤルします。
上に戻る
ACD機能を試す
![]()
STEP1. 設定
その1. Asteriskは、標準でACD機能を持っています。
ACDとは、Automated Call Distributorの略で、ようするに普通は電話は
かかってきたら鳴るだけですが、ACDを使うとAsteriskがどの端末に着信させるかを
自動的に決めてくれる仕組みのことです。
ACDの着信方法でポピュラーなものは一番待ち時間が長い電話機に着信させるという
ものですが、Asteriskではこの他に以下の着信モードがあります。
ringall すべてのエージェントの電話機を鳴らす roundrobin 順繰りにエージェントに着信させる leastrecent 一番待ち時間の長いエージェントに着信させる fewestcalls 一番着信呼が少ないエージェントに着信させる random ランダムに着信させる
その2. では、ACDの設定をやります。
まずは、/etc/asterisk/agents.conf を設定します。
このファイルはエージェントの登録をするためのものです。
[agents]
agent => 3000, 1234, Test1
agent => 3001, 1234, Test2
これで、Test1 という名前のエージェントと Test2 という名前のエージェントが
登録できました。Test1のユーザー番号は3000で、パスワードは1234
Test2のユーザー番号は3001でパスワードは1234です。
その3. 次は、/etc/asterisk/queues.conf を設定します。
このファイルはACDキューを登録をするためのものです。
[test-queue]
strategy=leastrecent
member => Agent/3000
member => Agent/3001
これで、test-queue という名前のACDキューができました。
このキューには、3000 と 3001 のエージェント (即ち Test1とTest2)
のエージェントが登録されています。
その4. 次は、/etc/asterisk/extensions.conf を設定します。
[test-local]に以下のエントリを追加
exten => 2000, 1, AgentLogin()
exten => 2001, 1, Queue(test-queue) ;
これで、2000番にダイヤルすればエージェントとしてログインできるようになりました。
同様に、2001番をダイヤルすると、ACDキューの「test-queue」に電話できます。
STEP2. ACDの実験
その1. さて、設定したACDを試してみましょう。
SIP端末から2000番をダイヤルします。
すると、英語の音声でエージェント番号を入れるように言われるので、
3000と入力して最後に # を押します。
すると、次にパスワードを入れるように言われますので、1234と入力
して # をダイヤルします。これでACDキューにログインしました。
電話はAsteriskとつながったままの状態で、キューに電話がかかってくる
のを待っている状態になっていますので、電話機を切らないでそのままに
しておきます。
そして、ちゃんと登録されたかどうかを調べるには、Asteriskの
コンソールから、
show agents
と入力します。
その2. それでは、別のSIP電話機でも3001でログインしてみましょう。
2000をダイヤルして、エージェントID+'#'とパスワード+'#'を入力して、
ログインします。
その3. 2台のSIP電話機にログインしたら、Asteriskコンソールから、
以下のコマンドを投入してみます。
dial 2001@test-local
3000か3001かどちらかのエージェントに着信するはずです。
次にAsteriskコンソールから、 hangup と入力すると、通話が切れます。
再度、dial コマンドを投入すると、こんどは別の端末に着信すると思います。
エージェント側から電話を切りたい場合は、「*」キーをダイヤルします。
エージェントが受話器を戻してしまったり、電話を切ってしまうと、
ログオフしたとみなされて、test-queue にかかってきたコールを取ることは
できなくなります。
上に戻る
ACD機能を試す その2 コールバックログイン
![]()
STEP1. コールバックログインて?
その1. つぎは、コールバックログインのテストをやってみましょう。
その前に、コールバックログインとは、なにか・・・
以下のような動作イメージになります。
@ エージェントがログインする
A Asteriskはエージェントがログインしたことを告げてすぐに電話を切る。
B ACDにコールが着信する。
C エージェントの電話機が鳴る
D エージェントが受話器を上げて、「#」をダイヤルする。
E コールがつながれて、エージェントが通話状態になる。
STEP2. 早速設定
その1. 通常のAgentLoginと違うところは、/etc/extension.conf のところだけです。
[test-local]に以下のエントリを追加
exten => 2100, 1, AgentCallbackLogin(|${CALLERIDNUM}@test-local)
exten => 2101, 1, AgentCallbackLogin()
2100番は、ログイン用、2101番はログアウト用です。
2100番は、自分の内線番号を入れなくても良いようにするためだけの
設定ですので、実は2101番でログインして、2101番でログアウト
することもできます。
STEP3. それではお試し
その1. さて、2100番をダイヤルしてみましょう。
エージェント番号、パスワードを入れた後、電話が切れます。
しかし、Asteriskコンソールで、 show agents をすると、
ちゃんとログインできていることが確認できるはずです。
次に、2001をダイヤルします。
すると、エージェントの電話機が鳴るはずです。
受話器を取って、「#」をダイヤルすると、通話がつながります。
上に戻る
コールパーキングを試す
![]()
STEP1. コールパークて?
その1. コールパークと言うのは、一種の保留です。
ふつうのビジネスホンには、保留ボタンというのがついていますが、これを
ソフト的にやろうというのがコールパークです。
動作イメージは以下のような感じです。
@ 電話を受ける
A 「#700」をダイヤル
B Asteriskが、コールパーク番号をアナウンス。
C 電話が切れる。(相手は保留されてつながっている)
D 別の電話機で、アナウンスされた電話番号をダイヤルする。
E 会話を継続する。
STEP2. 早速設定
その1. まずは、 /etc/asterisk/features.conf を編集します。
[general]
parkext => 700
parkpos => 701-720
context => parkedcalls
parkext は、コールパークを起動するための電話番号です。
parkpos ですが、ここで指定した範囲の番号がコールパーク時に
アナウンスされます。
context は、extensions.conf の場所を指定します。
その2. 次は、 /etc/asterisk/extensions.conf を編集します。
[test-local] に以下のエントリを追加
include => parkedcalls
STEP3. それではお試し
その1. では、コールパークを試してみましょう。
Asteriskコンソールから dial コマンドを使って、5001番をダイヤルします。
5001でその電話を受けて、「#」をダイヤルし、続いて 700 を
ダイヤルします。
すると、Asteriskは、701 とか、702などのように番号を言いますので、
その番号を覚えておいて、5002番の端末から その番号をダイヤルします。
すると、ちゃんと5002番と通話状態になれます。
上に戻る
IAXyを使ってみる
![]()
STEP1. IAXyとは?
その1. こんなんです。
![]()
![]()
![]()
要するに、通常のアナログ電話機をVoIPの端末に
してしまおうというのがIAXyの役割です。
ちなみに、1.0.9以前のバージョンではIAXy電話からSIP電話へ電話を掛けると、
Asteriskサーバが浮動小数点演算の例外を起こしてハングアップするという現象が出ます。
その2. IAXyというのは、普通の電話機をIPフォンとして使えるようにするものです。
IAXというのは、Inter Asterisk eXchangeの
略で、本来はAsterisk同士をつなぐプロトコルなのですが
これを使って電話機をつないでしまおうというのがIAXyです。
STEP2. まずは接続作業です
その1. まず、IAXyにつなぐ電話機を用意して電話線で接続します。
次に、IAXyのLANポートにLANケーブルをつなぎます。
そして最後に電源ケーブルをつなげば、IAXy側の準備は終了です。
STEP3. 次は設定作業ね
その1. 次はAsteriskサーバの設定なのですが、その前にもうひとつ前準備が必要です。
デフォルトでは、IAXyは自分のIPアドレスをDHCPで取り込むようになっています。
そこで、初めてIAXyをつなぐ場合は、ちょっと工夫が必要です。
たとえば、DHCPサーバを必ず1つのIPアドレスしか渡さないように設定しておけば、
IAXyをLANに繋いだ時に、どのIPアドレスが渡ったのかを悩む必要がなくなりますが
他の端末などのことも考慮すると、そういう技が使えそうに無い場合は、/var/lib/dhcpd
にリースしているIPアドレスの一覧が入っているので、そこから類推するしかないです。
とにもかくにもここでIAXyのIPアドレスが分かった事にして次へ進みます。
その2. そしてAsteriskサーバ側の作業をもうひとつやります。
サーバ側からIAXyの初期設定を行ってやるわけです。
これをやるにはまず、以下の手順でIAXyを設定するためのツールをダウンロードします。
そのツールをダウンロードするには、CVSのリポジトリにアクセスしないと
いけません。CVSを取ってきてインストールします。
export CVSROOT=:pserver:anoncvs@cvs.digium.com:/usr/cvsroot
cvs login ※パスワードは anoncvs です。
cvs co iaxyprov
上記のコマンドを実行すると、iaxyprovというフォルダが出来ていますので、
そのフォルダへ移動して、make します。
makeができたら以下のテキストファイルを作ります。
dhcp ;
codec: ulaw ;
server: 192.168.0.1 ; ※AsteriskサーバのIPアドレス
user: myusername ; ※このIAXy端末のユーザー名
pass: mypassword ; ※このIAXy端末のパスワード
register ;
次に以下のコマンドを投入してIXAyを初期設定します。
./iaxyprov <IAXyのIPアドレス> <上記のファイル名>
その3. そしてようやくAsteriskサーバの設定をやります。
/etc/asterisk/iax.conf を以下のように設定します。
[general]
;
bandwidth=low
disallow=all
allow=ulaw
jitterbuffer=no
tos=lowdelay
;
[myuser]
notransfer=yes
type=friend
host=dynamic
accountcode=myuser ※ユーザー名
secret=mypass ※パスワード
context=home ※Extensions.confファイルのセクション名
disallow=all
allow=ulaw
callerid="My IAXy" <(555) 555-1212> ※発信者番号
trunk=no
;
それから、extensions.confも以下のエントリを追加します。
exten => 1234,1,Dial (IAX2/myuser:mypass@<IXAyのIPアドレス>/s)
上に戻る
アナログ回線ボード Wildcard TDM400Pを使ってみる
![]()
STEP1. さて、TDM400Pて?
その1. Digium社からアナログ回線用のWildcard TDM400Pという
ボードを購入すれば、Asteriskに電話線をつなぐことが出来るように
なります。Fritzが購入したのは、TDM22Bというもので、TDM400Pに
内線用基盤×2枚、外線用基盤×2枚が入っているものです。
![]()
TDM400Pカードを装着したところ。
このカードには、12Vの電源を供給する必要があります。
STEP2. では、どうやって使う?
その1. TDM400Pには、電源コードが付属していません。パソコンの電源ユニットから
HDD用の電源コードがたくさん出ていますが、大抵は何本かは余っていますので、
適当に空いているコードをTDM400Pに差し込みます。
これで、ハードウエアの準備はOK
しかし、PCの電源ユニットからの電源を内線のリンガー用につかうなんてのは
灯台下暗しでしたね。拍手拍手。大抵のメーカーは別途専用の電源ユニットを
買わないといけないですもんね。Fritzもこれには一枚取られました。
よく考えてみれば、これが一番スマートな方法ですね。
STEP3. 次は設定です
その1. ハードウエアの準備が整ったら、今度はドライバ関係の初期化です。
まずは、/etc/zaptel.conf ファイルを設定します。
fxols=1-2
fxsls=3-4
loadzone=jp
defaultzone=jp
jpを指定することで、日本のNTT用の設定にします。
次に、以下のコマンドを投入します。
modprobe zaptel
何事もなければ、エラーメッセージなどが表示されずに終わるはずです。
さらに /var/log/messages を見て、エラーが出ていないことを確認します。
その2. 次に、以下のコマンドを投入します。
modprobe wctdm
これで何もエラーが出なければ、以下のコマンドを投入します。
ztcfg -vvvv
上記のコマンドを投入すると約1秒から2秒くらい固まりますが
正常にコマンドが終了すればプロンプトにちゃんと戻ってきますので
Ctrl-Cとかやらないで待ちましょう
その3. 次に、/etc/asterisk/zapata.confを編集します。
この例では、TDM400Pの各ポートを別々のトランクグループとします。
[channels]
;FXO
context = office-A
usecallerid=yes
hidecallerid=no
callerid=LINE1
signalling=fxo_ls
echocancel=yes
group=1
channel => 1
;FXO
context = office-A
usecallerid=yes
hidecallerid=no
callerid=LINE1
signalling=fxo_ls
echocancel=yes
group=2
channel => 2
;FXS (gaisen)
signalling=fxs_ls
callprogress=yes
progzone=jp
callerid=ZAPTEST <9000>
echocancel=yes
context = office-A
usecallerid=yes
hidecallerid=no
echocancel=yes
busydetect=yes
busycount=4
answeronpolarityswitch=yes
hanguponpolarityswitch=yes
ringtimeout=8000
group=3
channel => 3
;FXS (gaisen)
signalling=fxs_ls
callprogress=yes
progzone=jp
callerid=ZAPTEST <9000>
echocancel=yes
context = office-A
usecallerid=yes
hidecallerid=no
echocancel=yes
busydetect=yes
busycount=4
answeronpolarityswitch=yes
hanguponpolarityswitch=yes
ringtimeout=8000
group=4
channel => 4
その4. 電話線を配線とかいろいろ
ここで、電話線と内線電話をTDM400Pに接続します。
それと、後述するサンプルファイル1:外線発信のextensions.confを設定してみてください。
その5. ここでAsteriskを起動します。
asterisk -cvvvvvvvvvvvvvvvvvv
STEP4. いよいよテスト
その1. ようやくTDM400Pのテストです。
まず、内線電話器をオフフックして、「0117」をダイヤルしてください。
天気予報が聞こえたらOKです。
上に戻る
TDM400Pで発信者番号を出しましょう
![]()
とりあえず、できますた。
http://bugs.digium.com/view.php?id=5928
TDM400Pをセットアップして、発信者番号の通知契約をした回線を使って
電話をかけてみましょう。発信者番号がAsteriskのコンソールに表示されると思います
Dec 4 18:00:28 NOTICE[1231] chan_zap.c: OFF HOOK
Dec 4 18:00:29 WARNING[1231] callerid.c: DUMP:0000:10 01 07 10 02 40 13 02 10 10 31 32 33 38 38 37
Dec 4 18:00:29 WARNING[1231] callerid.c: DUMP:0010:37 36 36 35 35 34 34 39 39 39 10 03 49 65 3F
Dec 4 18:00:29 NOTICE[1231] chan_zap.c: CallerID number: 1238877665544999, name: , flags=0
Dec 4 18:00:29 NOTICE[1231] chan_zap.c: ON HOOK
上に戻る
PRI接続(INS1500)など
![]()
STEP1. さて、PRIて?
その1. PRIというのは、Primary Rate Interfaceつまり日本語で言うと「一次群インターフェース」といいます。
というか、日本語にしても良く分からないと思いますので、詳しい事は無しにして、とりあえず、これで
何ができるのかというと、NTTのINS1500などのデジタル回線につなぐことができるようになる訳です。
今回チェックするDigium社のTE210Pというボードは、T1やE1などのインターフェースにも
対応しています。
その2. そんで、これがTE210Pです。
![]()
デジタル回線を2回線(2スパン)入れることができます。
TE210Pは3.3Vの64BitPCIに対応したバージョンです。
パソコンなどで利用するのであれば、5VPCIのタイプもあります。
STEP2. HWのインストール
その1. まず、PCにTE210Pボードを入れましょう。
![]()
64ビットPCIの長いスロットに入れれば良いです。
その2. 次にドライバを設定します。
すでに、Asteriskがmake済みであると仮定します。
/etc/zaptel.conf ファイルを設定します。
span=1,1,0,esf,b8zs
fxsks=1-8
fxoks=9-24
loadzone=jp
defaultzone=jp
次に、以下のコマンドを投入します。
modprobe zaptel
何事もなければ、エラーメッセージなどが表示されずに終わるはずです。
さらに /var/log/messages を見て、エラーが出ていないことを確認します。
その3. 次に、以下のコマンドを投入します。
modprobe wct2xxp
これは、TE210P用のドライバなので、別のボードを利用している人は
以下の表示したがって、ドライバ名を変えます。
X100P wcfxo TDM* wcfxs S100U wcusb T100P wct1xxp E100P wct1xxp T400P tor2 E400P tor2 TE410P wct4xxp T100P/E100P wct1xxp TE205P/TE210P wct2xxp TE405P/TE410P wct4xxp TE110P wcte11xp TDM cards wctdm X100P wcfxo
これで何もエラーが出なければ、以下のコマンドを投入します。
ztcfg -vvvv
上記のコマンドを投入すると約1秒から2秒くらい固まりますが
正常にコマンドが終了すればプロンプトにちゃんと戻ってきますので
Ctrl-Cとかやらないで待ちましょう
上に戻る
Asterisk用日本語音声ファイル!
![]()
ちゃんとプロの声優に入れてもらったじょ
日本語音声 とりあえず、AskteriskのリポジトリにUPするまでの間は、
ここに日本語音声ファイルを置いときますので、ご自由にお使いください。
日本語音声ファイルはここ
使い方が分からない人は、個別に対応しますのでメールでもください。
上に戻る
より現実的なダイヤルプランの実装
![]()
サンプルファイル1:外線発信
▲ まず、外線発信を管理するためのダイヤルプランを作ります。
0発信したときに外線を、5発信をしたときに内線を掴むように設定します。
[general] static=yes writeprotect=no clearglobalvars=no [globals] EXTTRUNK1=Zap/g1 ←内線トランクグループ1 EXTTRUNK2=Zap/g2 ←内線トランクグループ2 OUTTRUNK1=Zap/g3 ←外線トランクグループ1 OUTTRUNK2=Zap/g4 ←外線トランクグループ2 SIPTRUNK=SIP ←SIPトランク [macro-ROUTE-OUTDIAL] ←外線発信用マクロ ; ARG1 = TRUNK TYPE ←パラメータ1=トランク種別 exten => s,1,NoOp("route OUTDIAL") exten => s,n,SetMusicOnHold(native) ←保留音再生方法選択 exten => s,n,Dial(${ARG1}/${MACRO_EXTEN:1},,tT) ←(※1)ダイヤル exten => s,n,Playtones(busy) ←ビジー音再生 exten => s,n,Wait(2) ←待ち2秒 exten => s,n,StopPlaytones() ←ビジー音停止 exten => s,n,Hangup ←切断 [macro-ROUTE-INVALID] ←無効番号用マクロ exten => s,1,NoOp("route INVALID") exten => s,n,Answer() exten => s,n,Playtones(busy) exten => s,n,Wait(2) exten => s,n,StopPlaytones() exten => s,n,Hangup [office-A] ←(※2) exten => _0.,1,Macro(ROUTE-OUTDIAL,${OUTTRUNK1}) ←外線発信(0+電話番号) exten => _1!,1,Macro(ROUTE-INVALID) ←無効番号 exten => _2!,1,Macro(ROUTE-INVALID) ←無効番号 exten => _3!,1,Macro(ROUTE-INVALID) ←無効番号 exten => _4!,1,Macro(ROUTE-INVALID) ←無効番号 exten => _5.,1,Macro(ROUTE-OUTDIAL,${EXTTRUNK1}) ←内線発信(5+内線番号) exten => _6!,1,Macro(ROUTE-INVALID) ←無効番号 exten => _7!,1,Macro(ROUTE-INVALID) ←無効番号 exten => _8!,1,Macro(ROUTE-INVALID) ←無効番号 exten => _9!,1,Macro(ROUTE-INVALID) ←無効番号
※1 ${MACRO_EXTEN:1}は電話番号の左1文字を削除 ※2 このセクションで0発信から9発信までの動作を定義する
サンプルファイル2:着信の考慮
▲ 今度は、外線からの着信を考慮します。
動作イメージとしては、着信したらメッセージを再生して、その後、番号のダイヤル待ちになって
ダイヤルされた番号によって処理を分けるという感じでしょうか。
よく言う「IVR(自動音声応答)」の機能です。
[general] static=yes writeprotect=no clearglobalvars=no [globals] EXTTRUNK1=Zap/g1 EXTTRUNK2=Zap/g2 OUTTRUNK1=Zap/g3 OUTTRUNK2=Zap/g4 SIPTRUNK=SIP [macro-ROUTE-OUTDIAL] ; ARG1 = TRUNK TYPE exten => s,1,NoOp("route OUTDIAL") exten => s,n,SetMusicOnHold(native) exten => s,n,Dial(${ARG1}/${MACRO_EXTEN:1},,tT) exten => s,n,Playtones(busy) exten => s,n,Wait(2) exten => s,n,StopPlaytones() exten => s,n,Hangup [macro-ROUTE-INVALID] exten => s,1,NoOp("route INVALID") exten => s,n,Answer() exten => s,n,Playtones(busy) exten => s,n,Wait(2) exten => s,n,StopPlaytones() exten => s,n,Hangup [IVR-MAIN] exten => s,1,NoOp("route INBOUND") exten => s,n,Background("番号をダイヤルしてください") ←音声を用意してください exten => s,n,WaitExten(20) exten => s,n,Hangup exten => 1,1,NoOp("1 dialed:play message") ←1がダイヤルされたときの動作 exten => 1,n,BackGround(demo-congrats) ←メッセージ再生 exten => 1,n,Hangup exten => 2,1,NoOp("2 dialed:all call") ←2がダイヤルされたときの動作 exten => 2,n,Dial(${EXTTRUNK1}&${EXTTRUNK2},,tT) ←番号を&でつなぐことで一斉コール exten => 2,n,Hangup [office-A] exten => s,1,NoOp("Inbound Call") ←着信時、ここから実行される exten => s,n,goto,IVR-MAIN|s|1 ←別のコンテキストへジャンプ exten => s,n,Hangup exten => _0.,1,Macro(ROUTE-OUTDIAL,${OUTTRUNK1}) exten => _1!,1,Macro(ROUTE-INVALID) exten => _2!,1,Macro(ROUTE-INVALID) exten => _3!,1,Macro(ROUTE-INVALID) exten => _4!,1,Macro(ROUTE-INVALID) exten => _5.,1,Macro(ROUTE-OUTDIAL,${EXTTRUNK1}) exten => _6!,1,Macro(ROUTE-INVALID) exten => _7!,1,Macro(ROUTE-INVALID) exten => _8!,1,Macro(ROUTE-INVALID) exten => _9!,1,Macro(ROUTE-INVALID)
サンプルファイル3:営業時間の考慮
▲ 営業時間外は受け付けたくないようなときに便利です。
exten => s-TCONOK,1,NoOp("Time Control") exten => s-TCONOK,n,GotoIfTime(9:00-18:00|mon-fri|*|*?s-OPENOK,1) ←ここで時間チェック exten => s-TCONOK,n,BackGround(月曜から金曜日の午前9時から午後5時の間におかけ直しください) exten => s-TCONOK,n,HangUp ; exten => s-OPENOK,1,NoOp("LABEL-OPENOK") exten => s-OPENOK,n,BackGround(XXXにお電話ありがとうございます)
上に戻る