Asterisk hints

From 탱이의 잡동사니
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Overview

Asterisk hints 내용 정리

Basic

Asterisk 는 SIP 서버이며, Event-Notification 을 위한 SUBSCRIBE/NOTIFY 매커니즘을 지원한다.

Asterisk 는 내부적으로 장치 디바이스(전화기), 음성 사서함, 큐 등의 상태 정보를 관리한다. SIP 프로토콜은 기본적으로 event-notification 을 지원한다. Asterisk 는 이를 이용한 hint 라는 개념으로 extension number 혹은 name 을 device 와 연결시킨다.

Defining Hints

Asterisk 에서 extension 의 상태정보를 저장하고, 제공하기 위해서는 먼저 extension의 hint 를 정의해주어야 한다. 각각의 hint 상태정보는 매핑된 device/extension 의 상태정보에 따라 변경될 것이다.

hint 를 정의하기 위해선느 다음의 문법을 따른다.

exten = <extension>,hint,<device state id>[& <more dev state id],<presence state id>

Example

[internal]

exten = 6001,hint,SIP/Alice&SIP/Alice-mobile
exten = 6002,hint,SIP/Bob
exten = 6003,hint,SIP/Charlie&DAHDI/3
exten = 6004,hint,SIP/Diane,CustomPresence:Diane
exten = 6005,hint,,CustomPresence:Ellen
  • hint 설정시, 중간에 priority 를 설정하는 부분에 "hint"라고 설정하는 것을 제외하면 extension 정의 문법과 굉장히 유사하다. hint 는 run-time 이 아니라 load-time 에 적용되기 때문에 priority 가 필요없다.
  • 두개 이상의 Device 를 맵핑하기 위해서는 '&' 구분자를 이용하면 된다.
  • <presence state id>는 <device state id> 다음에 온다. 만약 <device state id> 만을 설정하고자 한다면 반드시 6005 예제와 같이 쉼표를 명시적으로 입력해주어야 한다.
  • Hint 설정은 Dialplan 어디에도 위치할 수 있다. 그리고 다른 일반적인 extension 과 같이 6001@internal, 6002@internal 과 같은 방식으로 Subscribe 가 가능하다.

NOTIFY

설정된 Hint 상태 정보 변경시, SIP NOTIFY 메시지가 전송된다.

#
U 192.168.100.10:5060 -> 192.168.100.20:5060
NOTIFY sip:200-fake00085d13c6ab-1@192.168.100.20:5060;transport=udp SIP/2.0.
Via: SIP/2.0/UDP 192.168.100.10:5060;branch=z9hG4bK3c445e56.
Max-Forwards: 70.
From: <sip:1010200@192.168.100.10:5060>;tag=as5bc393b2.
To: "user1__1" <sip:200-fake00085d13c6ab-1@192.168.100.10:5060>;tag=945d8d6639.
Contact: <sip:1010200@192.168.100.10:5060>.
Call-ID: c9e395959e690d4b.
CSeq: 172 NOTIFY.
User-Agent: Asterisk PBX 1.8.15.0-117.fc12.
Subscription-State: active.
Event: dialog.
Content-Type: application/dialog-info+xml.
Content-Length: 216.
.
<?xml version="1.0"?>
<dialog-info xmlns="urn:ietf:params:xml:ns:dialog-info" version="70" state="full" entity="sip:1010200@192.168.100.10:5060">
<dialog id="1010200">
<state>confirmed</state>
</dialog>
</dialog-info>

Querying Extension State

core show hints 명령어로 현재 설정된 모든 hint 정보를 확인할 수 있다.

*CLI> core show hints
    -= Registered Asterisk Dial Plan Hints =-
                   6003@internal            : SIP/Charlie&DAHDI/3   State:Unavailable     Watchers  0
                   6002@internal            : SIP/Bob               State:Unavailable     Watchers  0
                   6001@internal            : SIP/Alice&SIP/Alice-  State:Unavailable     Watchers  0
                   6005@internal            : ,CustomPresence:Elle  State:Unavailable     Watchers  0
                   6004@internal            : SIP/Diane,CustomPres  State:Unavailable     Watchers  0
----------------
- 5 hints registered

See also