2008年10月27日アーカイブ

自宅の電話がひかり電話(IP電話)になったので、IP電話についてちょっと調べた。
PC上のソフトフォン(Express Talk)が子機になって、外線電話が使えるようになった。
PC上で電話ができるなら、FAXだってできるんじゃない?と思っていろいろ調べていたら、asteriskと言うPBXソフトにたどり着いた。
とりあえず、参考になるのはAsterisk - VOIP-Info.jp Wiki
まずは、portsから関係しそうなものをインストール。
  • net/asterisk
  • japanese/asterisk-sound
会議(Meet-Me)をやるには、ZAPTELを有効にしろと書いてあったけど、良くわからなかったのでパス。(やっぱり入れておけば良かったか)
japanese/asterisk-soundは単にmake installでは駄目で、そのときに出てくるpkg-messageに従ってasteriskをコンパイルしなおす必要がある。
そもそもasteriskの思想が良くわかっていなかったので、まともに内線の体系も計画せずにへろへろ設定して、一喜一憂する。
結局、VOIP-info.jp Wikiのサンプルコンフィグを貰ってきて、それをベースにする。
  • まず、外部との窓口となるひかり電話のルータは、外線の番号を持ち、アナログ電話が内線1と2で、内線3~7がIP電話を設定できる。(内線番号は変更可能だけど、そのまま行く)
  • asteriskは、ひかり電話のルータに内線7として登録する。
  • asteriskに登録するIP電話は、内線201~204を割り当てる。
  • で、設定ファイルは以下のような感じ(関係しそうなところを抜粋)
    asterisk.conf
    [options]
    languageprefix=yes
    
    sip.conf
    [general]
    register => 7:password:0007@192.168.0.1/200
    
    [192.168.0.1]
    type=friend
    secret=password
    Port=5060
    username=0007
    fromuser=7
    host=192.168.0.1
    context=default
    insecure=very
    dtmfmode=inband
    disallow=all
    allow=ulaw
    
    [201]
    type=friend
    username=ext1
    secret=password
    canreinvite=no
    host=dynamic
    
    [202]
    type=friend
    username=ext2
    secret=password
    canreinvite=no
    host=dynamic
    
    [203]
    type=friend
    username=ext3
    secret=password
    canreinvite=no
    host=dynamic
    
    [204]
    type=friend
    username=ext4
    secret=password
    canreinvite=no
    host=dynamic
    
    extension.conf
    [globals]
    SPEAKINGCLOCK=317
    ECHOTEST=333
    MYNUMBER=045xxxxxxx
    [default]
    ; Ring 201-204 phones
    exten => 200,1,Dial(SIP/201&SIP/202&SIP/203&SIP/204)
    exten => 200,n,Hangup
    
    ; Local SIP/IAX phones 201-209
    exten => _20Z,1,GotoIf($["${USEVOICEMAIL}"="YES"]?use-vm)
    exten => _20Z,n,Dial(SIP/${EXTEN}&IAX2/${EXTEN},,tT)
    exten => _20Z,n,Hangup
    exten => _20Z,n(use-vm),Dial(SIP/${EXTEN}&IAX2/${EXTEN},60,tT)
    exten => _20Z,n,NoOp(${DIALSTATUS})
    exten => _20Z,n,GotoIf($["${DIALSTATUS}"="BUSY"]?vm-rec)
    exten => _20Z,n,GotoIf($["${DIALSTATUS}"="NOANSWER"]?vm-rec)
    exten => _20Z,n,GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?vm-rec)
    exten => _20Z,n,Hangup
    exten => _20Z,n(vm-rec),Answer()
    exten => _20Z,n,Wait(1)
    exten => _20Z,n,Voicemail(${EXTEN})
    exten => _20Z,n,Hangup
    
    ; For Voicemail Recording
    exten => _20Z*1,1,Answer()
    exten => _20Z*1,n,Wait(1)
    exten => _20Z*1,n,Voicemail(${EXTEN:0:3})
    exten => _20Z*1,n,Hangup
    
    ; For Voicemail Playback
    exten => 298,1,Answer()
    exten => 298,n,Wait(1)
    exten => 298,n,VoicemailMain()
    exten => 298,n,Hangup
    
    exten => 299,1,Answer()
    exten => 299,n,Wait(1)
    exten => 299,n,VoicemailMain(${CALLERID(num)},s)
    exten => 299,n,Hangup
    
    ; Speaking Clock
    exten => ${SPEAKINGCLOCK},1,Answer()
    exten => ${SPEAKINGCLOCK},n,Wait(1)
    exten => ${SPEAKINGCLOCK},n,Set(FutureTime=$[${EPOCH} + 5])
    exten => ${SPEAKINGCLOCK},n,SayUnixTime(${FutureTime},Japan,YbdAPHM)
    exten => ${SPEAKINGCLOCK},n,Playback(jp-desu)
    exten => ${SPEAKINGCLOCK},n,playback(beep)
    exten => ${SPEAKINGCLOCK},n,Hangup
    
    ; Echo Test
    exten => ${ECHOTEST},1,Answer
    exten => ${ECHOTEST},n,Wait(1)
    exten => ${ECHOTEST},n,Playback(demo-echotest)
    exten => ${ECHOTEST},n,Playback(beep)
    exten => ${ECHOTEST},n,Echo
    exten => ${ECHOTEST},n,Playback(demo-echodone)
    exten => ${ECHOTEST},n,Playback(vm-goodbye)
    
    exten => _0.,1,Set(CALLERID(num)=${MYNUMBER})
    exten => _0.,n,Set(CALLERID(name)=${MYNUMBER})
    exten => _0.,n,Dial(SIP/${EXTEN}@192.168.0.1,120,T)
    
    exten => _Z,1,Dial(SIP/${EXTEN}@192.168.0.1,120,T)
    
    この設定で、以下の動作をする。(Voicemail絡みはテストしてないので良くわからない)
    • 外線着信すると、ひかり電話の内線とasteriskの内線(201~204)が全て鳴る。
    • ひかり電話の内線から、7をcallするとasteriskの内線(201~204)が全て鳴る。
    • asteriskの内線から、201~204をcallするとasteriskの内線が鳴る。
    • asteriskの内線から、0で始まる番号をcallすると外線をかける。
    • asteriskの内線から、1~6をcallするとひかり電話の内線が鳴る。
    • 317で時報、333でecho test。
    やりたいけどできないこと。
    • ひかり電話の内線から、asteriskの内線の呼び分け(201だけを呼ぶ、とか)
    • 外線から、内線の呼び分け(これは、不可能か?ISDNのTAとかだとできたんだけどな)
    RT-S300SEだとうまく行かなかったX-Liteも、asteriskだと普通に内線登録できた。
    iPhoneのfringだと、asteriskでも駄目だった。無線LANを使う場合でも、一度外に出たりするのかな?

    さて、次回はasteriskでFAXに挑戦しようと思います。(今の所、spandspとasterisk-agxのコンパイルまではできてるんだけど、使い方がわからない状態)
2008年10月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  

このアーカイブについて

このページには、2008年10月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2008年10月19日です。

次のアーカイブは2008年10月29日です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 6.1.1