Asterisk 電話 日誌

AsteriskとKX-UT136を使った小規模電話システム構築まで

Asterisk 構築 extensions.conf

2017-07-17 22:24:24 | Asterisk
続いて、extensions.confです。
外線1は0発信 フュージョンからは9発信
外線2は発信を書いてません。着信のみです。内線すべてに着信するようにしています。


電話番号と名前をデータベースcidnameに登録しておけば、
データーベースをチェックして、名前を電話機に表示できます。
blacklistに電話番号を登録しておけば、ss-noserviceという音声を繰り返し流します。

[general]
writeprotect=no
priorityjumping=no

[globals]
GROUP1=SIP/201&SIP/202&SIP/203&SIP/204&SIP/205&SIP/206&SIP/207&SIP/301&SIP/302&SIP/303
;GROUP2=

;自局の着信番号を設定する
;[incoming]セクションを参照
;ひかり電話HGWの番号(着信番号:自分の番号)
MYNUMBER1=0245678901
MYNUMBER2=0245678902
;FUSION OpenGateの番号(050を取ったもの)
MYNUMBER3=12345678

[default]
;200番台を内線に割り当てています
;グループ着信
exten => 200,1,NoOp(内線代表着信)
exten => 200,n,Dial(${GROUP1},60)
exten => 200,n,Hangup

;内線呼び出し
exten => _20Z,1,NoOp(内線呼出)
exten => _20Z,n,Dial(SIP/${EXTEN},60)
exten => _20Z,n,Hangup

;内線呼び出し
exten => _30Z,1,NoOp(内線呼出)
exten => _30Z,n,Dial(SIP/${EXTEN},60)
exten => _30Z,n,Hangup

;400番台は特番で機能に割り当てています
;音声会議
exten => 401,1,NoOp(音声会議)
exten => 401,n,Answer()
exten => 401,n,Confbridge(${EXTEN})
exten => 401,n,Hangup

;PIASTでのページング
;ALSAサウンドを持つLinux機でも使用可能
exten => 409,1,NoOp(ページング)
exten => 409,n,GoTo(paging,s,1)

;700番台はコールパーキング用です
;コールパーキング
exten => 700,1,NoOp(コールパーキング)
exten => 700,n,Park()
;パーキングロットをインクルードXXXしない
include => parkedcalls
;exten => 700,1,ParkedCall(701)
;exten => _701,hint,park:701@parkedcalls


;0発信をひかり電話にする場合の例(0+03--でダイヤル)
exten => _0.,1,NoOp(ひかり電話0発信)
exten => _0.,n,Set(CALLERID(num)=${MYNUMBER1})
exten => _0.,n,Set(CALLERID(name)=${MYNUMBER1})
exten => _0.,n,Dial(PJSIP/${EXTEN:1}@hikari-trunk)

;9発信をFUSIONにする場合の例(9+03--でダイヤル)
exten => _9.,1,NoOp(OpenGate 9発信)
exten => _9.,n,Set(CALLERID(num)=${MYNUMBER3})
exten => _9.,n,Set(CALLERID(name)=${MYNUMBER3})
exten => _9.,n,Dial(SIP/${EXTEN:1}@fusion1)

;外線着信用コンテキスト
[incoming]
;着信番号毎に処理を書くこと

;ひかり電話着信例
exten => ${MYNUMBER1},1,NoOp(うちの代表番号)
exten => ${MYNUMBER1},n,GotoIf(${BLACKLIST()}?blacklisted)
exten => ${MYNUMBER1},n,SipAddHeader(P-Called-Party-ID:)
exten => ${MYNUMBER1},n,Macro(cidnamecheck)
exten => ${MYNUMBER1},n,Dial(${GROUP1},120)
exten => ${MYNUMBER1},n,Hangup
exten => ${MYNUMBER1},n(blacklisted),Answer()
exten => ${MYNUMBER1},n(loop),Zapateller()
exten => ${MYNUMBER1},n,Playback(ss-noservice)
exten => ${MYNUMBER1},n,Goto(loop)

exten => ${MYNUMBER2},1,NoOp(うちの代表番号)
exten => ${MYNUMBER2},n,GotoIf(${BLACKLIST()}?blacklisted)
exten => ${MYNUMBER2},n,SipAddHeader(P-Called-Party-ID:)
exten => ${MYNUMBER2},n,Macro(cidnamecheck)
exten => ${MYNUMBER2},n,Dial(${GROUP1},120)
exten => ${MYNUMBER2},n,Hangup
exten => ${MYNUMBER2},n(blacklisted),Answer()
exten => ${MYNUMBER2},n(loop),Zapateller()
exten => ${MYNUMBER2},n,Playback(ss-noservice)
exten => ${MYNUMBER2},n,Goto(loop)

