'Asterisk'에 해당되는 글 5건

  1. 2010.11.25 CentOS 5.5 + Asterisk 1.8 구축 2
  2. 2010.11.25 CentOS 5.5 + Asterisk 1.8 구축 1
  3. 2009.09.11 Extension 명과 패턴
  4. 2009.09.11 Sip.conf Configuare 설명
  5. 2009.06.15 [Asterisk] IF 함수
2010. 11. 25. 14:17

PBX 서버를 구축하기 전 리눅스 환경설정을 먼저 설정합니다.

 

1. 패키지 업데이트

: 설치된 패키지를 업데이트를 해줍니다.

$> yum -y update

 

2. 리눅스 text모드로 실행 ( X 윈도우 미사용 )

: inittab을 설정을 변경하여 부팅시 text 모드로 부팅되게끔 수정합니다.

$> vi /etc/inittab

id:5:initdefault: -> id:3:initdefault: 로 변경

 

3. 터미널 접속시 한글설정

: 기본적으로 설치시 한글은 utf-8로 지정되어 있어 euc-kr을 쓰는 터미널 프로그램에서는 한글이 깨져 나옵니다.

해서 시스템 자체의 한글 설정을 euc-kr로 변경해줍니다.

$> vi /etc/sysconfig/i18n

LANG="ko_KR.eucKR" 
SUPPORTED="ko_KR.eucKR:ko_KR:ko" 
SYSFONT="lat0-sun16" 
SYSFONTACM="8859-15"

 

4. 필요한 추가 패키지 설치

: yum을 이용하여 필요한 패키지를 설치하여 줍니다.

(xinetd, vsftpd, lm_sensons, sysstat etc)

 

5. ntsysv 를 이용하여 불필요한 패키지 비활성화 시켜줍니다.

 

이 정도까지 기본 설정은 완료된 것으로 보입니다.

 

추가 설정은 각자 자신의 판단으로 하면 될 것 같습니다.

Posted by Kimos
2010. 11. 25. 11:05

CentOS 5.5에 Asterisk 1.8을 구축해보기로 했습니다.

 

지금 예상으로 추가로 MySQL 최신 버전 설치와 Java 및 녹취 관련 MP3를 같이 해볼까 합니다.

 

우선적으로 구축을 위해서는 OS가 먼저 설치가 되어야 겠죠….

 

OS의 선택은 CentOS 5.5 버전으로 선택하였습니다.

 

Fedora보다 안정성 부분에서 더 낳다는 판단에 의해 결정하였습니다.

 

추후 Ubunto에도 한번 설치를 해볼 예정입니다.

 

파티션과 설치 패키지는 각자 사용자에 맡기는게 맞는거 같습니다.

 

저의 경우 파티션은 LVM과 RAID를 쓰지 않고,

 

직접 파티션을 나눴습니다. 크게 /boot와 / 그리고 녹취 부분과 제 개인적인 부분으로 나누어 설치를 하였고,

 

설치 패키지 역시 필요없는 부분과 제가 직접 소스 설치를 할 패키지들도 제외시켰습니다.

 

위 부분이 지나가면 설치가 완료 되는게죠….

 

부가적으로 설정한 환경 설정 역시 어느 정도는 패스하고 진행해보겠습니다.

Posted by Kimos
2009. 9. 11. 12:00

Extension 명과 패턴

Dialplan Extension "412" 나 "0" 과 같이 숫자일 수 있다. 이것들은 "john"이나 "A93*"와 같은 알파벳번호 일 수 있다. 비록 전형적인 전화는 "john"으로 불리는 extenson에 전화할 수 없지만, 종종 당신의 Dialplan 로직은 하나의 exteionsion에서 다른 extension으로 점프를 포함한다. 그리고 이러한 점프를 위해 비록 직접 전화걸지는 않지만 당신이 좋아하는 어떤 이름으로 extension 명을 정의한다.

물론 누름버튼 전화기는 0에서 9의 숫자만 가지지는 않는다 그들은 *(별)과 #(샾)을 자기고 있다. (물론 별이나 샾이라는 이름은 당신이 사는 곳에 따르지만) 그리고 몇몇의 누름버튼(DTMF) 전화기는 추가적인 A, B, C, D 4개의 숫자를 가지고 있다. 만약 당신이 조직에 이와같은 수화기를 사용한다면, 이것은 당신의 특별한 목적으로 이러한 추가적인 버튼의 사용을 금지하는 않는것이다.

 

