Asterisk 수신거부 코드 – DB연동

asterisk 11 버전에서 특정번호를 수신거부하는 코드입니다.

수신거부하는 번호를 DB테이블에 저장하고 관리합니다.

 

테이블스키마

CREATE TABLE `ban` (
`phone` VARCHAR(32) NOT NULL COMMENT '전화번호',
`reg_date` DATETIME NOT NULL COMMENT '등록일',
INDEX `phone` (`phone`)
)
COMMENT='수신거부 전화번호'
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

 

extensions.conf

[inbound]
exten => 07010002000,1,Answer
exten => 07010002000,n,NoOp("caller id: ${CALLERID(number)}")
exten => 07010002000,n,MYSQL(Connect connid 호스트 유저 비밀번호 데이터베이스명)
exten => 07010002000,n,MYSQL(Query resultid ${connid} SELECT COUNT(*) AS cnt_blockcaller FROM ban WHERE phone='${CALLERID(number)}')
exten => 07010002000,n,MYSQL(Fetch fetchid ${resultid} cnt_blockcaller)
exten => 07010002000,n,MYSQL(Clear ${resultid})
exten => 07010002000,n,MYSQL(Disconnect ${connid});

exten => 07010002000,n,GotoIf($["${cnt_blockcaller}" != "0"]?inbound,07010002000,blockcaller)

.
.
.

exten => 07010002000,n(blockcaller),NoOp("blockcaller!!!")
exten => 07010002000,n,Hangup()

 

 

fax – res_fax_digium 설치 및 라이선스 획득

res_fax_digium 모듈 설치

 

asterisk 11.7.0을 기본설치하면 fax 를 사용하는 모듈이 없으므로 서비스가 불가능합니다.

fax를 서비스하기 위해서 해당 모듈을 다운로드 하고 라이선스를 등록하는 방법을 알아봅니다.

 

1. 라이선스

https://my.digium.com/en/login/register/ 로 이동해서 이메일 주소를 이용해 사용자 등록을 합니다.

에메일주소 인증을 해야 하기 때문에 사용하는 이메일을 정확히 입력합니다.

인증이 끝나고 http://www.digium.com/en/products/software/fax-for-asterisk 페이지로 이동합니다.

윗쪽에 Get 1 Free License 를 찾아서 클릭합니다.

fax
Checkout 을 누르면 0$에 구매가 가능합니다.

구매를 완료하면 주문내역 메일이 오고 잠시후에

Digium Free Fax For Asterisk License for Order: W???????? 이런제목의 메일이 오는데

내용을 살펴보면

Hello Digium Customer,

 

The following is your Free key for one (1) channel of Free Fax For Asterisk:

Key :

F??-N?????????

 

Instructions for using your key may be found at:

http://downloads.digium.com/pub/telephony/fax/README

 

If you require additional channels of fax capability within Asterisk, or if you require technical support, you may purchase paid keys of the Fax For Asterisk product from Digium.  Digium does not provide technical support of any kind for Free Fax For Asterisk.

Thank you for using Asterisk.

 

저기 중간에 키가 무료 라이선스 키입니다.

라이선스키를 얻었으면 등록을 시작합니다.

 

# cd /root
# wget http://downloads.digium.com/pub/register/x86-32/register
# chmod 500 register
# ./register

Digium Product Registration – Version 3.0.5
Copyright (C) 2004-2007, Digium, Inc.
Use the ‘-l’ option to see license information for software
included in this program.

Please select a category

1 – Digium Products
2 – Cepstral Products

0 – Quit

Your Choice: 1

 

You selected 1, Digium Products
Please select a product

1 – Asterisk Business Edition
2 – Asterisk Business Edition C Expansion
3 – Asterisk For Smart Cube
4 – Asterisk For Smart Cube Expansion
5 – G.729 Codec
6 – High Performance Echo Can
7 – Skype For Asterisk
8 – Fax for Asterisk
9 – Free Fax for Asterisk
10 – Vestec Speech Engine
11 – Digium Phone Module for Asterisk

0 – Quit

Your Choice: 9

 

You selected 9, fax for Asterisk

Please enter your Key-ID: (여기에 키를 입력)

 

2. res_fax

# wget http://downloads.digium.com/pub/telephony/fax/res_fax/asterisk-1.6.2.0/x86-64/res_fax-1.6.2.0_1.3.0-x86_64.tar.gz
# tar xfz res_fax-1.6.2.0_1.3.0-x86_64.tar.gz
# cd res_fax-1.6.2.0_1.3.0-x86_64
# cp res_fax.so /usr/lib/asterisk/modules
# cp res_fax.conf /etc/asterisk/

 

3. 파일다운로드(res_fax_digium)

 

fax

 

http://downloads.digium.com/pub/telephony/fax/res_fax_digium/asterisk-11.0/x86-64/

위 링크에서 시스템에 맞는 파일을 다운로드 합니다.

이전에 포스팅 대로 ubuntu 12.04버전이라면 res_fax_digium-11.0_1.3.1-generic_64.tar.gz 파일을 다운로드 합니다.

 

4. 압축해제/복사

