ラベル Asterisk の投稿を表示しています。 すべての投稿を表示
ラベル Asterisk の投稿を表示しています。 すべての投稿を表示

Asterisk 16で、内線端末間で番号通知をする

ここまでで、複数のソフトフォンで発着信できるようになっているのだが、内線番号を相互に通知することはできていなかった。 どういう方法が一番適切であるか良く分からないのだが、pjsip.confとiax.confで指定すれば 内線番号を相互に通知することはできた。

pjsip.confの場合には、以下のようにした。endpointの設定でcalleridを追加している。

; 内線: baresip+
[fire8]
type = aor
max_contacts = 1
qualify_frequency = 60
remove_existing = yes

[fire8]
type = auth
auth_type = userpass
username = fire8
password = password

[fire8]
type = endpoint
transport = transport-udp
context = default
disallow = all
allow = ilbc,ulaw,alaw,gsm,g729,g723
aors = fire8
auth = fire8
;outbound_auth = fire8
dtmf_mode = rfc4733
force_rport = yes
ice_support = no
rtp_symmetric = yes
direct_media = no
rewrite_contact = yes
device_state_busy_at = 1
callerid="104" <104>

iax.confも似たような設定で、calleridを追加した。

[general]
match_auth_username=yes
iaxcompact=yes
allow=all

; 電話機との接続
[user1] ; Android smartphone
type=friend
username=user1
secret=password1
context=default
canreinvite=no
host=dynamic
qualify=no
callerid="101" <101>

[ryoonwinpc] ; Zoiper for Windows
type=friend
username=user2
secret=password2
context=default
canreinvite=no
host=dynamic
qualify=no
callerid="103" <103>

Asterisk 16に収容したFusion IP-Phone SMARTの2回線への接続に、PJSIPを利用する

Asteriskとソフトフォンの間の通信をchan_sipからPJSIPに変更したのだが、 AsteriskとFusion IP-Phone SMART 2回線分の通信はchan_sipのままだった。 これもPJSIPにして問題ないはずなので、変更してみた。

まずは、sip.confに相当する内容をpjsip.confに移植する。 現在のsip.confの内容は以下のようになっている。

[general]
match_auth_username=yes ; 同じsmart.0038.netに複数のアカウントを持っているので。
; 外線着信のため
register => 5XXXXXXX:password1@fusion1/5XXXXXXX
register => 5YYYYYYY:password2@fusion2/5YYYYYYY

; 外線
[fusion1]
type=friend
username=5XXXXXXX
fromuser=5XXXXXXX
secret=password1
host=smart.0038.net
fromdomain=smart.0038.net
context=default
insecure=port,invite
canreinvite=no
dtmfmode=inband
qualify=yes
allow=!all,ilbc,g729,gsm,g723,ulaw,alaw
allowguest=no
host=dynamic

[fusion2]
type=friend
username=5YYYYYYY
fromuser=5YYYYYYY
secret=password2
host=smart.0038.net
fromdomain=smart.0038.net
context=default
insecure=port,invite
canreinvite=no
dtmfmode=inband
qualify=yes
allow=!all,ilbc,g729,gsm,g723,ulaw,alaw
allowguest=no
host=dynamic

これをpjsip.confに移植して行く。 まずは変更点を示す。

@@ -1,8 +1,16 @@
+[general]
+match_auth_username = yes
+
+[system]
+type = system
+disable_rport = yes
+
 [transport-udp]
 type = transport
 protocol = udp
-bind = 0.0.0.0:5070 ; 5060 portはchan_sipと競合する。
+bind = 0.0.0.0

+; 外線: ひかり電話
 [hikari-denwa]
 type = registration
 transport = transport-udp
@@ -19,7 +27,7 @@ password = 0003_password

 [hikari-trunk]
 type = aor
-contact = sip:10.81.0.1
+contact = sip:3@10.81.0.1

 [hikari-trunk]
 type = endpoint

@@ -38,3 +46,81 @@ dtmf_mode = inband
 type = identify
 endpoint = hikari-trunk
 match = 10.81.0.1