Extension Patterns

Extension 이름은 하나의 extension 번호를 제한하지 않는다. 하나의 extension은 또한 여러 패턴과 연관될 수 있다. extensions.conf 파일에서 extenson명은 '_ ' 언더바로 시작되면 패턴이다. extenson 패턴안에는 아래의 문자들이 특별한 의미를 가지고 있다.

X             0~9 사이의 특정 숫자

Z             1~9 사이의 특정 숫자

N             2~9 사이의 특정 숫자

[1237-9]  []안의 숫자나 문자 (이 예는 1,2,3,7,8,9)

.              하나 이상의 문자

!              없거나 하나이상의 문자

_61XX         61로 시작되는 4자리 번호

_7[1-3]XX   71, 72, 73으로 시작되는 4자리 번호

_7[04-7]XX  70, 74, 75, 76, 77,로 시작되는 4자리 번호

_9011.         9011로 시작되는 번호, 9100 미포함.

_9011!         9011로 시작되는 번호 , 9011 포함.

_#              하나의 # 키

모든 번호에 대응하는 패턴으로 _.을 사용하지 말라. i,t,h등과 같이 Asterisk의 특별한 extention이다. 대신 _X. 나 _X를 사용해라.

Posted by Kimos
2009. 9. 11. 11:46

SIP Configuration [general]
sip.conf의 [general] 색션은 아래의 변수를 포함한다.
allow = <codec> : 선택할 수 있는 코덱 ( 다른 코덱을 allow 하기 전에 disallow= all 을 사용해라)

disallow = all : 모든 코덱을 불가로 한다(global 설정)

allowexternalinvites =yes|no : 비 로컬 메인에 대해서 INVITE와 REFER를 허가/불가 한다. 기본 yes (ver1.2부터)

allowquest = yes|no : Guest 콜을 허가/불가한다. 기본 yes

allowoberlap = yes|no : overlap 다이얼링 지원을 허가/불가 한다. 기본 yes

autocreatepeer = yes|no : yes면 누구나 peer로서 로그인 할 수 있다. ( 자격의 비확인, SER와의 연동에 유용) 기본 no

autodomain = yes|no : 도메인 리스트에 로컬 호스트명과 로컬 IP 주소를 추가할 수 있는 지의 여부. 기본 no( ver1.2.x)

bindaddr = IP_Address : 리슨하기 위해 바인딩할 IP 주소, 기본 0.0.0.0(모든 네트워크 인터페이스)

bindport =Number : 리슨하기 위해서 바인딩할 UDP 포트. ver1.0.x부터 사용 기본 5060

callerid = <string> : 사용가능한 정보가 없을때 CallerID로 사용할 내용 기본 asterisk ver.1.0.9

canreinvite = Update|yes|no (global 설정) 몇가지 이유로 기본 yes임.

checkmwi = Number : global 간격(초) 메일박스를 확인할 기본 10초 v1.2.X

compactheaders = yes|no : SIP 메세지를 Compact 헤더로 보낼질 여부 기본 no v1.2.x

context = <contextname> : 기본 context로 endpoint가 context를 가지지 않을 때 사용. endpoint의 context 색션은 endpoint에서 목적지로 콜을 라우트 하기 위해서 사용된다. context의 내용은 extensions.conf에 위치한다.

defaulttexpirey = Number : 인바운드/아웃바운드 등록의 기본 기속시간(초) 기본120초

dtmfmode = inband|info|rfc2833 (global 설정) 기본 rfc2833

domain = domains : Asterisk가 책임지는 도메인들의 리스트 콤마로 분리됨 ver1.2.x

dumphistory = yes|no : SIP 통화의 내역의 덤프를 지원할 지 여부 기본 no ver1.2.x

externip = IP_Adderss , HostName : 만약 Nat 뒤에 있다면 SIP 메세지 내에 넣을 주소값. 만약 호스트 명이 사용되면 sip.conf를 읽을때 한번 관련 주소를 찾는다. 만약 소스트명에 대해 동적인 주소를 원하면 externhost를 사용해라.

externhost = hostname.tld : ver1.2.x

erternrefresh = Number : 얼마나 자주(초) externhost 내 입력된 값으로 DNS 찾기를 시도할 지 기본 10초 ver1.2.x

ignoreregexpire = yes|no : 등록의 지속시간이 지난 정보라도 peer의 Contact정보를 사용할지 여부 기본 no

