お問い合わせ

ブログ

これまでに経験してきたプロジェクトで気になる技術の情報を紹介していきます。

Asterisk pjsipで外線を設定する

okuda Okuda 2 years

fusionのアカウントを使って設定します。

必要な情報は

  • サーバURI: sip:smart.0038.net
  • username(電話番号): 00000000000
  • password: pppppppp
  • サーバアドレス: 61.213.230.153

外線発信は「9」をつけた番号します。

pjsip.confを編集

;トランスポートの設定
[transport-udp]
type=transport
protocol=udp
;デフォルトは5060
bind=0.0.0.0:15060
;パブリックIPを設定
external_media_address = xx.xxx.xxx.xxx
external_signaling_address = xx.xxx.xxx.xxx
;プライベート IPを設定
local_net = yyy.yy.yy.yyy/255.255.0.0

;-------------------------
; Auth(認証情報)
;-------------------------
[fusion]
type=auth
auth_type=userpass
;ユーザID
username=00000000
;パスワード
password=pppppppp

;-------------------------
; Registration
;-------------------------
[fusion]
type=registration
;使用するトランスポート
transport=transport-udp
;レジスタの認証情報
outbound_auth=fusion
;レジスタ先のサーバURI
server_uri=sip:smart.0038.net
;アウトバウンドレジスト時に使用するクライアントのSIPURI
client_uri=sip:00000000@smart.0038.net
;レジスタ失敗時の再試行間隔(秒)
retry_interval=60

;-------------------------
; AOR(Address of Record)
;-------------------------
[fusion]
type=aor
;AORのコンタクト
contact=sip:00000000@smart.0038.net

;-------------------------
; Endpoint
;-------------------------
[fusion]
type=endpoint
;使用するトランスポート
transport=transport-udp
;ダイヤルプランのcontext
context=from-fusion
;コーデック設定
disallow=all
allow=ulaw
;レジスタの認証情報
outbound_auth=fusion
;エンドポイントのAOR
aors=fusion

;-------------------------s
; Identify
;-------------------------
[fusion]
type=identify
;使用するEndpoint
endpoint=fusion
;IPアドレス
match=61.213.230.153

;AOR
[2001]
type = aor
;このAORに接続可能なコンタクト数
max_contacts=1
;既存のコンタクトを新しいもので上書きするかどうか
remove_existing=yes

;認証情報
[2001]
type = auth
username = 2001
password = 2001

;エンドポイント設定
[2001]
type = endpoint
;使用するトランスポート名
transport = transport-udp
;着信コンテキスト
context = default 
;コーデック設定
disallow = all
allow = ulaw
;このエンドポイントのAOR
aors = 2001
;このレジスタの認証情報
outbound_auth = 2001
;DTMFモード
dtmf_mode=inband
;このエンドポイントでAVP使用を強制するかどうか
force_rport = yes
;NATトラバースにICEを使用
ice_support = yes
;エンドポイント間でのダイレクトメディアを許可
direct_media = no
;このレジスタの認証情報
;その他の設定
rtp_symmetric = yes
rewrite_contact = yes

[2002]
type = aor
max_contacts=1
remove_existing=yes

[2002]
type = auth
username = 2002
password = 2002

[2002]
type = endpoint
transport = transport-udp
context = default
disallow = all
allow = ulaw
aors =2002
outbound_auth = 2002
dtmf_mode=inband
force_rport = yes
ice_support = yes
direct_media = no
rtp_symmetric = yes
rewrite_contact = yes

[2003]
type = aor
max_contacts=1
remove_existing=yes

[2003]
type = auth
username = 2003
password = 2003

[2003]
type = endpoint
transport = transport-udp
context = default
disallow = all
allow = ulaw
aors =2003
dtmf_mode=inband
direct_media = no

extensions.confの編集

[general]
;CLIによるextenの変更を許可するか禁止するかを指定
writeprotect = no

[globals]
;FUSION OpenGateの番号(050を取ったもの)
FUSION_NUMBER=00000000

;fusion 着信時に着信する番号
FUSION_GROUP=PJSIP/2002&PJSIP/2003

;-------------------------
; default
;-------------------------
[default]
exten => _20XX,1,NoOp(内線呼出)
same => n,Dial(PJSIP/${EXTEN},60,r)
same => n,NoOp(アンサー)
same => n,Answer()
same => n,NoOp(ハングアップ)
same => n,Hangup

;9発信をFUSIONにする場合(9+でダイヤル)
exten => _9.,1,NoOp(★OpenGate 9発信)
same => n,Set(CALLERID(num)=${FUSION_NUMBER})
same => n,Set(CALLERID(name)=${FUSION_NUMBER})
same => n,Dial(PJSIP/${EXTEN:1}@fusion)

;-------------------------
; default(外線着信用コンテキスト)
;-------------------------
[incoming]
exten => ${FUSION_NUMBER},1,NoOp(★FUSION着信)
same => n,Dial(${FUSION_GROUP},60)
same => n,Answer()
same => n,Hangup

;-------------------------
; before and goto(事前処理)
;-------------------------
[from-fusion]
;事前に処理する事があればこのようにする
exten => ${FUSION_NUMBER},1,NoOp(★事前処理)
;PJSIP_HEADER取得
same => n,NoOp(★PJSIP_HEADER: ${PJSIP_HEADER(read,To)})
;CALLERID取得
same => n,NoOp(★CALLERID: ${CALLERID(num)})
;取得情報を変数に入れる
same => n,Set(DESTNUM=${PJSIP_HEADER(read,To)})
same => n,NoOp(★DESTNUM: ${DESTNUM})
;変数の中身を切り取り
same => n,Set(DESTNUM2=${DESTNUM:5:10})
same => n,NoOp(★DESTNUM2: ${DESTNUM2})
;incoming context へ飛ばす
same => n,Goto(incoming,,1)

設定の反映

service asterisk restart

確認手順

発信する場合は90x0xxxxyyyyのように「9」をつけた番号でコールします。

受信はextensions.conf[globals]

FUSION_GROUP=PJSIP/2002&PJSIP/2003

のように設定したので 2002と2003が受信します。

Asterisk pjsipで外線を設定する 2021-08-23 14:02:59

コメントはありません。

4783

お気軽に
お問い合わせください。

お問い合わせ
gomibako@aska-ltd.jp