Linux

Asterisk12.8.2 Panasonic KX-UT136 パーク保留

Asteriskを利用するとIP電話内線網構築といった数十万する初期費用をぐぐっと安く抑えることができます、中小や零細向けオフィスにフィットします。

 

※このページの内容について機器メーカーに問い合わせるのは控えて下さい。

前提条件

 

クラウドIPBXプロバイダ

  • Cloco Cloud SIPトランク2契約済

パークコール

  • パークプラン:700
  • パークエリア:701~702

 

SIPトランクサーバ

  • AWSのEC2にて設置

SIPサーバポート番号

  • 15060

実際の利用ではセキュリティ上変更すると良いかと思います。

 

設計

代表子機

2つの外線電話番号があり、

  • 042xxx2807
  • 042xxx2769

「20」, 「21」, 「22」, 「23」, 「40番」の事務所にある代表子機が着信する、外線の発信もできる。

客室子機

「30」, 「31」の客室子機は内線専用、代表子機と客室子機といったすべての子機と内線通話が出来る。

外線の発信は出来ない。

 

 

セキュリティ対策

  • ポート番号変更
  • Fail2ban
  • IP制限
    拠点利用のみの場合
  • 海外通話制限
    国内のみの通話利用の場合、海外に通話できないようにする。 Cloco Cloud管理画面で制御可能

今回の記事では紹介していませんが、セキュリティ対策は必須です。

サーバへの設定

必要なライブラリを追加

yum install -y libuuid-devel ncurses-devel sqlite sqlite-devel json-c-devel.x86_64 json-c-devel.x86_64 
yum groupinstall -y 'Development Tools' 'base'
yum install -y gcc gcc-c++ pcre-devel zlib-devel make wget openssl-devel libxml2 libxml2-devel libxslt-devel libxslt libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel gperftools-devel flex
yum install -y gcc-c++ kernel-devel zlib-devel openssl-devel ncurses-devel newt-devel slang-devel compat-libtermcap

 

更新します。

# yum update

kernelとkernel-develのバージョンがこれで合う。

 

jansson-2.5

jansson-2.5をインストールします。

# cd /usr/src/ && wget http://www.digip.org/jansson/releases/jansson-2.5.tar.gz
# tar -zxvf jansson-2.5.tar.gz
# cd jansson*
# ./configure --prefix=/usr/ && make clean && make && make install && ldconfig

 

再起動して読み込ませます。

# reboot now

 

 

Asterisk12.8.2のダウンロードとインストール

ダウンロードを行いますよ!

# cd /usr/local/src
# wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-12.8.2.tar.gz
# tar xzvf asterisk-12.8.2.tar.gz

 

Asterisk12.8.2コンフィギュア

# cd asterisk-12.8.2
asterisk-12.8.2]# ./configure


configure: Menuselect build configuration successfully completed

               .$$$$$$$$$$$$$$$=..
            .$7$7..          .7$$7:.
          .$$:.                 ,$7.7
        .$7.     7$$$$           .$$77
     ..$$.       $$$$$            .$$$7
    ..7$   .?.   $$$$$   .?.       7$$$.
   $.$.   .$$$7. $$$$7 .7$$$.      .$$$.
 .777.   .$$$$$$77$$$77$$$$$7.      $$$,
 $$$~      .7$$$$$$$$$$$$$7.       .$$$.
.$$7          .7$$$$$$$7:          ?$$$.
$$$          ?7$$$$$$$$$$I        .$$$7
$$$       .7$$$$$$$$$$$$$$$$      :$$$.
$$$       $$$$$$7$$$$$$$$$$$$    .$$$.
$$$        $$$   7$$$7  .$$$    .$$$.
$$$$             $$$$7         .$$$.
7$$$7            7$$$$        7$$$
 $$$$$                        $$$
  $$$$7.                       $$  (TM)
   $$$$$$$.           .7$$$$$$  $$
     $$$$$$$$$$$$7$$$$$$$$$.$$$$$$
       $$$$$$$$$$$$$$$$.

configure: Package configured for:
configure: OS type  : linux-gnu
configure: Host CPU : x86_64
configure: build-cpu:vendor:os: x86_64 : unknown : linux-gnu :
configure: host-cpu:vendor:os: x86_64 : unknown : linux-gnu :

ロゴマークが出てきたらOK!です

 

インストール

asterisk-12.8.2]# make install