language = <string> Playback()/Backgrou()에서 사용할 기본언어.

localnet = Net_Address/NETmask : 로컬 네트워크와 마스크

fromdomain = <doamin> : sip ua<clinet>로서 동작할 때 SIP 메세지 내의 from:에 설정할 domain

insecure = very|yes|no|invite|port : peers의 연결을 어떻게 다룰지의 여부 기본no(모든 연결 인증) (invite, port 는 v1.2.x에 추가)

maxexpirey = Number : 우리가 허용할 registration이 초대 크기 기본 3600초

musicclass = musiconhold.conf의 특정 class중 하나.

musdiconhold = musicclass와 동일

nat = yes|no : Asterisk 1.0.x는 이 현재 이값을 가질 수 있다. : yes|no|never|route. 기본 no는 rfc3581를 사용하는것을 의미한다.

notifyminetype = mediatype/subtype : Online 메세지의 voicemail에 사용되지는 MWI NOFITY의 mine 형식의 덮어쓰기를 허용하다. 가능한 MINE 형식은 여기에서 찾을 수 잇다. 기본 application/simple-message-smummary(ver1.2.x)

notifyringing = yes |no : RINGING 상테에서 구독을 알린다. 기본 yes

outboundproxy = IP_Addess | DNS SRV name(sip나 udp 프리틱스틑 제거한다.) 아웃바운드 SIP 프록시의 SRV name, hostname, IP 주소 ver1.2.x

outboundproxyport = Number : 아웃바운드 SIP 프록시의 UDP 포트 번호

pedantic = yes|no : CAll-ID, multi SIP 해더, URI-encoded 헤더로 동료를 확인 기본 no

port = <portno> : 기본 peer의 sip 포트 (이것은 리슨을 위해 Asterisk가 사용하는 포트는 아니다. bindport를 참조)

progressinband = never |no|yes ; 만약 항당 인벤드 링이 만들어진다면. 기본 never

promiscredir = yes|no : 203 Redirect를 지원 기본 no

qualify = yes|no|milisecords : client의 도달여부 확인 만약 yes이면 매 2초마다 확인 기본no

realm = 내 realm (당신을 위해 Asterisk로부터 인증 realm를 변경해라. v1.x)

recordhistory = yes|no : SIP 통화 내역의 로그 기본 no

regcontext = context : SIP Register에 대한 대답으로 사용하게될 기본 context.

register => <username>:<password>:[authid]@<sip client/peer id in sip.conf>/.contact> : SIP 제공자에 등록

registerattempts = Number :  포기하기 전에 SIP 등록을 보낼 횟수  기본 0 ver1.2.x

registrtimeout = Number : SIP register로 부터 응답을 기다리는 시간 (초) 기본 20 ver1.2.x

relaxdtmf = yes|no : 기본 no

rtautoclear = yes|no|number : 친구의 자동 연장을 만든다 yes면 120 초이다. 기본 yes ver1.2.x

rtcachefriends = yes|no : 설정 파일에서 추가된 친구와 같이 내부의 리스트에 그들을 추가하는 것에 의해 실시간 친구를 보관한다. 기본 no

rtpholdtimeout = Number : Hold된 호를 종료하기 전에 비활성의 시간(초) 기본 0(제한없음) ver1.2.x

rtpkeepalive = Number : 초 해당 연결에 다른 RTP 왕래가 없을때 보내는 Keepalive 패킷의 간격 기본 0 (RTP Keepalive 없음) ver1.2.x

rtptimeout = Number : 연결종료로 연결을 분류하기 전에 RTP 왕래의 대기시간 기본 0(no RTP 시간초과) ver1.2.x

rtupdate = yes|no : 실시간 지원을 사용할 때 DB에 Registry 갱신을 보낸다. 기본 yes v1.2.x

sendrpid = yes|no : Remote=part-id SIP 헤드를 보낼지의 여부 기본 no

sipdebug= yes |no :sip.conf가 로드될며 SIP 디버가를 가능할게 할지 여부 기본 no ver1.2.x

srvlookup = yes|no : 콜에서 DNS SRV 찾길르 사용할 지 여부 기본 no

tos = <value> : 나가는 미디어 스트림을 위해 Qos 값을 설정한다.

trustrpid = yes|no : Remote=part-id SIP 헤드를 신뢰 할지 여부. 기본 no