;FUSION OpenGate着信例
exten => ${MYNUMBER3},1,NoOp(FUSION着信)
exten => ${MYNUMBER3},n,GotoIf(${BLACKLIST()}?blacklisted)
exten => ${MYNUMBER3},n,SipAddHeader(P-Called-Party-ID:)
exten => ${MYNUMBER3},n,Macro(cidnamecheck)
exten => ${MYNUMBER3},n,Dial(${GROUP1},120)
exten => ${MYNUMBER3},n,Hangup
exten => ${MYNUMBER3},n(blacklisted),Answer()
exten => ${MYNUMBER3},n(loop),Zapateller()
exten => ${MYNUMBER3},n,Playback(ss-noservice)
exten => ${MYNUMBER3},n,Goto(loop)

;ひかり電話HGW用前処理
[from-hikari]

exten => s,1,NoOp(ひかり電話着番処理)
exten => s,n,Set(DESTNUM=${PJSIP_HEADER(read,To)})
exten => s,n,NoOp(着信To: ${DESTNUM})
;着信番号の桁数が異なる場合には以下の行を調整のこと
exten => s,n,Set(DESTNUM=${DESTNUM:1:10})
exten => s,n,NoOp(着信番号: ${DESTNUM})
exten => s,n,Goto(incoming,${DESTNUM},1)

;CID(番号)から名前を取得するマクロ
;AstDBのcidnameに番号と名前を入れておくこと
[macro-cidnamecheck]

exten => s,1,NoOp(CID参照マクロ)
exten => s,n,Set(CIDNAME=${DB(cidname/${CALLERID(num)})})
exten => s,n,GotoIf($["${CIDNAME}" = ""]?noname)
exten => s,n,Set(CALLERID(name)=${CIDNAME})
exten => s,n,Goto(endmacro)
exten => s,n(noname),Set(CALLERID(name)=不明)
exten => s,n(endmacro),MacroExit

;PIASTページング用
[paging]

;リレーをONしてページング実行、ページング前にビープを鳴らす
exten => s,1,NoOp(Paging Start)
;exten => s,n,System(/home/piast/relayon.sh)
exten => s,n,Dial(Console/0,,A(beep))

;ハングアップ後にビープを鳴らす
exten => h,1,NoOp(Paging Hangup)
exten => h,n,System(asterisk -rx 'channel originate Console/0 application Playback beep')
;exten => h,n,System(/home/piast/relayoff.sh)

;発信不可
[localonly]
exten => _20Z,1,NoOp(内線呼出)
exten => _20Z,n,Dial(SIP/${EXTEN},60)
exten => _20Z,n,Hangup

exten => _30Z,1,NoOp(内線呼出)
exten => _30Z,n,Dial(SIP/${EXTEN},60)
exten => _30Z,n,Hangup

Asterisk 構築 sip.conf

2017-07-17 08:37:23 | Asterisk
サンプルファイルのsip.confを修正します。
Asteriskの設定ファイルは、通常、「/etc/asterisk」ディレクトリの配下にあります。

内線201から207 内線301から303は着信専用(発信規制)としました。
フュージョン050も収容しました。

[general]
maxexpirey=3600
defaultexpirey=3600
context=default
;SIPポートは5060,PJSIPとの被りに注意!
port=5060
bindaddr=0.0.0.0
srvlookup=yes
;OpenGateの場合allowguestはno
allowguest=no
disallow=all
allow=ulaw
allow=alaw
allow=gsm
language=ja

;PAIサポート
sendrpid=pai

;端末確認用
qualify=2000

nat=force_rport,comedia

;OpenGateのREGISTER例 フュージョンの場合
register => 12345678:Password@fusion1

;OpenGateのピア定義 フュージョンの場合
[fusion1]
type=friend
;usernameとfromuserはユーザ名(050の後ろ8桁)を設定する
username=12345678
fromuser=12345678
;パスワードを設定する
secret=Password
canreinvite=no
context=incoming
insecure=port,invite
host=smart.0038.net
fromdomain=smart.0038.net
dtmfmode=inband
allowsubscribe=no

;電話機用テンプレート(共通設定)
[phone](!)
type=friend
canreinvite=no
host=dynamic
dtmfmode=rfc2833
callgroup=1
pickupgroup=1
disallow=all
allow=ulaw

;ACL
;安全措置のため192.168系以外は受け付けない
;他のネットワークを使用している場合にはここを変更すること
deny=0.0.0.0/0
permit=192.168.1.0/255.255.0.0

;各電話機毎の設定
;当たり前ですがパスワードは変えましょう!
[201](phone)
username=201
secret=password

[202](phone)
username=202
secret=password

[203](phone)
username=203
secret=password

[204](phone)
username=204
secret=password

[205](phone)
username=205
secret=password

[206](phone)
username=206
secret=password

[207](phone)
username=207
secret=password

[301](phone)
username=301
secret=password
context=localonly

[302](phone)
username=302
secret=password
context=localonly

[303](phone)
username=303
secret=password
context=localonly