make[1]: ディレクトリ `/usr/local/src/asterisk-12.8.2/sounds' に入ります
make[1]: ディレクトリ `/usr/local/src/asterisk-12.8.2/sounds' から出ます
find rest-api -name "*.json" | while read x; do \
                /usr/bin/install -c -m 644 $x "/var/lib/asterisk/rest-api" ; \
        done
 +---- Asterisk Installation Complete -------+
 +                                           +
 +    YOU MUST READ THE SECURITY DOCUMENT    +
 +                                           +
 + Asterisk has successfully been installed. +
 + If you would like to install the sample   +
 + configuration files (overwriting any      +
 + existing config files), run:              +
 +                                           +
 +                make samples               +
 +                                           +
 +-----------------  or ---------------------+
 +                                           +
 + You can go ahead and install the asterisk +
 + program documentation now or later run:   +
 +                                           +
 +               make progdocs               +
 +                                           +
 + **Note** This requires that you have      +
 + doxygen installed on your local system    +
 +-------------------------------------------+

 

コンフィグサンプルファイルインストール

# make samples
# make config

 

ライブラリの読み込み

# ldconfig

 

動かしてみよう

# systemctl enable asterisk
# systemctl restart asterisk
# systemctl status asterisk

 

 

DADHIドライバのインストール

 

DADHIのソースコードをダウンロードします。

# cd /usr/local/src
# wget https://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.11.1+2.11.1.tar.gz

 

# tar -zxvf dahdi-linux-complete-2.11.1+2.11.1.tar.gz
# cd dahdi-linux-complete-*

 

インストールします。

# make
# make install
# make config

 

# cp /etc/dahdi/modules.sample /etc/dahdi/modules

 

# vi /etc/dahdi/modules


# Xorcom Astribank Devices
xpp_usb

最終行に以下を追加

# DAHDI Dummy
dahdi_dummy

 

libpriのインストール

 

# cd /usr/local/src
# wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.6.0.tar.gz
# tar xzvf libpri-*.tar.gz

 

インストール

# cd libpri-*
# make && make install



install -m 644 libpri.h /usr/include
install -m 755 libpri.so.1.4 /usr/lib
#if [ -x /usr/sbin/sestatus ] && ( /usr/sbin/sestatus | grep "SELinux status:" | grep -q "enabled"); then /sbin/restorecon -v /usr/lib/libpri.so.1.4; fi
( cd /usr/lib ; ln -sf libpri.so.1.4 libpri.so)
install -m 644 libpri.a /usr/lib
if test $(id -u) = 0; then /sbin/ldconfig -n /usr/lib; fi

 

 

ライブラリの読み込み

# ldconfig

 

 

Asterisk設定

# cp -a /etc/asterisk/rtp.conf /etc/asterisk/rtp.conf.org

 

通話用のポート設定

# vi /etc/asterisk/rtp.conf


rtpstart=10000
rtpend=20000

↓変更

;rtpstart=10000
;rtpend=20000
rtpstart=30000
rtpend=31023

 

ログ設定

# vi /etc/asterisk/logger.conf


[general]
;
; Customize the display of debug message time stamps
; this example is the ISO 8601 date format (yyyy-mm-dd HH:MM:SS)
;
; see strftime(3) Linux manual for format specifiers.  Note that there is also
; a fractional second parameter which may be used in this field.  Use %1q
; for tenths, %2q for hundredths, etc.
;
;dateformat=%F %T       ; ISO 8601 date format
;dateformat=%F %T.%3q   ; with milliseconds
dateformat=%F %T ←追加

 

extensions.conf

SIPトランクサーバや子機との接続、発着信時の挙動を設定します。

# cp /etc/asterisk/extensions.conf /etc/asterisk/extensions.conf.org

 

# vi /etc/asterisk/extensions.conf

[general]
writeprotect=no
priorityjumping=yes

[inbound]
exten => 042xxx2807, 1, Dial(SIP/20&SIP/21&SIP/22&SIP/23&SIP/40,120,t)
exten => 042xxx2807, 2,Congestion
exten => 042xxx2807, 102,Busy

exten => 042xxx2769, 1, Dial(SIP/20&SIP/21&SIP/22&SIP/23&SIP/40,120,t)
exten => 042xxx2769, 2,Congestion
exten => 042xxx2769, 102,Busy