useclientcode = yes|no 만약 yes이면 CDR에 콜 발생자는 x-clientcode SIP 헤더에 술되어진 어떤것이는 변경된다. 기본 no

useregphone = yes|no : ";user=phone'를 URI에 추가할 지 여부 기본 no (ver.1.2x)

useragent = <string> ; "User-Agent"해더를 변경 기본 asterisk

videosupport = yes|no : SIP video의 지원 여부  기본 no

vmexter = <string> : mailbox에 도달하기 위한 Dialplan extension 기본 asterisk ver1.2.x

callevents = yes|no : 호가 put on/ off hold 될때 AMI에 이벤트를 보낼지 여부

 

SIP configuration - peers and clients

이 값들은 각 SIP Peer정의를 위해서 설정되어질 수 있다.

기술되지 않으면 설정 값들은 peer와 user 동시에 사용된다.

 

accountcode = <string> : 사용자는 accountcode와 관련된다. Asterisk billing을 봐라.

allow = <codec> : 선택할 수 있는 코덱 ( 다른 코덱을 allow 하기 전에 disallow= all 을 사용해라)

disallow = all : peer과 user의 모든 코덱을 불가로 한다

allowgest = yes|no : guest 호를 허용할지 거부할지 여부

amaflaqs : CDR 레코드를 위한 카테고리. default, omit, billing, documentation 을 선택해라 Asterisk billing을 봐라.

astdb :  Asterisk DB에 값을 넣는것을 나타낸다.

auth = <authname> : Digest username 해더와 관련된 값.

callerid =<strig> 값이 없을때 사용하는 Caller ID 정보 기본 astrisk

call-limit = Number : 이 user/peer을 통한 동시콜의 수

callgroup = num1, num2-num3 :  이 장치를 사용할 콜 그룹 정의

callingpres = number |descriptive_text : 콜에 Call-ID 보여준다. 가능한 설명값은 allowed_not_screened, allowed_passed_screen, allowed_failed_screen, allowed, prohib_not_screened, prohib_passed_screen, prohib_failed_screen, prohib, and unavailable 기본은 allowed_not_screened

canreinvite = update|yes|no : 만약 client가 SIP re-invite를 지원한다면 기본 yes

context = <context_name> : 기본 user, 이 SIP user 정의로 부터 인바운트 호에대한 context. peer이면 SIP peer정의로 부터의 아웃바운트 콜을 위한 Dialplan의 context.  만약 friend이면 SIP 엔트리 정읠로 통한 인아웃바운드 가 사용한 context. 만약  type=user가 인바운드호와 매치되지 않으다면 그땐 type=peer나 type=friend가 만약 host=에 정의된 hostname이나 IP address 와 매치된다면 매치될 것이다.

defaultip = 내개의 .가 있는 IP_Address : 기본 IP 주소는 동적으로  host =에 기술됨 client가 어떤 다른 IP 주소로 등록도지 않는다면  가능한 값은 type=peer 이다.

dtmfmode = inband|info|rfc2833 : 어떻게 dtmf 시그널을 다룰지 기본 rfc2833

peer에 콜이 들어올때 callerID 대신 from에 넣을 유저를 기술한다. 유효값은 type=peer일때

fromdomain = <domain> : peer에 콜이 들어올때 SIP 메세지네의 From의 기본 값을 설정. type = peer나 [general] 색션일때 가능

fullcontact = <sip:uri_contact> : 실시간 peer를 위한 SIP URI contact. 실시간 peers 만 가능

host = dynamic|hostname|IPAddr : 어떻게 클라이언트를 찾을가  IP 나 host 명. 만약 당신 자신의 폰을 등록하기 원하면 호스트 IP 대신 dynamic 키워드를 사용한다.

incominglimit 와 outgoinglimit = Number : type= peer일 때  SIP 클라이언트의 동시 콜의 수를 제한한다.

insecure : very|yes|no|invite|port : 어떻게  peer의 연결을 다룰지 기술. 기본no (모든 연결 인증) (invite와 port는 ver1.2.x에 추가한다.)

ipaddr: peer의 IP 주소. 실시간 peer만.

language : indication.conf의 언어코드 정의. 프롬프트 언어 정의

mailbox = mailbox : type = peer만 voiceamil의 extension

md5secret : MD5-Hash

musicclass = musiconhold.conf에 기술된 classes의 하나

