Asterisk dialplan configuration

From 탱이의 잡동사니
Revision as of 13:26, 8 January 2015 by Pchero (talk | contribs)
Jump to navigation Jump to search

개요

Asterisk Dialplan 설정 법 설명.

Dialplan syntax

Asterisk 에서 Dialplan 을 설정하는 파일 이름은 extensions.conf 이다.

  • extensions.conf
    • 보통은 /etc/asterisk/extensions.conf 에 위치해 있다.
    • 하지만 소스로 설치를 하거나 다른 방법으로 설치하게 되면 다른곳에 파일이 위치할 수도 있다.
    •  ex) /usr/local/etc/asterisk, /opt/etc/asterisk 

Dialplan 은 크게 4가지 컨셉으로 구성되어 있다.

contexts, extensions, priorities, applications

Context

Context 는 쉽게 말해서 객체지향의 Class 와 비슷한 개념으로 볼 수 있다.

Context 를 생성할 때는 Context 이름을 중괄호([])로 감싸야한다. 이름에 사용할 수 있는 문자는 A-Z, a-z, 0-9, -, _ 이다.

[incoming]
  • Context 생성시 사용가능한 문자 길이는 최대 79 자 이다. (80 characters - 1 terminating null).

Context 에는 특별히 사용되는 특수 Context 두 가지가 있는데, [general] 과 [globals] 이다. [general] 섹션은 일반적인 Dialplan 설정들, [globals] 섹션에는 전역 Dialplan 설정들이 있는 Context 이다. 새로운 Context 생성시 [general], [globals], [default] 이름은 피하도록 하자. 이 외의 다른 이름은 전부 사용 가능하다.

채널을 설정할 경우(sip.conf, iax.conf, chan_dahdi.conf 등등..) 필수 입력 항목중에 context 항목이 있다. Context 는 호간의 연결 성립시, 채널이 동작하게되는 Dialplan 의 시작점이다. 즉, Asterisk 에 등록된 채널 A 가 있을 경우, 만약 A 로 전화가 걸려왔을 때, 어떤 방식으로 전화가 흘러가게끔 할 것인지를 결정하게 되는 것이다.

  • 전화(Connection)가 걸려왔을 경우 정해진 수순에 따라 전화가 흘러가게끔 하는 것, 이것이 Dialplan 이다.
  • ex) 10초동안 응답이 없을 경우 자동 IVR 연결, 10초 동안 연결이 없을 경우 휴대폰 전화로 연결 등등..

Context 사용시 주의해야 할 점은 보안이다. 정확한 방법으로 Context 을 설정한다면 정해진 사용자에게 정해진 기능을 제공할 수 있다. 하지만 엉뚱한 방법으로 Context 를 설정하게 되면, 엉뚱한 기능들이 동작할 수 있다. 게다가 Asterisk 를 위시한 많은 IP-PBX 시스템은 주요 해킹 공격 대상이 된다. 일반적인 Web 과 달리 통화요금 과금과 같이 돈이 관련된 부분이기 때문이다. 때문에 Context 와 같은 Dialplan 설정시 많은 주의를 요한다.

  • ex) 국제전화 사용

Extensions

Extensions 흔히 전화번호로도 번역이 된다. 하지만 Asterisk 에서의 Extensions 는 더 강력한 기능을 가진다.

Asterisk 에서는 각각의 Context 마다 하나 혹은 다수의 Extensions 를 가질 수 있다. 해당 Extension 이 동작할 경우(전화가 걸려온 경우), Asterisk 는 해당 Extension 에 설정된 Dialplan 을 수행하는 것이다.

Extension 설정시, exten 구문으로 시작하게 된다.

exten =>

Extension 은 세가지 구성요소들을 가진다.

  • name(or number)
  • priority
  • application

이 구성 요소들은 쉼표(,)로 구분된다.

exten => name, priority, application()


참조

Asterisk: The Definitive Guide, 4th Edition