[outbound-Daihyou]
exten => _0., 1,Set(CALLERID(num)= 042xxx2807)
exten => _0., 2,Dial(SIP/${EXTEN}@siptr,120,T)
exten => _0., 3,Congestion
exten => _0.,104,Busy

exten => _1., 1,Set(CALLERID(num)= 042xxx2807)
exten => _1., 2,Dial(SIP/${EXTEN}@siptr,120,T)
exten => _1., 3,Congestion
exten => _1.,104,Busy
;117等の特番へ外線発信する設定です

exten => _XX, 1,Dial(SIP/${EXTEN},120,T)
exten => _XX, 2,Congestion
exten => _XX, 102,Busy
;xxは内線桁数を表します(=2桁) 桁数が異なる場合は調整して下さい

;パーク保留設定
include => parkedcalls
exten => 701,hint,park:701@parkedcalls
exten => 702,hint,park:702@parkedcalls


[outbound-Kyakusitu]
exten => _XX, 1,Dial(SIP/${EXTEN},120,T)
exten => _XX, 2,Congestion
exten => _XX, 102,Busy
;xxは内線桁数を表します(=2桁) 桁数が異なる場合は調整して下さい

 

 

 

 

# cp /etc/asterisk/sip.conf /etc/asterisk/sip.conf.org

 

sip.conf

「Asterisk」に眠る様々な機能を覚醒させる。子機のアカウントや個別設定もここで行うよ!

勝てるかどうかはランナー次第。

https://wiki.asterisk.org/wiki/display/AST/Core+Configuration

# cat /etc/asterisk/sip.conf



[general]
enabled = yes
allowguest=no
maxexpirey=3600
defaultexpirey=3600
port=15060
bindport=15060
bindaddr=0.0.0.0
tcpenable=yes
udpbindaddr=0.0.0.0:15060
tcpbindaddr=0.0.0.0:15060
srvlookup=yes
disallow=all
allow=ulaw
language=jp
nat=force_rport,comedia

;BLF パーク保留で光らせる
callcounter=yes
busylevel=1

directmedia=yes

register => 0000xxxx:<パスワード>@siptr

;SIP behind NAT
;externhost=sip1.sys-guard.com
externip=150.xxx.xxx.27 ;←●ConoHa Asteriskサーバを指定
localnet=150.xxx.xxx.27/255.255.254.0 ;ConoHa ネットワーク


[siptr]
type=friend
username=0000xxxx
secret=<パスワード>
context=inbound
canreinvite=no
host=trunk2.cldpbx.com
insecure=port,invite
disallow=all
allow=ulaw
directmedia=yes
qualify=yes
nat=force_rport,comedia


;======================================================================
; クライアント子機設定
;=====================================================================

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 代表用子機
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

[20]
type=friend
username=20
secret=<パスワード>
host=dynamic
context=outbound-Daihyou
qualify=yes
nat=force_rport,comedia
sendrpid=pai
subscribecontext=outbound-Daihyou


[21]
type=friend
username=21
secret=<パスワード>
host=dynamic
context=outbound-Daihyou
qualify=yes
nat=force_rport,comedia
sendrpid=pai
subscribecontext=outbound-Daihyou

[22]
type=friend
username=22
secret=<パスワード>
host=dynamic
context=outbound-Daihyou
qualify=yes
nat=force_rport,comedia
sendrpid=pai
subscribecontext=outbound-Daihyou

[23]
type=friend
username=23
secret=<パスワード>
host=dynamic
context=outbound-Daihyou
qualify=yes
nat=force_rport,comedia
sendrpid=pai
subscribecontext=outbound-Daihyou

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 代表用子機 ここまで
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 客室用子機
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[30]
type=friend
username=30
secret=<パスワード>
host=dynamic
context=outbound-Kyakusitu
qualify=yes
nat=force_rport,comedia


[31]
type=friend
username=31
secret=<パスワード>
host=dynamic
context=outbound-Kyakusitu
qualify=yes
nat=force_rport,comedia

 

パーク保留設定

# cat /etc/asterisk/features.conf


[general]
parkext => 700
parkpos => 701-702
context => parkedcalls
parkingtime => 300
transferdigittimeout => 3
parkinghints => yes

 

Asteriskに設定を反映させようね。

# systemctl enable asterisk
# systemctl restart asterisk
# systemctl status asterisk

 

 

子機の設定

GUIである程度設定できますが、パーク保留などで右側の便利ボタンを有効活用するにはプロビジョニングが有効です。

