Asterisk pjsipのソースを表示
←
Asterisk pjsip
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます: メール確認された利用者、
管理者
。
このページのソースの閲覧やコピーができます。
[[カテゴリ:Asterisk]] [[カテゴリ:pjsip]] AsiteriskでチャネルにPjSIPを使用する際の設定方法など ==コンパイル== Asterisk 13まではpjprojectを別個インストールするか、configureに--with-pjproject-bundledを付けて実行する必要がありましたが、Asterisk 16からはデフォルトでbundledインストールされるようになりました。<BR> 各バージョン毎のインストール方法についてはAsteriskのそれぞれのページを参照してください。<BR> [[Asterisk 13]]<BR> [[Asterisk 16]]<BR> ==変換ツール== Asterisk 13以降であれば ソースディレクトリ/contrib/scripts/sip_to_pjsip の下にPythonのスクリプトがあります(複数)。sip.confのあるディレクトリでこれを実行するとpjsip.confに変換してくれます。#includeしている場合にはそれらも変換してくれますが、完璧ではないです。 ==Asterisk 16における注意点== PjSIPはres_statsd.soに依存します。このためres_statsdがloadされていないと、res_pjsipがloadされない問題が発生します。<BR> res_statsdモジュールはstatsd.confファイルが無いとloadされないため、statsd.confファイルが無いだけで、PjSIPが使えないという困った状態になります。ソースファイルに含まれる statsd.conf.sample を /etc/asterisk/statsd.conf にコピーしておいてください。もっとも、このファイルはコメントされた行だけなので要するに空なのですが。 ==パラメータ一覧== [[Asterisk pjsip parameters]] ==基本設定(電話機:エンドポイント)== *間違いやすいところ :sip.confでは1wordだったのがアンダーバーが入る :dtmfmode → dtmf_mode ===グローバル設定=== 設定は基本としてはpjsip.confに書きます。<BR> *[[Asterisk_pjsip_parameters#GLOBAL]]<BR> グローバル設定を使用する場合にはtype=grobalのセクションを書きます。<BR> [grobal] type=grobal max_forwards = 50 SIPの基本パラメータやPjSIPの動作に関わるパラメータはSystemで設定します。<BR> *[[Asterisk_pjsip_parameters#SYSTEM]]<BR> ===インクルード=== Asteriskの他の設定ファイル同様に#includeが使えます。なので、電話機と回線は別ファイルにした方が見通しは良いかもしれません。例えば<BR> [transport-udp] type = transport protocol = udp bind = 0.0.0.0:5070 #include pjsip_phones.conf #include pjsip_trunk_hikari.conf のようにファイルを分割し、includeすると管理が楽になります。 基本で必要なものは以下です。 ===トランスポート=== [transport-udp] type = transport protocol = udp bind = 0.0.0.0:5070 sip.confに書いていたものと同じですが、トランスポートはセクションで明示指定します。上の例では5070ポートにbindさせていますが、5060を使用する場合にはここを5060にします。<BR> ===ACL=== ACLの例は次の通りです。 [acl] type=acl deny=0.0.0.0/0.0.0.0 permit=192.168.0.0/16 ※deny,permitはこの順でないとpermitしてdenyしてしまう模様で、逆に書くと誰も使えなくなります。<BR> <BR> pjsip.confに複数のACL(type=acl)を書くとそのセクション名にかかわらず後ろにあるACLの方が勝つ模様。<BR> [acl] type=acl deny=0.0.0.0/0.0.0.0 permit=192.168.0.0/16 [acl-my] type=acl deny=0.0.0.0/0.0.0.0 permit=10.10.0.0/16 と、書くとacl-myが勝つので要注意です。複数を許可したい場合には1セクションで [acl] type=acl deny=0.0.0.0/0.0.0.0 permit=192.168.0.0/16 permit=10.10.0.0/16 のように書きます。<BR> *[[Asterisk_pjsip_parameters#ACL.28res_pjsip_acl.29]] →[[Asterisk pjsip ACL]] ===エンドポイント(電話機)=== エンドポイントを設定する場合にはセクションが3つ必要です。エンドポイントそれ自体とaor,authの3つです。 [phone1] type = aor max_contacts = 1 qualify_frequency = 30 authenticate_qualify = no [phone1] type = auth username = phone3 password = mysecretpassword [phone1] type = endpoint context = default transport=transport-udp dtmf_mode = rfc4733 disallow = all allow = ulaw allow = alaw rtp_symmetric = yes force_rport = yes rewrite_contact = yes direct_media = no send_pai = yes inband_progress = yes call_group = 1 pickup_group = 1 language = ja device_state_busy_at = 1 auth = phone1 outbound_auth = phone1 aors = phone1 エンドポイントにACLを使用する場合には acl=myhouse のように書きますが、この場合の名前付きACLは'''Asteriskの名前付きALC'''です。<BR> つまりacl.confに設定されている名前付きACLということです。pjsipのACLではないので注意してください。<BR> ==トランク== 回線接続側は [[Asterisk pjsip trunks]]のページへ ==Wizard== Asteriskにはpjsip_wizardが組み込まれており、PjSIPの設定を簡素化することができます。使う場合の条件は以下の通りです。 *基本の設定はpjsip.confに書く :transportなどの情報はpjsip.confに書く必要があります *Wizard用のファイル名はpjsip_wizard.conf *共通化したテンプレート内で各セクションを指定するにはスラッシュ(/)で区切る :例: endpoint/dtmf_mode pjsip_wizard.confの記述例 ;電話機用テンプレート(共通設定) [phone-defaults](!) type=wizard transport = transport-udp accepts_registrations = yes sends_registrations = no accepts_auth = yes sends_auth = no endpoint/context = default endpoint/dtmf_mode = rfc4733 endpoint/call_group = 1 endpoint/pickup_group = 1 endpoint/language = ja endpoint/disallow = all endpoint/allow = ulaw endpoint/rtp_symmetric = yes endpoint/force_rport = yes endpoint/direct_media = no endpoint/send_pai = yes endpoint/send_rpid = yes endpoint/rewrite_contact = yes endpoint/inband_progress = yes endpoint/allow_subscribe = yes endpoint/transport = transport-udp aor/max_contacts = 1 aor/qualify_frequency = 30 aor/authenticate_qualify = no ;各電話機個別設定 [phone1](phone-defaults) inbound_auth/username = phone1 inbound_auth/password = mypasswordishere ==CLIコマンド== *sip show peersに対応するのはpjsip show endpoints *sip show peer phone1などピア情報を表示するのはpjsip show endpoint phone1 *AORを表示するのは一覧ならpjsip show aorsでピアの情報を表示するのはpjsip show aor phone1のようにする *それぞれの設定項目で何が設定されているかを確認するには pjsip show endpoint phone1 のようにすると phone1 の endpoint パラメータ一覧が表示される。aorを見たければ pjsip show aor phone1。これはトランクの場合も同様で pjsip show regstration hikari-hgw のようにするとregister関係のパラメータがみえる。 ==挙動上の注意点== ===挙動そのもの=== chan_sipより制限が少し"きつい"です。SIPメッセージの中に少しおかしなものがあってもchan_sipでは制限が緩かったので、通っていたものがPjSIPでは通らないことがあります。CLI等で'syntax error'のようなメッセージが出る場合にはSIPメッセージにおかしなところがあるかもしれないので調べてください。 ===AddHeader=== chan_sipの場合にはSIPAddHeaderでSIPヘッダを追加できましたが、PjSIPではファンクションPJSIP_HEDER()を使用します。ただしこのファンクションはextenの途中で使用しても効果がありません。Dial時にサブルーチンコールしてやる必要があります。<BR> 例えばAlert-Info: hogeを追加するにはまず以下のよなルーチンを定義します。 [add-alert] exten => s,1,Set(PJSIP_HEADER(add,Alert-Info)=hoge) exten => s,n,Return Dial時に以下のようにしてコールします exten => 201,1,Dial(PJSIP/201,,b(add-alert,s,1)) ==設定変更の反映== *モジュール数が多すぎて一発リロードする方法がよくわからない *module reload res_pjsip.soを実行すれば"だいたい"はいけそう :wizardのaor/を変更しても反映されない場合がある ==PjSIPで拡張される機能== [[pjsip_機能拡張]]
Asterisk pjsip
に戻る。
ナビゲーション メニュー
個人用ツール
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
ヘルプ
広告
サイトコンテンツ
コミュニティ
Asterisk
Asterisk 18
Asterisk 20
Asterisk 22
IP電話機
購入情報
導入事例
回線接続
ベンダー
ひかり電話
セキュリティ
イベント情報
スペシャル
Asterisk pjsip
ABS
黒電話 ハック
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報