musiconhold = SIP 폰으로부터의 호에 musiconhold를 설정. 다이얼 계획의 Dial 명령보다 더 높은 순위에 SetMusicOnHold이 요구된다.

name = <name> : 실시간 peer의 이름 실시간 peer만 유효함.

nat = yes|no : 이 값은 방화벽 뒷단의 클라이언트를 위해 Asterisk의 동작을 변경한다. 만약 클라이언트가 외부에 있고, Asterisk가 Nat 내부에 잇다면 소용없다. ver1.0.x의 nat가 가질수 있는 값은 =yes|no|never|route.  기본 no 는 rfc3581을 사용한다.

outboundproxy = IP_Address 나 DNS SRV 이름: 아웃바운드 SIP 프록시SVR 이름. 호스트명, IP 주소.

permit, deny, mask : IP 주소나 네트워크 제한.

pickupgroup : *8을 사용하는 사용자 호의 pickup Group

port :클라이언트 SIP 포트

progressinband = neve|no|yes : 만약 항상 인벤드 ringing을 만들면. 기본 never

promiscredir = yes|no :  203 Redirect를 지원 기본 no

qualify = yes|no|miliseconds : client의 도달여부 확인 만약 yes이면 매 2초마다 확인 기본no

type= peer일때

regexten =

reqsecond = 초 : SIP REGISTER 간의 초 실시간 peer 엔트리에서만 유효.

restrictcid = yes/no callerid제한을 갖는다. CallerID를 감추기 위해서 사용. 이것은 동작하지 않는다. 이값은 .v1.2.x에서 유효하지 않다.

rtpkeepalive = Number : 초 해당 연결에 다른 RTP 왕래가 없을때 보내는 Keepalive 패킷의 간격 기본 0 (RTP Keepalive 없음) ver1.2.x type = peer일때

rtptimeout = Number : 연결종료로 연결을 분류하기 전에 RTP 왕래의 대기시간 기본 0(no RTP 시간초과) ver1.2.x type =peer일때

rtpholdtimeout = Number : Hold된 호를 종료하기 전에 비활성의 시간(초) 기본 0(제한없음) ver1.2.x

secret : 만약 SIP 서버로 동작한다면, 이 SIP 클라이언트는 password를 사아ㅛ해 로그인 해야 한다. 만약 SIP INVITE 인증을 요구하는 원격의 SIP 서버에 SIP 클라이언트로서 행동하면 이 필드는 원격의 SIP tjqjdp SIP INVITE인증에 사용한다.

sendrpid =yes|no : 만약 Remote-Praty_id SIP 해더가 보낸다면 . 기본 no

setvar = variable = value :  이 peer/user로 부터 모든 콜에 설정하기 위한 채널 값

subscribecontext = <context_anem> : SIP SUBSCRIBE 요청을 위한 특정 context설정

trustrpid = yes|no : 만약 Remote-Party-ID SIP 해더가 보낸다면 . 기본 no

type = user |peer|friend : 클라이언트와의 관계 - 아웃바운드 제공자나 클라이언트

useclientcode = yes|no 만약 yes이면 CDR에 콜 발생자는 x-clientcode SIP 헤더에 술되어진 어떤것이는 변경된다. 기본 no

useregphone = yes|no : ";user=phone'를 URI에 추가할 지 여부 기본 no (ver.1.2x)

username = <usernaem[@realm]> : 만약

vmexten = <string> mailbox에 도달하기 위한 Dialplan Extention. 기본 asterisk. type =peer


 
Posted by Kimos
2009. 6. 15. 09:40


IF문
 => IF문 조건으로 분기
 => 제일 많이 쓰이고 있는 것은 GotoIf문

Asterisk func if
Synopsis
 Conditional: Returns the data following '?' if true else the data following ':'


Description
 IF(<expr>?[<true>][:<false>])


Notes
*CLI> show function IF
Resides in func_logic.so module


Return value
Returns the resulting string.


Example
 exten => s,1,Set(foo=${IF($[ ${x} = 7]?tval:fval)})


See also
Asterisk cmd GotoIf   => IF문으로 분기하여 Goto문 실행
Asterisk cmd ExecIf   => IF문으로 분기하여 실행
Asterisk func iftime: IFTIME function  => 시간으로 IF문 분기
Asterisk cmd GotoIfTime: GotoIfTime  => 시간으로 IF문 분기하여 Goto문 실행

Posted by Kimos