またIP電話機器の納入は十数台超えます、一つ一つ設定するのは大変なのでファイル管理した方が効率的ですし、コンフィグ設定のバージョン管理もできるといった様々なメリットがあります。

 

コールパークの動作

Panasonic KX-UT136用プロビジョニング

WEBサーバ側にあらかじめ設定ファイルを設置しておきます。

 

注意

  • 1行目に”Panasonic~”のコメント
  • 最後に必ず1行の空行が必要

特に最後の空行が忘れがちなので気を付けましょ~!バッドノウハウ炸裂!

 

# vi /var/www/html/KX-UT136N-21.cfg
# Panasonic SIP Phone Standard Format File # DO NOT CHANGE THIS LINE!

# 回線1 ディスプレイネーム
DISPLAY_NAME_1="21"

## SIP1設定
PHONE_NUMBER_1="<電話番号1>"
SIP_AUTHID_1="21"
SIP_URI_1="21"
SIP_PASS_1="<SIPサーバパスワード>"
SIP_PRSNC_ADDR_1="<SIPサーバIP>"
SIP_RGSTR_ADDR_1="<SIPサーバIP>"
SIP_PRXY_ADDR_1="<SIPサーバIP>"
SIP_OUTPROXY_ADDR_1="<SIPサーバIP>"
SIP_SVCDOMAIN_1="<SIPサーバIP>"

# SIP1ポート
SIP_RGSTR_PORT_1="15060"
SIP_PRXY_PORT_1="15060"
SIP_PRSNC_PORT_1="15060"
SIP_OUTPROXY_PORT_1="15060"
SIP_SRC_PORT_1="15060"

# SIP1 NATキープアライブ秒数
PORT_PUNCH_INTVL_1="20"

# SIP1 インバウンド設定 トーン信号はRTPストリームにエンコードされる
OUTBANDDTMF_1="N"


#HTTPD 設定 常に起動
HTTPD_PORTOPEN_AUTO="Y"

## ボタン確認音 無音
KEY_PAD_TONE="N"

## NTP設定
NTP_ADDR="ntp.jst.mfeed.ad.jp"
TIME_ZONE="540"


## パーク保留設定
CALLPARK_KEY_ENABLE="Y"
CALLPARK_AREAKEY_ENABLE="Y"
CALLPARK_METHOD="2"

# 子機からSUBSCRIBEをサーバへ送信 60秒
SIP_SUBS_EXPIRE_1="60"

NUM_PLAN_PARKING="700"
NUM_PLAN_PARK_AREA="701"
NUM_PLAN_PARK_AREA="702"

FLEX_BUTTON_FACILITY_ACT21="X_PANASONIC_IPTEL_CONTACT"
FLEX_BUTTON_FACILITY_ARG21="701"
FLEX_BUTTON_FACILITY_ACT22="X_PANASONIC_IPTEL_CONTACT"
FLEX_BUTTON_FACILITY_ARG22="702"
FLEX_BUTTON_FACILITY_ACT23="X_PANASONIC_IPTEL_CONTACT"

※最終行に空の1行が必要

 

子機側を設定します

 

子機電話機を初期化します

  • 子機の【設定】→  #136 → 【工場出荷状態】→ 【決定】→ 【はい】→【決定】→ 【はい】

初期化と再起動が行われます。

IPアドレスの固定化と確認

  • 【設定】→ 【ネットワーク設定】 → 【ネットワーク】→ 【アドレス自動取得】

IPアドレスを取得できます。

  • 【設定】→ 【インフォメーション表示】→ ▼ボタンを一度押す → IPアドレスを確認

 

子機WEBサーバの起動

  • 【設定】→ 【ネットワーク設定】 → 【内臓WEB】→ 【オープン】

子機のWEBサーバが起動される

 

アクセスします。

http://子機IP

  • 初期ユーザ:admin
  • 初期パスワード:adminpass

 

プロビショニング

  • 【保守】>> 【プロビジョニング保守】>> 【スタンダードファイルURL】項目にプロビショニングファイルのアドレスを入力する

例)http://WEBサーバIP/KX-UT136N-21.cfg

を入力して、【登録】をクリックして10秒程度で子機に再起動が行われれば成功です。

 

パーク保留で光るよ!

受話器を取るとパーク保留ボタンが出現!

 

 

仕様上の注意点

Asteriskサービスを再起動させると子機の赤いランプが点灯しなくなります。その場合は子機もリスタートさせると良いです。

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)