Asterisk hints
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
- http://irockasterisk.blogspot.dk/2012/01/asterisk-hint-explained.html - Asterisk "hint" explained
- https://wiki.asterisk.org/wiki/display/AST/Extension+State+and+Hints - Extension State and Hints
- https://wiki.asterisk.org/wiki/display/AST/States+and+Presence - States and Presence