AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Статусы при исполоьзовании Realtime

Asterisk IP PBX 2 сообщений 18.08.2010 16:22 - 02.09.2010 06:33
#1 18.08.2010 16:22

Статусы при исполоьзовании Realtime


Не могу решить проблему с забивкой extensions в mysql для работы в реалтайм.
Все настроено, с обычными диалпланами проблем нет, но нужно включить поддержку статусов.
Система 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

В чем может быть проблемма?
#2 02.09.2010 06:33

Решение было найдено:

Пишем в конфиги:
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 желая сэкономить время, а не сам собирал на чистой системе так как нужно под мои задачи.