+
+
+
+; 外線: Fusion SMART IP 1
+[fusion1]
+type = registration
+transport = transport-udp
+outbound_auth = fusion1
+server_uri = sip:smart.0038.net
+client_uri = sip:5XXXXXXX@smart.0038.net
+retry_interval = 0
+auth_rejection_permanent = no
+
+[fusion1]
+type = auth
+auth_type = userpass
+username = 5XXXXXXX
+password = password1
+
+[fusion1]
+type = aor
+contact = sip:5XXXXXXX@smart.0038.net
+qualify_frequency = 5
+
+[fusion1]
+type = endpoint
+transport = transport-udp
+context = default
+from_user = 5XXXXXXX
+from_domain = smart.0038.net
+outbound_auth = fusion1
+disallow = all
+allow = ilbc,g729,gsm,g723,ulaw,alaw
+aors = fusion1
+
+[fusion1]
+type = identify
+match = 61.213.230.153 ; IPアドレス
+endpoint = fusion1
+
+
+
+; 外線: Fusion SMART IP 2
+[fusion2]
+type = registration
+transport = transport-udp
+outbound_auth = fusion2
+server_uri = sip:smart.0038.net
+client_uri = sip:5YYYYYYY@smart.0038.net
+retry_interval = 0
+auth_rejection_permanent = no
+
+[fusion2]
+type = auth
+auth_type = userpass
+username = 5YYYYYYY
+password = password2
+
+[fusion2]
+type = aor
+contact = sip:5YYYYYYY@smart.0038.net
+qualify_frequency = 5
+
+[fusion2]
+type = endpoint
+transport = transport-udp
+context = default
+from_user = 5YYYYYYY
+from_domain = smart.0038.net
+outbound_auth = fusion2
+disallow = all
+allow = ilbc,g729,gsm,g723,ulaw,alaw
+aors = fusion2
+
+[fusion2]
+type = identify
+match = 61.213.230.153 ; IPアドレス
+endpoint = fusion2

全体としては、以下のようになる。

[general]
match_auth_username = yes

[system]
type = system
disable_rport = yes

