Помогите настроить BLF при передачи межу Asterisk (FreePBX) серерами
(DPMA 1.5)
имеется схема
Абонент 1 Asterisk1 Asterisk2 Абонент 2
Абонент 3 Asterisk3 Asterisk2 Абонент 2
У абонента 1 установлен аппарат Yealink SIP-T28, у абонента 2 и 3 установлены Digium D70 (
Теперь внимание вопрос:
как между станциями завязать BLF чтобы абонент 2 видел возможную занятость абонента 1 и 3 (и наоборот соответсвенно)
и как передавать STATUS (Available, DND, Away итд) абонентов 2 и 3 между собой если они подключены к разным FreePBX серерам.
в LG была такая фишка - BLFManager когда все АТС сбрасывают на сервер статусы своих абонентов и каждая АТС LG получает этот статус, как тут сделать так не понятно.
res_jabber в 1.8 Asterisk - роняет Asterisk в seg.fault, разбираться уже не стал, все равно на 11й астериск собирались переходить, собрал новенький 11.3.0 в Сарове и в МСК уже стоит 11.2.1, в них уже нет res_jabber (ну есть на самом деле в качестве устаревших) по сию собрал - res_xmpp
пытались настроить через него:
| Код: |
| iq type="error" id="aaaal" from="pubsub.hints-openfire.mydomain.net" to="ats-sar@hints-openfire/astvoip2">UNAVAILABLE [2013-04-24 22:20:15] ERROR[10645]: res_xmpp.c:1402 xmpp_pubsub_handle_error: PubSub Server error, 503 |
Ну и по всему -- на вашем жаббер сервере не разрешены PubSub. Так что разбирайтесь с ним. Астер тут не причем.
Есть правда одно но. Я использую ejabberd. Не думаю, правда, что проблема в этом.
1) зарегистрированы на жаббер-сервере аккаунты.
2) Обычным клиентом Жаббера были добавлены друг-другу в контакт-лист все учетные записи серверов Астера.
3) Настроен астериск.
И да, еще раз обращаю внимание: я нисколько не настаиваю на использовании ejabberd. Просто в моем случае поднимать OpenFire небыло ни желания, ни необходимости.
Вот я поставил ejabberd
завел пользователя admin задал пароль
далее через WEB морду создал пользователей:
ats-sar@ejabberd.mydomain.local
ats-msk@ejabberd.mydomain.local
далее сделал:
ejabberdctl register ats-sar ejabberd.mydomain.local 123
ejabberdctl register ats-msk ejabberd.mydomain.local 123
через res_xmpp.so сообщения не бегают, но как только я тоже самое настроил в res_jabber.so сообщения побежали в обе стороны:
Server1 (где телефоны 6XX)
| Код: |
| JABBER: asterisk INCOMING: INUSEdevice_state JABBER: asterisk INCOMING: INUSEdevice_state JABBER: asterisk INCOMING: RINGINGdevice_state JABBER: asterisk INCOMING: RINGINGdevice_state |
Server 2 где телефоны 3XX:
| Код: |
| JABBER: asterisk INCOMING: INUSEdevice_state557FED7A65255711A417A1E557126D243D JABBER: asterisk INCOMING: INUSEdevice_state557FED7A65255711A417A1E557126D243D JABBER: asterisk INCOMING: RINGINGdevice_state557FED7A65255711A417A1E557126D243D JABBER: asterisk INCOMING: RINGINGdevice_state557FED7A65255711A417A1E557126D243D JABBER: asterisk INCOMING: NOT_INUSEdevice_state557FED7A65255711A417A1E557126D243D |
тем не менее если попросить
| Код: |
| ats-msk*CLI> core show hint 608 608@ext-local-custom : SIP/608 State:Unavailable Watchers 0 1 hint matching extension 608 asterisk-users*CLI> core show hint 332 332@ext-local-custom : SIP/332 State:Unavailable Watchers 0 1 hint matching extension 332 |
дедл как написано в инструкции: (только свои цифры конечно)
| Цитата: |
| Модуль res_jabber.so настроен, осталось добавить хинты в диалплан Asterisk. Если установлен FreePBX, хинты следует добавлять в файл /etc/asterisk/extensions_custom.conf в контекст [ext-local-custom]. В нашем случае, на АТС в Санкт-Петербурге добавляем следующие хинты для слежения за состоянием номеров 201, 202, 308 и 321 на других АТС: [ext-local-custom] exten => 201,hint,SIP/201 exten => 202,hint,SIP/202 exten => 308,hint,SIP/308 exten => 321,hint,SIP/321 |
Последний раз редактировалось: Alexey_Astashov (Сб Апр 27, 2013 07:44)
| Цитата: |
| через res_xmpp.so сообщения не бегают, но как только я тоже самое настроил в res_jabber.so сообщения побежали в обе стороны: |
Хм. В качестве абсурда: вы jabber.conf в xmpp.conf переименовали?
Потому как, если при исользовании res_xmpp не бегают сообщения в жаббер, то скорее всего он у вас не настроен.
Между res_jabber и res_xmpp нет никакой разницы, кроме того, что они используют разные конфиги. jabber.conf и xmpp.conf соотвественно.
Added after 56 seconds:
то есть, в вашем случае subcribecontext каждого телефона должен быть ext-local-custom
Added after 9 minutes:
Полностью у меня это выглядит так:
server1
xmpp.conf:
| Код: |
| [mainoffice] type=client serverhost=jabber.server.ru distribute_events=yes pubsub_node=pubsub.jabber.server.ru status=available usetls=no usesasl=yes username=mainoffice@jabber.server.ru/mainoffice secret=password buddy=secoffice@jabber.server.ru/secoffice |
sip.conf
[device1]
host=
secret=
otherparam=
subscribecontext=blf
extentions.conf
| Код: |
| [blf] exten => device1,hint,SIP/device1 exten => device2,hint,SIP/device2 |
server2
xmpp.conf:
| Код: |
| [secoffice] type=client serverhost=jabber.server.ru distribute_events=yes pubsub_node=pubsub.jabber.server.ru status=available usetls=no usesasl=yes username=secoffice@jabber.server.ru/secoffice secret=password buddy=mainoffice@jabber.server.ru/mainoffice |
sip.conf
[device2]
...
...
subscribecontext=blf
extentions.conf
| Код: |
| [blf] exten => device1,hint,SIP/device1 exten => device2,hint,SIP/device2 |
| Код: |
| [2013-04-29 10:02:23] ERROR[29864]: res_jabber.c:3578 aji_handle_pubsub_error: Error performing operation on PubSub node SIP/611, 409. [2013-04-29 10:04:01] ERROR[29864]: res_jabber.c:3578 aji_handle_pubsub_error: Error performing operation on PubSub node SIP/603, 409. [2013-04-29 10:04:04] ERROR[29864]: res_jabber.c:3578 aji_handle_pubsub_error: Error performing operation on PubSub node SIP/607, 409. [2013-04-29 10:04:09] ERROR[29864]: res_jabber.c:3331 aji_handle_pubsub_event: Could not parse incoming PubSub event |
не исключаю, что это связано
| Код: |
| [2013-04-29 10:04:04] ERROR[29864]: res_jabber.c:3578 aji_handle_pubsub_error: Error performing operation on PubSub node SIP/607, 409. |
ничего не скажу, не встречал.
А вот это:
| Код: |
| [2013-04-29 10:04:09] ERROR[29864]: res_jabber.c:3331 aji_handle_pubsub_event: Could not parse incoming PubSub event |
встречал. Но не смотря на наличие этой ошибки статусы все равно бегают. В этоге, я просто перед сборкой комментирую в исходном коде строку логгирующую данную ошибку.
Я чего думаю, может у меня парсер какой не установлен в системе?
Еще один момент, решился я тут проверить, а как вообще стейты отрабатывают на Digium аппаратах? сделал вот такой контекст:
| Код: |
| [devstate_test] exten => 605,hint,Custom:mystate exten => 608,hint,Custom:mystate exten => set_inuse,1,Set(DEVICE_STATE(Custom:mystate)=INUSE) exten => set_not_inuse,1,Set(DEVICE_STATE(Custom:mystate)=NOT_INUSE) exten => set_onhold,1,Set(DEVICE_STATE(Custom:mystate)=ONHOLD) exten => set_ringing,1,Set(DEVICE_STATE(Custom:mystate)=RINGING) exten => check,1,NoOp(Custom:mystate is ${DEVICE_STATE(Custom:mystate)}) |
соответсвенно через console dial set_XXXXXXX@devstate_test меняю статус
в записной книге Digium в интайрах выставил
сакрипшн yes
сабскрибшен URI: 608@devstate_test
ну какбы статус если поменять, то в хинтах можно увидеть новый статус, но на BLF индикация не передается. Для внутренних абонентов работает нормально
но всеравно:
| Код: |
| ats-msk-sintek*CLI> core show hint 608 608@ext-local-custom : SIP/608 State:Unavailable Watchers 0 1 hint matching extension 608 |
очень много обшибок
[2013-04-29 19:06:53] ERROR[19128] res_xmpp.c: Could not parse incoming PubSub event
Блин обманулся, у меня просто с одной стороны стоял res_jabber.so с другой res_xmpp.so
{mod_pubsub, [{access_createnode, pubsub_createnode},{plugins, ["flat", "pep", "hometree"]}]}, убирал флет результат аналогичный.
вроде как паблишится, а не приходит подписчикам, астериски в друзьях друг у дружки, подписки в обе строны.
как посмотреть на сервере джаббера что сообщение пришло от астериска.
ЗЫ контексты правильные, хинты прописаны, сип конф подправлен, настройки хммп аналогичны.
Спасибо.
оба астера 11.4 freebsd 9.1 x86
| Код: |
| %% Only accounts on the local ejabberd server can create Pubsub nodes: {access, pubsub_createnode, [{allow, local}]}. поскипано {mod_pubsub, [ {access_createnode, pubsub_createnode}, {ignore_pep_from_offline, true}, % reduces resource comsumption, but XEP incompliant %%{ignore_pep_from_offline, false}, % XEP compliant, but increases resource comsumption {last_item_cache, false}, {plugins, ["flat", "hometree", "pep"]} % pep requires mod_caps ]}, |
вот так у меня.
Buddy: test2@jabber.soe.local
Resource: test2
node: http://www.asterisk.org/xmpp/client/caps
version: asterisk-xmpp
Google Talk capable: no
Jingle capable: yes
640@office SIP/640 State:Idle Watchers 0
на втором:
Buddy: test3@jabber.soe.local
Resource: test3
node: http://www.asterisk.org/xmpp/client/caps
version: asterisk-xmpp
Google Talk capable: no
Jingle capable: yes
640@office SIP/640 State:Unavailable Watchers 0
с первого паблиш уходит, на второй ничего не приходит(
в xmpp.conf
distribute_events=yes
в конфиге еджаббера
пабсаб поставил как в предыдущем сообщении
веб морда еджаббера говорит о:
pubsub_index 1 295
pubsub_item 60 19,183
pubsub_last_item 0 286
pubsub_node 64 910,854
pubsub_state 289 18,205
pubsub_subscription 2 346
куда копать?
----
Аsterisk 11.4 freebsd 9.1 x86
Скорее всего, могу предположить, что нода dev_state, которую создает астер создана с такими правами, что в нее запрещено писать тем, кто не находится
в ростере у создателя.
Таким образом, запустите жаббер-клиент(десктопный) от обоих аккаунтов и убедитесь, что оба сервера находятся друг у дружки в ростере, и подписка "both".
Ну и хорошо бы посмотреть, что там в реальности. Сделать это можно, например с помощью PSI. В этом клиенте есть XML console, с помощью которой можно послать и читать из жабера RAW сообщения. Запустите Psi, откройте консоль, включите ее(там есть галка "enable"). И пошлите в жаббер следующее:
| Код: |
| |
Результат положите сюда, посмотрим. Ну или сам обратите внимание на узлы:
| Код: |
| authorize open presence roster whitelist open friends courtiers servants enemies |
Added after 6 minutes:
Например, на моем сервере ответ выглядит так:
| Цитата: |
| open |
Значения могут быть такими http://xmpp.org/extensions/xep-0060.html#accessmodels
Мое "open" конечно, не очень хорошо, но было лень.
подключил к pubsub jabber серверу и О ЧУДО, на 11.5 у меня начали появляться hint прописанные, теперь я вижу state другого офиса.. проблема похоже в Asterisk 11.2/11.3 была
потому что в старомофисе стоит 11.3 хинты - не обновляются
ну да ладно...
и вот тепреь дошло время до телефонных аппарататов - прописал в phonebook - Digium D70 запись типа абонент 307 - а он не видит этих хинтов, и что я только не делал - BLF (Rapid Dial Key) никак не загораются..
помогите плиз.