ご注意下さい
この記事は3年以上前に書かれた記事ですので、内容が古い可能性があります。
前回はひかり電話も追加し、コールルーティングの設定方法をご紹介しました。今回はAsteriskNowでAsahi-Net経由で発信する際に非通知発信する方法についてご紹介します。
ひかり電話の場合はそのまま184を付加して発信すれば非通知での発信ができるのですが、Asahi-Net(IP電話C)の場合は184を付加しても非通知発信とならずエラーになってしまいます。
生Asteriskでは以下の設定をすることで非通知発信が可能です。
;;; 184のハンドリング exten => _1840N0XXXXXXXX,1,SIPAddHeader(Remote-Party-ID: <sip:${MYNUMBER_ASAHI}@asahi-net.or.jp>;privacy=full) exten => _1840N0XXXXXXXX,2,SIPAddHeader(Proxy-Require: privacy) exten => _1840N0XXXXXXXX,3,Set(CALLERID(name)=Anonymous) exten => _1840N0XXXXXXXX,4,Macro(callout-asahi-anonymous,${EXTEN:3})
非通知発信のポイント
- CIDにAnonymousにセット
- 184は削除して発信(${EXTEN:3})
- Remote-Party-IDヘッダでprivacy=full属性を付加
- Proxy-Require: privacyヘッダを付加
では、さっそく管理画面を起動して、「接続」→「トランク」を開いて非通知用のトランクを作成します。
まずはAsahi-Net用のトランクをそのままコピーしましょう。
大事な箇所は「ピア詳細」及び「レジスト文字列」です。type、fromuser、fromdomainを変更します。
externip=218.45.184.224 externhost=sip.kamata-net.com type=peer host=voip01.nc.asahi-net.or.jp username=(IP電話用ユーザ名) fromuser=anonymous fromdomain=localhost secret=(IP電話用ユーザのパスワード) dtmfmode=rfc2833 canreinvite=no progressinband=no disallow=all allow=ulaw&alaw insecure=port,invite
レジスト文字列も上記トランク名を指定しましょう。
設定を反映してレジストできたか確認します。
次に管理画面から「接続」→「アウトバウンドルート」を開いて新しいアウトバウンドルートを作成します。
ダイヤルパターンでは、プレフィックスの箇所に「184」と記載することで発信時には削除EXTEN:3してくれるようです。
追加したアウトバウンドルートは非通知用のトランクを利用します。
非通知用のアウトバウンドルートが優先されるように順番も気を付けましょう。
ここまではGUIで設定できますが、SIPメッセージにPrivacyヘッダを付加するのはAsteriskNowボックスにログインして作業しなければなりません。
編集するファイルは/etc/asterisk/extensions_additional.confです。以下のハイライト部分を追記します。
[outrt-3] ; Asahi-Net-Outbound-Privacy exten => _1840N0XXXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,) exten => _1840N0XXXXXXXX,n,Gosub(sub-record-check,s,1(out,${EXTEN},no)) exten => _1840N0XXXXXXXX,n,ExecIf($[ "${CALLEE_ACCOUNCODE}" != "" ] ?Set(CDR(accountcode)=${CALLEE_ACCOUNCODE})) exten => _1840N0XXXXXXXX,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) exten => _1840N0XXXXXXXX,n,SIPAddHeader(Remote-Party-ID: <sip:${OUTCID_1}@asahi-net.or.jp>;privacy=full) exten => _1840N0XXXXXXXX,n,SIPAddHeader(Proxy-Require: privacy) exten => _1840N0XXXXXXXX,n,Set(CALLERID(name)=Anonymous) exten => _1840N0XXXXXXXX,n,Set(_NODEST=) exten => _1840N0XXXXXXXX,n,Macro(dialout-trunk,3,${EXTEN:3},,off) exten => _1840N0XXXXXXXX,n,Macro(outisbusy,) exten => _1840ZZXXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,) exten => _1840ZZXXXXXXX,n,Gosub(sub-record-check,s,1(out,${EXTEN},no)) exten => _1840ZZXXXXXXX,n,ExecIf($[ "${CALLEE_ACCOUNCODE}" != "" ] ?Set(CDR(accountcode)=${CALLEE_ACCOUNCODE})) exten => _1840ZZXXXXXXX,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) exten => _1840ZZXXXXXXXX,n,SIPAddHeader(Remote-Party-ID: <sip:${OUTCID_1}@asahi-net.or.jp>;privacy=full) exten => _1840ZZXXXXXXXX,n,SIPAddHeader(Proxy-Require: privacy) exten => _1840ZZXXXXXXXX,n,Set(CALLERID(name)=Anonymous) exten => _1840ZZXXXXXXX,n,Set(_NODEST=) exten => _1840ZZXXXXXXX,n,Macro(dialout-trunk,3,${EXTEN:3},,off) exten => _1840ZZXXXXXXX,n,Macro(outisbusy,) exten => _184[3456]XXXXXXX,1,Macro(user-callerid,LIMIT,EXTERNAL,) exten => _184[3456]XXXXXXX,n,Gosub(sub-record-check,s,1(out,${EXTEN},no)) exten => _184[3456]XXXXXXX,n,ExecIf($[ "${CALLEE_ACCOUNCODE}" != "" ] ?Set(CDR(accountcode)=${CALLEE_ACCOUNCODE})) exten => _184[3456]XXXXXXX,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) exten => _184[3456]XXXXXXX,n,SIPAddHeader(Remote-Party-ID: <sip:${OUTCID_1}@asahi-net.or.jp>;privacy=full) exten => _184[3456]XXXXXXX,SIPAddHeader(Proxy-Require: privacy) exten => _184[3456]XXXXXXX,Set(CALLERID(name)=Anonymous) exten => _184[3456]XXXXXXX,n,Set(_NODEST=) exten => _184[3456]XXXXXXX,n,Macro(dialout-trunk,3,03${EXTEN:3},,off) exten => _184[3456]XXXXXXX,n,Macro(outisbusy,) ;--== end of [outrt-3] ==--;
完了したら、AsteriskNowボックスを再起動するかasteriskプロセスの再起動をして完了です。
Stopping safe_asterisk: [ OK ]
Shutting down asterisk: [ OK ]
Starting asterisk: [ OK ]
[root@localhost asterisk]#
如何でしたか?記事は以上。