# wget http://downloads.digium.com/pub/telephony/fax/res_fax_digium/asterisk-11.0/x86-64/res_fax_digium-11.0_1.3.1-generic_64.tar.gz
# tar xfz res_fax_digium-11.0_1.3.1-generic_64.tar.gz
# cd res_fax_digium-11.0_1.3.1-generic_64
# cp res_fax_digium.so /usr/lib/asterisk/modules
# cp res_fax_digium.conf /etc/asterisk/

asterisk 11.7.0 소스 컴파일 및 라이브러리 설치 등

asterisk 11.7.0 소스 컴파일 및 라이브러리 설치

 

asterisk 11.7.0 을 설치하기 위해 소스를 다운로드하고 컴파일을 합니다.

홈페이지는 http://www.asterisk.org/ 이곳이며,

현재 공식버전은 13 까지 나왔습니다만, 여기서는 11.7을 기준으로 합니다.

 

asterisk 11.7.0

 

1. asterisk 11.7.0 다운로드

모든 버전의 asterisk를 확인하기 위해서 다운로드 페이지의 All Asterisk Versions 를 클릭합니다.

http://www.asterisk.org/downloads/asterisk/all-asterisk-versions

필요한 버전을 찾아 설치할 서버에 다운로드 합니다.

 

#cd /usr/local/src

#wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11-current.tar.gz

#tar xfzp asterisk-11-current.tar.gz

 

2. 설치시 필요한 패키지 추가설치

apt-get install ncurses-base ncurses-bin ncurses-term libncurses5-dev

apt-get install libxml2 libxml2-dev

apt-get install sqlite3 libsqlite3-dev

 

3. 소스 컴파일

#./configure

asterisk2

이렇게 나오면 성공~

#make

#make install

+—- 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

 

4. 시작

#asterisk -cvvv

 

5. /etc/init.d/asterisk 서비스 등록

설치폴더에 보면 contrib/init.d/ 가 있는데 살펴보면 rc.debian.asterisk 파일이 있다

이 파일을 /etc/init.d/로 복사를 한다.

#cp contrib/init.d/rc.debian.asterisk /etc/init.d/asterisk

#chmod 755 /etc/init.d/asterisk

#/etc/init.d/asterisk start

 

asterisk 11 운영을 위한 Ubuntu 12.10 설치

asterisk 환경을 위한 우분투 12.10 설치

 

asterisk-ubuntu

 

asterisk를 Centos 5.x, Centos 6.3, ubuntu 12.10 등에 설치해 보았는데

패키지로 설치하기에는 우분투 12.10 의 apt-get 이 너무 편했으므로 우분투로 운영을 하기로 했습니다.

기존 centos만 사용하다가 우분투로 패키지 관리를 하니 신세계네요

 

1. 우분투 12.10 LTS 파일 받기

– http://ftp.daum.net/ubuntu-releases/12.10/ubuntu-12.10-server-amd64.iso

– 위 경로로 iso 파일을 받아 CD로 굽거나 부팅가능한 USB를 생성시켜준다. USB 생성시에는 아래 URL에서 프로그램을 다운받아 사용해도 된다.

http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/

– OPENSSH, LAPM 패키지만 선택 후 설치를 진행

– 설치시에는 한국어 지원을 선택하지 않았습니다. 개발을 UTF-8 환경으로 하기 때문에 필요가 없었습니다.

 

2. root 로 접속하기 위해서 비번변경, 접속

– sudo passwd root

– logout

 

3. ssh 포트 변경

– 기본포트인 22번을 그냥 놔두면 귀찮은 일이 생기므로 일단 변경한다.

– vim /etc/ssh/sshd_config

– Port 2222

– /etc/init.d/ssh restart

– 방화벽에 해당 포트를 등록합니다.

#ufw allow 2222

 

4. 리눅스 사용자/그룹 추가

– groupadd erpgroups -g 1002

– useradd asterisk -u 1001 -g 1002

 

5. 추가 패키지 설치

– asterisk 운영과 함께 개발한 그룹웨어를 운영하기 위한  부분으므로 생략 가능합니다.

– apt-get install build-essential

– apt-get install imagemagick

– apt-get install php-pear php5-mcrypt php5-dev

– php용 메일파서(mailparse) 설치

a) wget http://pecl.php.net/get/mailparse-2.1.6.tgz

b) cd mailparse-2.1.6

c) phpize

d) make && make install

e) vim /etc/php5/mods-available/mailparse.ini

+ 아래 내용 추가

+ extension=mailparse.so

f) cd /etc/php5/conf.d

g) in -s ../mods-available/mailparse.ini 30-mailparse.ini

+ 링크명을 30-mailparse.ini 으로 하는 이유는 해당 익스텐션을 가장 마지막에 로드하기 위해서이다. 30- 은 적절하게 늘려야한다.

+ mailparse 라이브러리가 사용하는 함수가 있는데, 메일파서가 먼저 로드되면 해당 라이브러리를 찾을 수 없다는 오류가 발생하여 php가 중단된다

6. 아파치 설정

– apache2.conf를 열어서 ServerName abc.domain.com 추가(해당 시스템에 맞는 도메인을 추가)합니다.

– vim /etc/apache2/envvars

a) export APACHE_RUN_USER=asterisk

b) export APACHE_RUN_GROUP=erpgroups