Статусы при исполоьзовании Realtime
Все настроено, с обычными диалпланами проблем нет, но нужно включить поддержку статусов.
Система Trixbox.
Если прописать все в конфиги:
sip_general_custom.conf
| Code: |
| allowsubscribe=yes useclientcode=yes subscribecontext=status |
extensions_custom.conf
| Code: |
| [status] exten => 205,hint,SIP/205 exten => 210,hint,SIP/210 |
Все работает, в логи пишутся изменения статуса и кто за кем следит.
Когда перевожу на реалтайм
extensions_custom.conf
| Code: |
| [ext-pickup] switch => Realtime/@ ;exten => 205,hint,SIP/205 ;exten => 210,hint,SIP/210 |
В таблицу extensions нельзя записать приоритет Hint, только числовые значения, нагуглил что hint нужно заменить на -1. В итоге в базе получается такая запись:
| Code: |
| |id|context|exten|priority|app|appdata| |1|status|205|-1|SIP/205|| |2|status|210|-1|SIP/205|| |
Перестает работать, остальные диалпланы находящиеся в базе продолжают работать.
Вывод в CLI sip show peer 205 не меняется
| Code: |
| * Name : 205 Realtime peer: Yes, cached Secret : MD5Secret : Context : from-internal Subscr.Cont. : status Language : ru AMA flags : Unknown Transfer mode: open CallingPres : Presentation Allowed, Not Screened Callgroup : Pickupgroup : Mailbox : VM Extension : *97 LastMsgsSent : 32767/65535 Call limit : 0 Dynamic : Yes Callerid : "toor" MaxCallBR : 2048 kbps Expire : 1215 Insecure : no Nat : Always ACL : No T.38 support : Yes T.38 EC mode : FEC T.38 MaxDtgrm: -1 CanReinvite : No PromiscRedir : No User=Phone : No Video Support: Yes Text Support : Yes Ign SDP ver : No Trust RPID : No Send RPID : Yes Subscriptions: Yes Overlap dial : Yes DTMFmode : rfc2833 Timer T1 : 500 Timer B : 32000 ToHost : Addr->IP : 10.8.0.99 Port 21260 Defaddr->IP : 0.0.0.0 Port 5060 Transport : UDP Def. Username: 205 SIP Options : (none) Codecs : 0x28010e (gsm|ulaw|alaw|g729|h263|h264) Codec Order : (alaw:20,ulaw:20,g729:20,gsm:20) Auto-Framing : No 100 on REG : No Status : OK (105 ms) Useragent : X-Lite release 1104o stamp 56125 Reg. Contact : sip:205@10.8.0.99:21260;rinstance=72a470890c30446c Qualify Freq : 60000 ms Sess-Timers : Accept Sess-Refresh : uas Sess-Expires : 1800 secs Min-Sess : 90 secs |
В чем может быть проблемма?
Пишем в конфиги:
extconfig.conf
| Code: |
| hints => mysql,general,hints |
extension_custom.conf
| Code: |
| exten => _XXX,hint,${CUT(REALTIME(hints,exten,${EXTEN},:,:),:,4)} |
Далее необходимо создать таблицу "hints" в БД используемой для realtime:
+-------+---------------+
| exten | channels |
+-------+---------------+
| 205 | SIP/205 |
+-------+---------------+
Теперь введя в CLI "dialplan show status" мы видим:
| Code: |
| [ Context 'status' created by 'pbx_config' ] '205' => hint: SIP/205 [pbx_config] '210' => hint: SIP/210 [pbx_config] '_XXX' => hint: ${CUT(REALTIME(hints,exten,${EXTEN},:,:),:,4)} [pbx_config] |
"sip show subscriptions"
| Code: |
| Peer User Call ID Extension Last state Type Mailbox Expiry 10.8.0.99 210 OGIzY2Y4MjNkNDU 202@status Idle pidf+xml 003600 10.8.0.99 205 ODY3MmViZjY3ZDN 202@status Idle pidf+xml 003600 10.8.0.99 210 MTAxMTgwY2Y0N2I 205@status Idle pidf+xml 003600 10.8.0.99 205 ZWZkNjNiNTA0Zjg 210@status Idle pidf+xml 003600 |
Я использовал софтфоны X-Lite, при добавлении абонента в контакт-лист статусы отображают (онлайн, офлайн и при звонке что абонент занят).
Но самое главное, чтобы это все работало, на pbx_config.c должен быть наложен патчь 0016059
Кто собирал asterisk из сырцов скачанных после ноября 2009 может об этом не переживать.
Я полностью вычистил trixbox оставив только fop и free-pbx, скачал и собрал астериску 1.6.2.9. с некоторыми правками и пожалел что изначально поставил trixbox желая сэкономить время, а не сам собирал на чистой системе так как нужно под мои задачи.