Страница 1 из 1

Связь и система оповещения на Asterisk

Добавлено: 18 фев 2020, 20:49
Mushta
Здравствуйте!
Задача: На базе Asterisk сделать внутреннюю телефонную связь и систему оповещения. Для системы оповещения собираюсь использовать несколько устройств системы оповещения и трансляции - Комендантъ VoIP-BSC1 - IP/SIP. Для одновременного оповещения через несколько устройств Комендантъ VoIP-BSC1 использую конференцию.
На данном этапе работают звонки между внутренними абонентами, и при звонке на номер 7777 создается конференция, в которую автоматически подключаются абоненты с номерами 7510 и 7805 (Комендантъ VoIP-BSC1). Звонок осуществляю с номера 7109.

1. /etc/asterisk/meetme.conf

Код: Выделить всё

[rooms]
conf => 7777
2. /etc/asterisk/extensions.conf

Код: Выделить всё

[sipout]
exten => _7777, 1, Answer()
exten => _7777, n, System(/var/spool/asterisk/call_list.sh)
exten => _7777, n, ConfBridge(7777)

[conference]
exten => s, 1, Answer()
exten => s, n, ConfBridge(7777)

3. /var/spool/asterisk/call_list.sh

Код: Выделить всё

#!/bin/sh
while read number; do
cat <<EOF  >  /var/spool/asterisk/$number
Channel: Local/$number@sipout
Callerid: $number
MaxRetries: 1
RetryTime: 20
WaitTime: 30
Context: conference
Extension: s
Priority: 1
Archive: yes
Set: CDR(userfield)=${REASON}
Account: confrence_1
EOF
    chown asterisk:asterisk /var/spool/asterisk/$number
    mv /var/spool/asterisk/$number  /var/spool/asterisk/outgoing
    echo "$number"
    number=`expr $number + 1`
    while [ "$?" -eq "0" ]
    do
count_files ()

{

    count_f=`ls /var/spool/asterisk/outgoing | wc -l`
        if [ "$count_f" -eq "15" ]; then
            sleep 10
            return 0
        else
            return 1
        fi
}
    count_files
    done
done < /var/spool/asterisk/list.txt
exit 0
4. /var/spool/asterisk/list.txt

Код: Выделить всё

7510
7805
Это все работает, конференция создается, 7510 и 7805 к ней подключаются автоматом, вопрос:
Как сделать, чтобы 7510 и 7805 выходили из конференции автоматически, когда 7109 кладет трубку?

Re: Связь и система оповещения на Asterisk

Добавлено: 18 фев 2020, 21:10
ded
Освоить команду
CLI> channel request hangup all
и прикрутить её на
exten => h,1,....
exten => h,n, Hangup()
в контексте [conference] через внешний скрипт. Логика - когда вешается трубка 7109 отрабатывает exten => h и гасит все

Re: Связь и система оповещения на Asterisk

Добавлено: 18 фев 2020, 23:49
Mushta
Спасибо за пинок в нужном направлении, не знаю, выполнил ли я в точности то, что вы мне посоветовали, но работает!

Мои изменения в /etc/asterisk/extensions.conf :

Код: Выделить всё

[sipout]
exten => _7777, 1, Answer()
exten => _7777, n, System(/var/spool/asterisk/call_list.sh)
exten => _7777, n, ConfBridge(7777)
exten => h, 1, Gosub(conference,h,1)

[conference]
exten => s, 1, Answer()
exten => s, n, ConfBridge(7777)
exten => h, 1, System(asterisk -rx channel request hangup all)

Re: Связь и система оповещения на Asterisk

Добавлено: 19 фев 2020, 01:01
Mushta
В моем решении выше была ошибка, убивались все каналы, не только конференция.
Ниже привожу рабочий пример без этого недостатка:
/etc/asterisk/extensions.conf:

Код: Выделить всё

[sipout]
exten => _7777, 1, Answer()
exten => _7777, n, System(/var/spool/asterisk/call_list.sh)
exten => _7777, n, ConfBridge(7777)
exten => h, 1, System(asterisk -rx confbridge kick 7777 all)

[conference]
exten => s, 1, Answer()
exten => s, n, ConfBridge(7777)

Re: Связь и система оповещения на Asterisk

Добавлено: 19 фев 2020, 01:59
Mushta
Остался не решенным вопрос, как отключить голосовые оповещения при входе и выходе из конференции.....

Re: Связь и система оповещения на Asterisk

Добавлено: 19 фев 2020, 02:02
ded
Обнулить соответствующие аудио файлы?

P.S. знак _ не нужен, 7777 - это не шаблон.
exten => _7777

exten => h, 1, требует продолжения
exten => h, n, Hangup()

Re: Связь и система оповещения на Asterisk

Добавлено: 19 фев 2020, 02:55
Mushta
Благодарю за подсказки, все исправил, со звуком решил следующим способом:
/etc/asterisk/confbridge.conf

Код: Выделить всё

sound_kicked=silence/1

Re: Связь и система оповещения на Asterisk

Добавлено: 19 фев 2020, 13:18
Mushta
И так, внутренние звонки работают, оповещение с использованием конференции тоже работает, осталось разобраться с последним, что хотелось бы реализовать. На объекте где предполагается эксплуатация всего выше перечисленного, нужно в систему оповещения скоммутировать сигналы ГО (Гражданская Оборона). В оборудовании ГО имеем сигнальную пару (звук) и пару управления (сухие контакты реле).
Вопрос: есть ли возможность по сигналам ГО на Астериске формировать конференцию в которую вещать звук ГО? Есть ли идеи?

Re: Связь и система оповещения на Asterisk

Добавлено: 03 май 2020, 16:52
mormishka
добрый день.
удалось решить задачу с сухими контактами в связке с астериском?
Или придумали как то подругому?