Занятость/доступность SIP - пира.
ChanIsAvail
http://www.voip-info.org/wiki/index.php? ... hanIsAvail
я так понял -- не умеет именно с СИПом.
Если это не возможно, то как хотя б сделать show channels через екстеншен, то есть с помощью какого-то апликейшена?
Тогда буду через AGI искать нужные сипы в списке каналов.
Спасибо.
Мне нужно узнать занят СИП или свободен, разговаривает или нет.
Шеловская команда не подзодит.
| Oleg78 wrote: |
| Мне нужно узнать занят СИП или свободен, разговаривает или нет. |
show dialplan macro-stdexten
[ Context 'macro-stdexten' created by 'pbx_config' ]
'a' => 1. VoicemailMain(${ARG1}) [pbx_config]
's' => 1. Dial(${ARG2}|20|Ttr) [pbx_config]
2. SetLanguage(ru) [pbx_config]
3. Goto(s-${DIALSTATUS}|1) [pbx_config]
's-BUSY' => 1. Voicemail(b${ARG1}) [pbx_config]
2. Goto(default|s|1) [pbx_config]
's-CHANUNAVAIL' => 1. Hangup() [pbx_config]
's-NOANSWER' => 1. Voicemail(u${ARG1}) [pbx_config]
2. Goto(default|s|1) [pbx_config]
'_s-.' => 1. Goto(s-NOANSWER|1) [pbx_config]
Сможешь написать свой макрос, чтобы отрабатывал нужное по состояниям s-BUSY s-CHANUNAVAIL s-NOANSWER
Ведь если проверять Диалом, то при свободном канале звонок уйдет и не вернется.
Эта вся затея для распределения нагрузки между каналами.
| Oleg78 wrote: |
| Ведь если проверять Диалом, то при свободном канале звонок уйдет и не вернется. |
ИМХО, путанно излагаете:
| Quote: |
| Нужно получить состояние определенного сипа или сипов. |
Попробую так же путанно ответить - в PDF устроит состояние канала? Или нужнов XLS? (шутка).
Есть несколько GSM шлюзов. Для звонков на них надо считать общее число минут разговоров на каждого оператора (это чтоб не вылезть за граници минут, установленных оператором. Это такая безлимитная симка
Пробую реализовать это все через AGI, который может использовать только апликейшены астериска.
Вобщем если не углубляться во все это, то :
| Quote: |
| А что значит не вернется? В смысде - уйдет на вызов? Разве это не является целью звонка? |
нужно сразу отправлять на заведомо свободный канал.
Диал для проверки не подходит. Нужен еще какой-то способ.
Поясню еще.
Например нашел мой скрипт подходящий СИП, отправил на него звонок, а он оказался занят. Так что теперь опять запускать скрипт сначала? И сколько раз так запускать? А если свободных каналов не будет вообще, тогда что вычисление канала зациклиться?
Оно?
набрать в консоли астериска:
| Code: |
| show agi channel status |
_________________
Мои рекомендации: Asterisk-1.8 + G.722 кодек = лучший выбор!
Успехов!
_________________
"Фантазия важнее знания.", Альберт Эйнштейн
Имею схожие проблемы
Есть:
GSM шлюз на 2 sim и система автоинформирования.
Схема работы следующая:
автоинформатор получает номер абонента, отправляет dial() на првый порт gsm-шлюза, если дозвонился проговаривае сообщение, если получает busy, то отправляет dial() на второй порт.
Суть проблемы:
asterisk получает ответ busy в двух случаях 1) если на шлюзе уже происходит соединение (занят шлюз) и 2) если абонент занят или сбросил вызов.
Задача:
Отправить звонок по заведомо свободной линии. Или как вариант считать безуспешные попытки дозвона до абонента, при условии что шлюз как минимум набрал номер.
Варианты в работе:
1) считать время с момента отправки номера на шлюз до получения ответа busy. Логика такая - если шлюз сразу дал отбой ответ придет значительно раньше чем если шлюз попытается дозвониться до клиента. Минусы: не элегантно и перестанет работать при увеличении кол-ва и видов шлюзов(разным шлюзам может понадобиться разное время на ответ)
2) использовать call-limit. Количество одновременных соединений на каждой линии заранее известно. Проблема: не очевидно как в extension проверить call-limit для данного канала и определить текущее значение inuse. Решение мне лично нравится больше, но не хватает знаний.
3) Вкорне перестроить логику вызовов. Проблема нет идей как сделать правильно и надежно.
Буду благодарен как за помощь в реализации, так и за критику.
http://asteriskforum.ru/viewtopic.php?p= ... ght=#42609
| Code: |
| same => n,GotoIf($["${DEVICE_STATE(SIP/124)}" = "NOT_INUSE"]?line_free) |
_________________
Intel Core 2 Duo E6400 @ 2.40GHz / 6GB / 160GB
Gentoo Linux 2.6.32-r7 || Asterisk 1.8.0 | SFA | Linksys SPA922 + D-Link DPH-300S + D-Link DVG-7111S + 3 x Huawei E1550