LINUX.ORG.RU
ФорумAdmin

Альтернативы Asterisk

 ,


0

2

Какие программные альтернативы есть у Asterisk? Конкретно не нравятся некоторые вещи при написании dialplan, которые превращают его в лапшу с глобальными переменными(но вопрос не в этом).

Пробовал FreeSwitch, но в нем dialplan позаимствован из asterisk(даже тот что в xml имеет ту-же суть).

Требования: SIP, Открытость/бесплатность, Актуальность.

Аппаратные ATS не предлагать.

Deleted

Ответ на: комментарий от petav

Не, GUI вообще не обязательно.

Можно платную, но shareware, если все устроит руководство, то думаю купят.

3cx - перегружен функционалом, но бетку гляну конечно;
Switchvox - похоже на надстройку на asterisk аки FreePBX, у них в dialplan вообще адовая лапша.

Deleted
()
Последнее исправление: log4tmp (всего исправлений: 1)

Конкретно не нравятся некоторые вещи при написании dialplan, которые превращают его в лапшу с глобальными переменными.

Ты что-то делаешь не так.

Как вариант, перепиши диалплан на AEL.

kernelpanic ★★★★★
()
Ответ на: комментарий от kernelpanic

На lua финальный вариант. Я не хочу это обсуждать, просто посмотреть на альтернативы интересно.

Ну ладно: как пример, есть 2 SIP телефона, приходит на 1 из них звонок, надо на втором перехватить, но не отвечать. Стандартными средствами это сделать нельзя, только вызывать скрипт/agi.

Или другое, пишешь свою cdr-ку. А у тебя два контекста, один для ivr, другой обрабатывает звонки к сотрудникам. При переходе из контекста в контекст меняется channelid, соответственно надо тащить старый cnannelid через глобальные переменные.(Да у asterisk есть внутренняя cdr, но она перегружена и чего-то мне в ней не хватало).

Deleted
()
Ответ на: комментарий от Deleted

есть 2 SIP телефона, приходит на 1 из них звонок, надо на втором перехватить, но не отвечать

Какой в этом практический смысл?

При переходе из контекста в контекст меняется channelid

Как ты переходишь между контекстами?

глобальные переменные

Ты понимаешь, что глобальные переменные - это те, что описыны в секции [global]?

kernelpanic ★★★★★
()
Последнее исправление: kernelpanic (всего исправлений: 1)
Ответ на: комментарий от kernelpanic

Какой в этом практический смысл?

Хотелки руководства.

Как ты переходишь между контекстами?

Например вызываю queue с нужной очередью, в queue.conf прописан переход на Local канал: member =>Local/100@main/n,0,,SIP/100, нужно на тем что-бы когда народ звонит с города и попадает на манагера из очереди работали правила переадресации на мобильный(тоже хотелки руководства).

Deleted
()
Ответ на: комментарий от kernelpanic

Ты понимаешь, что глобальные переменные - это те, что описыны в секции [global]?

Не только, еще те которые определяются как: __NAME

Deleted
()
Ответ на: комментарий от Deleted

Хотелки руководства.

Это конечно многое объясняет, да.

А от локальных каналов достаточно часто можно избавиться.

kernelpanic ★★★★★
()
Ответ на: комментарий от Confucij

Ну по регистрации абонетов и транков понятно в целом, если описание того как на ней ivr делать? И еще переадресацию по таймауту и занятости линии?

Deleted
()
Последнее исправление: log4tmp (всего исправлений: 1)
Ответ на: комментарий от kernelpanic

А от локальных каналов достаточно часто можно избавиться.

Подскажешь как? У меня только идея переписать queue на lua.

Deleted
()
Ответ на: комментарий от Deleted

Для этого надо видеть хотя бы кусок диалплана.

А вообще у Queue есть

gosub
    Will run a gosub on the called party's channel (the queue member) once the
    parties are connected.

kernelpanic ★★★★★
()
Ответ на: комментарий от Deleted

IVR у нее, насколько я разобрался, реализовывать можно через external module. В вики есть примеры IVR на PHP и Python. Я реализовывал IVR меню на встроенном JS интерпретаторе. Еще есть модули PBX они вроде тоже от этом.

Confucij
()
Ответ на: комментарий от kernelpanic

Не, такое не подойдет. Ну примерно такой(на самом деле крупнее, т.к. всякие cdr, несколько ivr, проверки и пр) dialplan:

