VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

Отловить статус

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
serg
Сообщения: 109
Зарегистрирован: 10 окт 2013, 18:44

Отловить статус

Сообщение serg »

Знатоки, подскажите!

Есть два астера. Хочу сделать проверку канала между ними таким обарзом:

На астер 1 - запускаю cron'ом скрипт с командой

asterisk -rx "channel originate SIP/test/100 extension 200@local"

Если все ОК ничего не делаем, если нет контакта рестарт астера 2 удаленно по ssh

В диалплане астера 1

exten => 200,1,Dial(SIP/test/100)
exten => 200,2,Hangup()

В диалплане астера 2

exten => 100,1,Answer()
exten => 100,Wait(3)
exten => 100,Hangup

* Есть одно условие, номер 100 и 200 на астерах не должны быть зареганы как телефоны.
Понимаю что шизофрения, но с ChanAvail не разобралси, как по книге, так и по примерам в инете. (Сейчас мистер ded о "Face OF Будущее телефонии" пару раз отправит)))

Мужики хелп! Уже не раз выручали..

Скрипт не прошу писать за меня. Нужно отловить статус если Астер 2 работает - то Answer, если Астер 2 выключен - то любой другой статус Busy и т.п.
virus_net
Сообщения: 2337
Зарегистрирован: 05 июн 2013, 08:12
Откуда: Москва

Re: Отловить статус

Сообщение virus_net »

Так что подсказать то ? Вы же не написали в чем у вас проблема или что именно не получается. Или это "а расскажите ка мне с самого начала, подробно, в картинках!" ?
Вы привели самую простую задачу: позвонить, отловить DIALSTATUS по завершению вызова
Что можно подсказать по такой задаче ? Правильно, прочесть книгу.

P.S. В данном случае можно обойтись скриптом, например на PHP, который сгенерирует SIP пакет и отправит на Asterisk, а тот или ответит или нет. Если не ответит = помер.
Например можно послать SIP пакет OPTIONS используя PHP: stream_socket_client.
serg писал(а):но с ChanAvail не разобралси
Все же ChanIsAvail. А с чем там разбираться то ? Он же простой как три копейки:
ChanIsAvail([Technology2/Resource2[&...]][,options])
This application sets the following channel variables:
${AVAILCHAN}: The name of the available channel, if one exists
${AVAILORIGCHAN}: The canonical channel name that was used to create the
channel
${AVAILSTATUS}: The device state for the device
${AVAILCAUSECODE}: The cause code returned when requesting the channel
Но в данном случае не он вам нужен, т.к. в этой задаче он не поможет.
мой SIP URI sip:virus_net@asterisk.ru
bitname.ru - Домены .bit (namecoin) .emc .coin .lib .bazar (emercoin)

ENUMER - звони бесплатно и напрямую.
awsswa
Сообщения: 2390
Зарегистрирован: 09 июн 2012, 10:52
Откуда: Россия, Пермь skype: yarick_perm

Re: Отловить статус

Сообщение awsswa »

exten => 200,1,Dial(SIP/test/100,10,tr)
exten => 200,n,Goto(s200-${DIALSTATUS},1)

exten => s200-ANSWER,1,NoOp(== Сервер НЕ Умер ==)
exten => s200-ANSWER,n,NoOp(== Работаем дальше ==)
exten => s200-ANSWER,n,HangUp

exten => _s200-.,1,NoOp(== Всё сдохло ==)
платный суппорт по мере возможностей
ded
Сообщения: 15628
Зарегистрирован: 26 авг 2010, 19:00

Re: Отловить статус

Сообщение ded »

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

exten => _s200-.,1,System(mailto to-addr admin@company.biz == Всё пропало! Гипс снимают! Клиент уезжает! ==)
Ответить
© 2008 — 2025 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH