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

Нужно настроить проверку прохождения звонков через asterisk

Добавлено: 03 фев 2015, 13:54
loooongcat
Я с астером знаком не очень, не жду готовое решение, надеюсь, мне зададут верное направление и немножко ссылок.
Есть сервер zabbix, есть сервер с asterisk, работоспособность asterisk мониторится так: проверяется есть ли среди запущенных процессов астер.
Бывает, что астер зависает и звонки не идут.
Поставили задачу: проверять прохождение звонков через астер консольным sip софтфоном, который должен запускаться скриптом, выдавать данные взяли ли трубку и выключаться.
На серверах debian 7, пробовал с twinkle, linphonec, но может есть какие-то способы по-проще.
Подскажите, пожалуйста, подходящий софтфон или какой другой способ.

Re: Нужно настроить проверку прохождения звонков через aster

Добавлено: 03 фев 2015, 17:18
gosha
sipp

рядом стоящий отдельный астериск

etc

Re: Нужно настроить проверку прохождения звонков через aster

Добавлено: 04 фев 2015, 08:11
virus_net

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

CLI> core show help channel originate
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
There are two ways to use this command. A call can be originated between a
channel and a specific application, or between a channel and an extension in
the dialplan. This is similar to call files or the manager originate action.
Calls originated with this command are given a timeout of 30 seconds.

Usage1: channel originate <tech/data> application <appname> [appdata]
This will originate a call between the specified channel tech/data and the
given application. Arguments to the application are optional. If the given
arguments to the application include spaces, all of the arguments to the
application need to be placed in quotation marks.

Usage2: channel originate <tech/data> extension [exten@][context]
This will originate a call between the specified channel tech/data and the
given extension. If no context is specified, the 'default' context will be
used. If no extension is given, the 's' extension will be used.
+ Local channel
+ звонок на точное время
= решение задачи и не надо никаких консольных сип клиентов

Re: Нужно настроить проверку прохождения звонков через aster

Добавлено: 04 фев 2015, 08:30
Ferrum
А не проще ли проверить почему Астериск зависает, у меня их очень много и не один не зависает.

Re: Нужно настроить проверку прохождения звонков через aster

Добавлено: 04 фев 2015, 10:18
loooongcat
спасибо за помощь, буду пробовать

Re: Нужно настроить проверку прохождения звонков через aster

Добавлено: 25 фев 2015, 13:46
loooongcat
virus_net писал(а):

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

CLI> core show help channel originate
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
There are two ways to use this command. A call can be originated between a
channel and a specific application, or between a channel and an extension in
the dialplan. This is similar to call files or the manager originate action.
Calls originated with this command are given a timeout of 30 seconds.

Usage1: channel originate <tech/data> application <appname> [appdata]
This will originate a call between the specified channel tech/data and the
given application. Arguments to the application are optional. If the given
arguments to the application include spaces, all of the arguments to the
application need to be placed in quotation marks.

Usage2: channel originate <tech/data> extension [exten@][context]
This will originate a call between the specified channel tech/data and the
given extension. If no context is specified, the 'default' context will be
used. If no extension is given, the 's' extension will be used.
+ Local channel
+ звонок на точное время
= решение задачи и не надо никаких консольных сип клиентов
извините, если не по адресу вопрос
сделал скрипт на питоне для обзвона, сделал соответствующий контекст
звонил через py-asterisk https://github.com/mouseratti/py-asterisk
через вот такую штуку

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

try:
pbx = Manager((server['address'], server['port']), server['login'], server['password'])
pbx.Originate(a, 'context', '1111', '1')
except Exception as e:
в итоге e присваивались ошибка, но всегда одна что-то вроде "originate call error" независимо от причины ошибки
я вычитал ,что originate может отдавать номер ошибки http://www.voip-info.org/wiki/view/Aste ... l+channels
а вот каким образом в питоновый скрипт забрать этот номер ошибки не знаю
если знаете чем можно эту ошибку забрать или где такой вопрос задать, подскажите, пожалуйста

Re: Нужно настроить проверку прохождения звонков через aster

Добавлено: 26 фев 2015, 08:41
virus_net
я никогда не кодил на питоне и не знаю этого языка
loooongcat писал(а):я вычитал ,что originate может отдавать номер ошибки http://www.voip-info.org/wiki/view/Aste ... l+channels
не вижу где вы это там вычитали и мне о подобном функционале originate неизвестно, по крайней мере в Asterisk 1.8
Originate выставляет переменную ${ORIGINATE_STATUS}:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
At that point, this application will exit with
the status variable set and dialplan processing will continue.
This application sets the following channel variable before exiting:
${ORIGINATE_STATUS}: This indicates the result of the call origination.
FAILED
SUCCESS
BUSY
CONGESTION
HANGUP
RINGING
UNKNOWN: In practice, you should never see this value. Please report
it to the issue tracker if you ever see it.
но тут нет ничего про номер ошибки.
loooongcat писал(а):или где такой вопрос задать
Для начала сами посмотрите что отдается в AMI при возникновении ошибки, и если у вас там ест что-то на это тему, то собственно ваш вопрос стоит задать на форуме, где есть люди разбирающиеся в питоне

Re: Нужно настроить проверку прохождения звонков через aster

Добавлено: 05 мар 2015, 11:09
loooongcat
В общем, для будущих поколений выкладываю порядок действий, как реализовано у меня.

Библиотека для питона

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

git clone https://github.com/mouseratti/py-asterisk.git

внутри папки py-asterisk выполнить

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

python setup.py install
скрипт запускается хоть чем, но у меня заббиксом

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

#!/usr/bin/python
from Asterisk.Manager import Manager
from time import sleep

server = {
'address':'127.0.0.1',
'port':5038,
'login':'yourlogin',
'password':'yourpassword',
}

a = 'LOCAL/777@your_context'

try:
    pbx = Manager((server['address'], server['port']), server['login'], server['password'])
    c = pbx.Originate(a, 'your_context', '778', '1')
    result = c['Response']
except Exception as e:
    result = 'Fail'
#sleep(10)

if result == 'Success':
    print(0)
    exit()
создаём учётку для AMI в manager.conf

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

[your_login]
secret=your_password
read=system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
write=system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
ну и соответствующий контекст делаем в диалплане

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

[your_context]

exten = 777,1,Answer()
same = n,Playback(demo-congrats)
same = n,Hangup()

exten = 778,1,Answer()
same = n,Echo()
same = n,Hangup()

Re: Нужно настроить проверку прохождения звонков через aster

Добавлено: 05 мар 2015, 18:12
SolarW
И что в результате этого получает заббикс на вход после выполнения этого скрипта?
А то не будучи ни капли программером не могу понять, обычно такие скрипты во внешних проверках заббиха нолик или единичку возвращают.

Re: Нужно настроить проверку прохождения звонков через aster

Добавлено: 05 мар 2015, 19:52
zzuz
Так написано же

if result == 'Success':
print(0)
exit()