Asterisk hints

From 탱이의 잡동사니
Jump to navigation Jump to search

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