function main(c,e)
 --проверка наличия наследуемых переменных
 --проверки для автоматической переадресации
 --установка опций
 --проверка кто(внешний/внутренний) куда(вовнутрь/вовне) звонит и установка внешней линии(если надо) 
 app.dial("SIP/"..<опционально линия/>..<,таймаут>..<,опции>)
 --проверка статуса dial для timeout переадресации
 app.hangup()
end;
extensions={}
extensions.cmp=main;
extensions.inline={
 ["_X8007006050"] = function(c,e)
  --Тут установка всяких наследуемых переменных и пр.
  app.answer()
  app.background(...)
  app.waitexten("3")
 end
 ["_[ti]"] = function(c,e)
  app.queue(test)
 end
};

Еще кстати у asterisk есть прикол, что если несколько номеров от одного провайдера(ip один), то он их нормально не умеет по контекстам распихивать, приходится к такому прибегать:

extensions.inline={
 ["<номер1>"] = function(c,e)
  app.goto("inline1,<номер1>,1")
 end;
 ["<номер2>"] = function(c,e)
  app.goto("inline1,<номер2>,1")
 end;
 ["<номер3>"] = function(c,e)
  app.goto("inline1,<номер3>,1")
 end;
};
Но на форуме по asterisk сказали, что это особенность sip и иначе никак.

Deleted
()
Ответ на: комментарий от Confucij

Ок, с python меня вполне устроит, буду пробовать.

Deleted
()

Пробовал FreeSwitch, но в нем dialplan позаимствован из asterisk

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

Требования: SIP, Открытость/бесплатность, Актуальность

если только SIP без RTP-функций - Kamailio/OpenSIPS. Еще YATE, она как SIP-H.323 шлюз кстати неплоха

upcFrost ★★★★★
()
Последнее исправление: upcFrost (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ну из приведенного куска лапши не видно. А что в контексте main?

несколько номеров от одного провайдера(ip один), то он их нормально не умеет по контекстам распихивать

Ну в общем-то да, так и есть.

З.Ы. на AEL этот кусок был бы элегантнее)

kernelpanic ★★★★★
()

особенности написания диалплана - это последнее, о чем я бы заботился.

zgen ★★★★★
()
Ответ на: комментарий от upcFrost

разупорись.

Они реально одинаковые и если после aster переходить на freeswitch, то там то-же самое, только файлики в разных местах лежат и XML вместо plain text(хотя на wiki описан вараинт, когда можно обычный dialplan от asterisk подсунуть в freeswitch)

Deleted
()
Ответ на: комментарий от kernelpanic

В реальном коде лапши еще больше, мне ее если честно показывать стыдно(да и руководство если наткнется - прибьет), а так работает два года без нареканий, но вот если увольняться буду это все дело придется в документации описывать и мне опять-же стыдно эту лапшу показывать.

Deleted
()
Ответ на: комментарий от zgen

А о чем тогда? Нагрузка - около 300 аппаратов, 6 внешних транков, 5-6 одновременных вызовов. Кодек G726 всех устраивает по качеству. Единственное шифрования потока нет, но его явно никто не запрашивал, да и между офисами все по vpn ходит, а то что в город уходит могут вышестоящие операторы слить.

Deleted
()
Ответ на: комментарий от Deathstalker

CommuniGate Pro — серверная платформа для организации электронной почты, передачи голосовых данных посредством технологии VoIP, мгновенного обмена сообщениями и автоматизации совместной работы.

Слишком много лишнего.

Deleted
()
Ответ на: комментарий от Deleted

В неудачных архитектурных решениях, которые могут приводить к неработоспособности системы вообще из-за плохого кода Asterisk.

Нагрузка смешная, тут даже говорить не о чем.

zgen ★★★★★
()
Ответ на: комментарий от zgen

архитектурных решениях

Где можно почитать про удачные? Я как-то раз создавал тему про поиск книжек про архитектуру офисных АТС и пр, так ничего не предложили.

Deleted
()
Ответ на: комментарий от Deleted

Я код и архитектуру Asterisk'а имел в виду вообще то.

Если у вас нет специальных требований - вообще пофиг, что использовать.

zgen ★★★★★
()
Последнее исправление: zgen (всего исправлений: 1)
Ответ на: комментарий от zgen

Требования есть, но они чисто dialplan-овые

Deleted
()
1 ноября 2017 г.
Ответ на: комментарий от Deleted

Еще кстати у asterisk есть прикол, что если несколько номеров от одного провайдера(ip один), то он их нормально не умеет по контекстам распихивать

если ты про chan_sip, то есть опция:

callbackextension=123 ; Register with this server and require calls coming back to this extension

Turbid ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.