[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0

; 外線: ひかり電話
[hikari-denwa]
type = registration
transport = transport-udp
outbound_auth = hikari-trunk
server_uri = sip:10.81.0.1
client_uri = sip:3@10.81.0.1
retry_interval = 60

[hikari-trunk]
type = auth
auth_type = userpass
username = 0003
password = 0003_password

[hikari-trunk]
type = aor
contact = sip:3@10.81.0.1

[hikari-trunk]
type = endpoint
transport = transport-udp
context = default
disallow = all
allow = ulaw
outbound_auth = hikari-trunk
aors = hikari-trunk
direct_media = no
from_user = 3
from_domain = 10.81.0.1
dtmf_mode = inband

[hikari-trunk]
type = identify
endpoint = hikari-trunk
match = 10.81.0.1



; 外線: Fusion SMART IP 1
[fusion1]
type = registration
transport = transport-udp
outbound_auth = fusion1
server_uri = sip:smart.0038.net
client_uri = sip:5XXXXXXX@smart.0038.net
retry_interval = 0
auth_rejection_permanent = no

[fusion1]
type = auth
auth_type = userpass
username = 5XXXXXXX
password = password1

[fusion1]
type = aor
contact = sip:5XXXXXXX@smart.0038.net
qualify_frequency = 5

[fusion1]
type = endpoint
transport = transport-udp
context = default
from_user = 5XXXXXXX
from_domain = smart.0038.net
outbound_auth = fusion1
disallow = all
allow = ilbc,g729,gsm,g723,ulaw,alaw
aors = fusion1

[fusion1]
type = identify
match = 61.213.230.153 ; IPアドレス
endpoint = fusion1



; 外線: Fusion SMART IP 2
[fusion2]
type = registration
transport = transport-udp
outbound_auth = fusion2
server_uri = sip:smart.0038.net
client_uri = sip:5YYYYYYY@smart.0038.net
retry_interval = 0
auth_rejection_permanent = no

[fusion2]
type = auth
auth_type = userpass
username = 5YYYYYYY
password = password2

[fusion2]
type = aor
contact = sip:5YYYYYYY@smart.0038.net
qualify_frequency = 5

[fusion2]
type = endpoint
transport = transport-udp
context = default
from_user = 5YYYYYYY
from_domain = smart.0038.net
outbound_auth = fusion2
disallow = all
allow = ilbc,g729,gsm,g723,ulaw,alaw
aors = fusion2

[fusion2]
type = identify
match = 61.213.230.153 ; IPアドレス
endpoint = fusion2

extensions.confでは、以下の抜粋のように変更すれば良い。 ここではログも出力するようにしている。

 ; 発信
 ;; Fusion SMARTalk 1の場合には9で発信する。
-exten => _9.,1,Set(CALLERID(num)=${MYNUMBER})
+exten => _9.,1,NoOp(Fusion1で発信9)
+exten => _9.,n,Set(CALLERID(num)=${MYNUMBER})
 exten => _9.,n,Set(CALLERID(name)=${MYNUMBER})
-exten => _9.,n,Dial(SIP/${EXTEN:1}@fusion1,120,T)
+exten => _9.,n,Dial(PJSIP/${EXTEN:1}@fusion1,120,T)
+exten => _9.,n,Hangup()

 ;; Fusion SMARTalk 2の場合には8で発信する。
-exten => _8.,1,Set(CALLERID(num)=${MYNUMBER})
+exten => _8.,1,NoOp(Fusion2で発信8)
+exten => _8.,n,Set(CALLERID(num)=${MYNUMBER})
 exten => _8.,n,Set(CALLERID(name)=${MYNUMBER})
-exten => _8.,n,Dial(SIP/${EXTEN:1}@fusion2,120,T)
+exten => _8.,n,Dial(PJSIP/${EXTEN:1}@fusion2,120,T)
+exten => _9.,n,Hangup()

 ;; ひかり電話の場合には7で発信する。
-exten => _7.,1,Set(CALLERID(num)=${MYNUMBER})
+exten => _7.,1,NoOp(ひかり電話で発信7)
+exten => _7.,n,Set(CALLERID(num)=${MYNUMBER})
 exten => _7.,n,Set(CALLERID(name)=${MYNUMBER})
 exten => _7.,n,Dial(PJSIP/${EXTEN:1}@hikari-trunk)
+exten => _7.,n,Hangup()

Asterisk 16で、ソフトフォンとの間をPJSIPによる通信に変更する

Asteriskに接続している一部のクライアントはIAX2で通信するようにしたのだが、 もう1台はZoiPerではなくbaresip+を使っているので、 IAX2にすることはできない。 そこで、この端末についてもchan_sipではなくPJSIPに乗り換えることにした。

PJSIP自体は、既にひかり電話のホームゲートウェイに接続するのに利用しているので、それも合わせて、以下のように設定すれば良い。

PJSIPでAsteriskにregisterするには、Asterisk 16はデータベースを使えるようになっている必要がある。 pkgsrc/comms/asterisk16の場合には、標準ではSQLite3が利用され、/var/db/asterisk/astdb.sqlite3にデータベースファイル が置かれている。 今回は、なぜかこのデータベースファイルの所有者が別ユーザーになっており、SQL errorが起きていたのを無視していたため、 端末がAsteriskにregisterできなかった。ユーザーIDとパスワードの認証までは通過できるのだが、着信できない状態になってしまった。

pjsip.confは、以下のようにした。

[general]
match_auth_username = yes

[system]
type = system
disable_rport = yes

[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0

; 外線: ひかり電話
[hikari-denwa]
type = registration
transport = transport-udp
outbound_auth = hikari-trunk
server_uri = sip:10.81.0.1
client_uri = sip:3@10.81.0.1
retry_interval = 60

[hikari-trunk]
type = auth
auth_type = userpass
username = 0003
password = 0003_password

[hikari-trunk]
type = aor
contact = sip:3@10.81.0.1

[hikari-trunk]
type = endpoint
transport = transport-udp
context = default
disallow = all
allow = ulaw
outbound_auth = hikari-trunk
aors = hikari-trunk
direct_media = no
from_user = 3
from_domain = 10.81.0.1
dtmf_mode = inband

[hikari-trunk]
type = identify
endpoint = hikari-trunk
match = 10.81.0.1


; 内線: baresip+ on Amazon Kindle Fire HD 8 gen10
[fire8]
type = aor
max_contacts = 1
qualify_frequency = 60
remove_existing = yes

[fire8]
type = auth
auth_type = userpass
username = fire8
password = user3_password

[fire8]
type = endpoint
transport = transport-udp
context = default
disallow = all
allow = ilbc,ulaw,alaw,gsm,g729,g723
aors = fire8
auth = fire8
;outbound_auth = fire8
dtmf_mode = rfc4733
force_rport = yes
ice_support = no
rtp_symmetric = yes
direct_media = no
rewrite_contact = yes
device_state_busy_at = 1

これに合わせて、extensions.confも変更し、発信・着信できるようにする。

[default]
;include => stdexten

; 着信
;; 内線
;;; 自動応答
exten => 1290,1,Playback(demo-congrats) ; 動作チェック用
;;; 各端末
exten => 101,1,Dial(IAX2/user1,20,rt)
exten => 103,1,Dial(IAX2/user2,20,rt)
exten => 104,1,Dial(PJSIP/fire8,20,rt)

;; 外線
exten => 55863768,1,Dial(IAX2/user1&IAX2/user2&PJSIP/fire8,20,rt)
exten => 53077771,1,Dial(IAX2/user1&lIAX2/user2&PJSIP/fire8,20,rt)
exten => s,1,Dial(IAX2/user1&IAX2/user2&PJSIP/fire8)


; 発信
;; Fusion SMARTalkの場合には9で発信する。
exten => _9.,1,NoOp(Fusion発信9)
exten => _9.,n,Set(CALLERID(num)=${MYNUMBER})
exten => _9.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _9.,n,Dial(PJSIP/${EXTEN:1}@fusion1,120,T)
exten => _9.,n,Hangup()

;; Fusion SMARTalkの場合には8で発信する。
exten => _8.,1,NoOp(Fusion発信8)
exten => _8.,n,Set(CALLERID(num)=${MYNUMBER})
exten => _8.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _8.,n,Dial(PJSIP/${EXTEN:1}@fusion2,120,T)
exten => _9.,n,Hangup()

;; ひかり電話の場合には7で発信する。
exten => _7.,1,NoOp(ひかり電話で発信7)
exten => _7.,n,Set(CALLERID(num)=${MYNUMBER})
exten => _7.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _7.,n,Dial(PJSIP/${EXTEN:1}@hikari-trunk)
exten => _7.,n,Hangup()

Asterisk 16で、ソフトフォンとの間をIAX2プロトコルによる通信に変更する

これまで、NetBSD/amd64 9上で動かしているpkgsrc/comms/asterisk16では、SIPソフトフォンとの間については、chan_sipによるSIPを利用していた。 しかし、既にchan_sipの利用は推奨されていないようだ。 後継となるPJSIPについては、既にひかり電話のためにNTT東日本から借りているホームゲートウェイに接続するのに利用していた。 3台のソフトフォンのうち、2台はZoiPerなので、IAX2を利用できる。 この分はIAX2にしてしまおう。

IAX2の設定は、iax.confに記載すれば良い。 chan_sipと似た感じで記入でき、簡単である。

[general]
match_auth_username=yes
iaxcompact=yes
allow=all

; 電話機との接続
[user1] ; Android smartphone
type=friend
username=user1
secret=user1_password1
context=default
canreinvite=no
host=dynamic
qualify=no

[user2] ; Zoiper for Windows
type=friend
username=user2
secret=user2_password2
context=default
canreinvite=no
host=dynamic
qualify=no

extensions.confでも、IAX2を使って着信させるための通信をするのを指定する。

[default]
;include => stdexten

; 着信
;; 内線
exten => 1290,1,Playback(demo-congrats) ; 動作チェック用
exten => 101,1,Dial(IAX2/user1,20,rt)
exten => 103,1,Dial(IAX2/user2,20,rt)

;; 外線
exten => 55863768,1,Dial(IAX2/user1&IAX2/user1,20,rt)
exten => 53077771,1,Dial(IAX2/user1&IAX2/user2,20,rt)
exten => s,1,Dial(IAX2/user1)


; 発信
;; 1回線目のFusion SMARTalkの場合には9で発信する。
exten => _9.,1,NoOp(Fusion発信9)
exten => _9.,n,Set(CALLERID(num)=${MYNUMBER})
exten => _9.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _9.,n,Dial(PJSIP/${EXTEN:1}@fusion1,120,T)
exten => _9.,n,Hangup()

;; 2回線目のFusion SMARTalkの場合には8で発信する。
exten => _8.,1,NoOp(Fusion発信8)
exten => _8.,n,Set(CALLERID(num)=${MYNUMBER})
exten => _8.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _8.,n,Dial(PJSIP/${EXTEN:1}@fusion2,120,T)
exten => _9.,n,Hangup()

;; ひかり電話の場合には7で発信する。
exten => _7.,1,NoOp(ひかり電話で発信7)
exten => _7.,n,Set(CALLERID(num)=${MYNUMBER})
exten => _7.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _7.,n,Dial(PJSIP/${EXTEN:1}@hikari-trunk)
exten => _7.,n,Hangup()

sip.confとpjsip.confの内容は、前回と大差はない。

Fusion SMARTalk 2回線とひかり電話をpkgsrc/comms/asterisk16で収容してみる

はじめに

楽天モバイル(Fusion) SMARTalkの電話番号が2つあって、これを固定電話で利用したいと考えていた。 もちろん、SIPに対応した固定電話機を購入すれば、2回線を収容するものはそこまで 高くはない。 だが、使わなくなったYamaha RT58iというRJ11で電話機を接続できるルーターを 持っているので、これのSIPクライアント機能を使いたいと思っていた。

また、フレッツ光ネクストのひかり電話を使っているが、微妙に使い勝手の悪い位置に 固定電話機を設置しなくてはいけないのも気に入らなかった。

使わなくなったAndroidのスマートフォンでこれらをまとめて使うことができれば 便利になると考えた。 Androidには標準のSIPクライアント機能は存在しているし、サードパーティーの ソフトフォンのアプリも数多くあるので、それを組み合わせれば 良いと考えて試してみた。 しかし、これはそれぞれ以下のような理由でうまく行かなかった。

  1. ひかり電話については、我が家のホームゲートウェイであるPR-500MI (ファームウェアバージョン07.00.0010)では、 Androidスマートフォンの標準電話アプリのSIPクライアント機能でもZoiPerでも、 flets.comで推奨されているAGEphoneでも、着信が安定してできなかった。
  2. SMARTalkの公式クライアントは、1回線しか収容できない。
  3. SMARTalkは固定電話機にもAndroidスマートフォンと同時に着信して欲しかった。

と言うことで、NetBSDサーバーにAsterisk 16.10.0を導入して、そこに対して Yamaha RT58iとAndroidスマートフォンのZoiPerを接続することで解決させた。 しかし、PR-500MIでの内線通話は安定して実現はできなかった。 これはソフトフォンの種類やAsteriskの導入の有無によらないので、 PR-500MIに問題があるのかもしれない。あまり使う機能ではないので気にしないことにする。

ウェブを検索してみると、Asteriskの標準であるchan_sipドライバー では、ひかり電話のホームゲートウェイには接続できないらしい。 Asterisk 13以降で標準で提供されるpjsipドライバーであれば 問題なく接続できるらしい。 SMARTalkの方は、chan_sipで接続できるようだ。

そこで、以下のような方針で構築することにした。

  • ひかり電話のためのホームゲートウェイとの接続はpjsipを利用する
  • SMARTalkとの接続はchan_sipを利用する
  • Yamaha RT58iとZoiPerとの接続はchan_sipを利用する
それぞれ、なるべく最小限の設定ファイルにすることを目指したが、 冗長になった部分もあるかもしれない。

Asterisk 16.10.0は、以下のようにインストールした。

# cd /usr/pkgsrc/comms/asterisk16
# make install

ひかり電話接続用の設定

pjsipの設定ファイルは、/usr/pkg/etc/asterisk/pjsip.conf であるので、既存のファイルをバックアップして以下のように作成した。 ここで、10.XX.0.1はホームゲートウェイのLAN側のIPアドレスであり、 ホームゲートウェイの内線3番を事前に有効化してある。その内線3番への接続パスワードが PASSWORDである。

[transport-udp]
type = transport
protocol = udp
bind = 0.0.0.0:5070 ; 5060 portはchan_sipと競合する。

[hikari-denwa]
type = registration
transport = transport-udp
outbound_auth = hikari-trunk
server_uri = sip:10.XX.0.1
client_uri = sip:3@10.XX.0.1 ; 内線3番
retry_interval = 60

[hikari-trunk]
type = auth
auth_type = userpass
username = 0003 ; 内線3番
password = PASSWORD

[hikari-trunk]
type = aor
contact = sip:10.XX.0.1

[hikari-trunk]
type = endpoint
transport = transport-udp
context = default
disallow = all
allow = ulaw
outbound_auth = hikari-trunk
aors = hikari-trunk
direct_media = no
from_user = 3 ; 内線3番
from_domain = 10.XX.0.1
dtmf_mode = inband

[hikari-trunk]
type = identify
endpoint = hikari-trunk
match = 10.XX.0.1

SMARTalk 2回線接続用の設定

chan_sipの設定ファイルは、 /usr/pkg/etc/asterisk/sip.confである。 既存のファイルはバックアップして、以下のように作成した。 ここで、5XXXXXXXと5YYYYYYYが 2回線分のユーザーIDであり、電話番号の050を除いた部分と一致する。 それぞれのパスワードがpassword1とpassword2である。

[general]
match_auth_username=yes ; 同じsmart.0038.netに複数のアカウントを持っているので。
; 着信のため
register => 5XXXXXXX:password1@fusion1/5XXXXXXX
register => 5YYYYYYY:password2@fusion2/5YYYYYYY

; 外線
[fusion1]
type=friend
username=5XXXXXXX
fromuser=5XXXXXXX
secret=password1
host=smart.0038.net
fromdomain=smart.0038.net
context=default
insecure=port,invite
canreinvite=no
dtmfmode=inband
qualify=yes
allow=!all,ilbc,g729,gsm,g723,ulaw,alaw
allowguest=no
host=dynamic

[fusion2]
type=friend
username=5YYYYYYY
fromuser=5YYYYYYY
secret=password2
host=smart.0038.net
fromdomain=smart.0038.net
context=default
insecure=port,invite
canreinvite=no
dtmfmode=inband
qualify=yes
allow=!all,ilbc,g729,gsm,g723,ulaw,alaw
allowguest=no
host=dynamic
これにはYamaha RT58iとZoiPer用の設定も追加していく。

内線電話機接続用の設定

内線電話機であるYamaha RT58iとZoiPerから接続を受けるために、 /usr/pkg/etc/asterisk/sip.confに以下のように追加した。 それぞれ、ユーザーIDはandroidとrt58iであり、 パスワードはそれぞれpassword3とpassword4である。

; 電話機との接続
[android] ; Androidスマートフォン
type=friend
username=android
secret=password3
context=default
canreinvite=no
host=dynamic
dtmfmode=rfc2833
qualify=no

[rt58i] ; Yamaha RT58i
type=friend
username=rt58i
secret=password4
context=default
canreinvite=no
host=dynamic
dtmfmode=rfc2833
qualify=no ; Yamaha RT58iから接続するのに必須。

発着信の設定

発着信の設定は、/usr/pkg/etc/asterisk/extensions.confに設定する。 既存ファイルはバックアップして、新規に以下の内容で作成した。
[default]

; 着信
;; 内線
exten => 1290,1,Playback(demo-congrats) ; 動作チェック用の自動音声。内線で1290へ掛けるとお祝いのメッセージを聞ける。動作確認済み。
exten => 101,1,Dial(SIP/android,20,rt) ; 内線番号は設定しただけで動作確認していない。
exten => 102,1,Dial(SIP/rt58i,20,rt) ; 内線番号は設定しただけで動作確認していない。

;; 外線
exten => 5XXXXXXX,1,Dial(SIP/android&SIP/rt58i,20,rt) ; SMARTalkの2回線はYamaha RT58iとZoiPerに着信する、
exten => 5YYYYYYY,1,Dial(SIP/android&SIP/rt58i,20,rt)
exten => s,1,Dial(SIP/android) ; ひかり電話はZoiPerにのみ着信する (実際にはホームゲートウェイに直結された固定電話機にも着信する)。


; 発信
;; SMARTalk1の場合には9で発信する。
exten => _9.,1,Set(CALLERID(num)=${MYNUMBER})
exten => _9.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _9.,n,Dial(SIP/${EXTEN:1}@fusion1,120,T) ; 最初に9をダイアルした場合に9を取って外線へ回す。

;; SMARTalk2の場合には8で発信する。
exten => _8.,1,Set(CALLERID(num)=${MYNUMBER})
exten => _8.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _8.,n,Dial(SIP/${EXTEN:1}@fusion2,120,T) ; 最初に7をダイアルした場合に8を取って外線へ回す。

;; ひかり電話の場合には7で発信する。
exten => _7.,1,Set(CALLERID(num)=${MYNUMBER})
exten => _7.,n,Set(CALLERID(name)=${MYNUMBER})
exten => _7.,n,Dial(PJSIP/${EXTEN:1}@hikari-trunk) ; 最初に7をダイアルした場合に7を取って外線へ回す。

起動させ使用開始する

これで、Asteriskを以下のように起動すれば、それぞれ使えるようになる。

# cp /usr/pkg/share/examples/rc.d/asterisk /etc/rc.d
# echo asterisk=YES >> /etc/rc.conf
# /etc/rc.d/asterisk start
問題はめったにこれら3回線を利用する機会がないということだ。

文化庁の自由利用マーク

文化庁の自由利用マーク というのがあって、 ITmediaの記事「文化庁、CCライセンスを支援へ 独自ライセンス構築は断念」 によると、2013年の時点で普及はあきらめているらしい。 文化庁のウェブページを見ても、そもそも「コピーOK」「障害者OK」「学校教育OK」とい...