
Konstantin
20.06.2017
19:58:22
Много ресурсов уходит на изменение состояний вызова, выделение/освобождение памяти и прочее. Знакомая история.

Alexandru
20.06.2017
19:58:33
Ну это раз
Второе - дп на луа это хорошо
Но мне нужно централизованное хранилище

Google

Alexandru
20.06.2017
19:59:06
Астерик риалтайм это говно
Ну вот сразу с порога говорю

Konstantin
20.06.2017
19:59:19
mongo и сценарии доступа

Alexandru
20.06.2017
19:59:26
Ari ami порой избыточно

Yuriy
20.06.2017
19:59:31
Я вообще не использую BD на проектах напрямую с астериском
чрез API
Вертятся микросервисы
туда запросами уходят данные по http
да и с FS такая же петрушка

Konstantin
20.06.2017
20:00:37
В Kazoo эти задачи решены, там на MQ вся синхронизация и распределённые БД.

Alexandru
20.06.2017
20:01:11
Казу отдельная история

Yuriy
20.06.2017
20:01:12
ну да. А тут что на FS что на *надо писать сво реализацию

Konstantin
20.06.2017
20:02:58
Что касается большого кол-ва коротких вызовов, то можно сделать "финт ушами" и просто не посылать их сразу на FS/Aster, а использовать 3pcc и перетаскивать в определённый момент эти вызовы на media-сервер.

Google

Konstantin
20.06.2017
20:04:17
Одни парни так делали для PDS(упреждающий набор), писали специальный скрипт, который только "отвеченные" вызовы направлял на Aster, а до ответа они на "заглушке" вертелись.
Получается такая статистика:
делается 100 вызовов, из которых реально будут отвечены только 1-5. Соответственно 99-95% нагрузки идёт на заглушку и только 1-5% на Aster(в их случае)

Yuriy
20.06.2017
20:06:17
ну вообще на астере можно драйвер поменять. На pjsip. тогда проблема уйдет тоже. pjsip многопоточен

Alexandru
20.06.2017
20:33:12
Может стоит и потрогать астер... Не имел с ним дел очень давно, уж точно до нормального pjsip

Yuriy
20.06.2017
20:34:19
Лично мое мнение - надо работать с тем, с чем удобно.
Я перешел на FS только из за того что один из проектов в ТЗ требовал FS А не Asterisk
Сейчас у меня очень двояое впечатление и от первого и от второго))

made
21.06.2017
07:16:59
Господа, доброго дня.
Подскажите, пожалуйста, возможно ли реализовать такую схему:
Есть 3 бокса freeswitch.
На каждом организуется своя видеоконференция.
В какой-то момент времени нужно объеденить эти конференции в одну,
так, чтобы это выглядело, как одна общая конфа.

Alexandru
21.06.2017
07:34:21
хм
а настройки конфы какие

made
21.06.2017
07:37:12
стандартная конфа из комплекта freeswitch-meta-all, та что по 3500.
<extension name="cdquality_stereo_conferences">
<condition field="destination_number" expression="^(35\d{2}).*?-screen$">
<action application="answer"/>
<action application="send_display" data="FreeSWITCH Conference|$1"/>
<action application="set" data="conference_member_flags=join-vid-floor"/>
<action application="conference" data="$1-${domain_name}@video-mcu-stereo"/>
</condition>
</extension>

Yuriy
21.06.2017
07:39:18
можно из какой либо конференции через донабор например или ESL послать originate через bgapi на другой сервер и зацепиться вызываемом сервере за конференцию

Konstantin
21.06.2017
07:39:57
Интересно, а чем "вызвон" из этой конфы в сторону другой конфы будет принципиально отличаться от присоединения ко второй конфе ещё одного пользователя?

Yuriy
21.06.2017
07:40:34
ни чем. Поэтому так и написал

Konstantin
21.06.2017
07:40:41
И уточняющий вопрос: FreeSwitch в конфе видео смешивает?
Я помню, что были попытки "пробрасывать" видео-потоки, не смешивая их, но не помню, к чему это пришло в итоге.

made
21.06.2017
07:41:52
смешивает. и канал между фрисвитчами очень узкий (1мбит), потому нельзя просто пользователей одного перенаправлять на другого.
хотя, если без этого никак - прщай кач-во видео)

Konstantin
21.06.2017
07:42:19
Если смешивает, то как и обсуждается - делается мост.
Пробросить управление конференцией, пожалуй, не получится, т.к. для второй конференции все участники первой это один участник.

Yuriy
21.06.2017
07:44:44
если нужно управление - то через transfer просто переподключить участников к новой

Google

Konstantin
21.06.2017
07:45:26
Тут весь смысл в распределениии, как я понял. Так-что transfer не вариант.

made
21.06.2017
07:46:30
да, смысл в распределении, экономия канале меж боксов и автономность в случае отказа на своих абонентах.
и в случае bridge и в случае transfer объем траффика между боксами будет равный?

Konstantin
21.06.2017
07:47:04
transfer - это внутренняя операция, вопрос некорректный

made
21.06.2017
07:47:12
или bridge будет гонять "микшированый" поток?

Konstantin
21.06.2017
07:47:26
мост будет микшированные потоки гонять

made
21.06.2017
07:47:36
уже неплохо

Konstantin
21.06.2017
07:48:27
Управление останется раздельным. В части слышимости/видимости будет всё работать.
А допилить "проксирование управления" - интересная идея, кстати.

made
21.06.2017
07:52:26
и еще вопрос, если не надоел.
есть ли стандартный способ на клиенте получить список зарегистрированых пользователей?
клиент - JsSIP со своим интерфейсом, в распоряжении соединение с FS по веб-сокету и весь арсенал http/ajax и т.п.
грубо говоря список подключеных со статусами, чтоб ткнуть и позвонить.

Konstantin
21.06.2017
07:53:29
именно зарегистрированных по SIP или состояние регистраций/вызовов по некому списку?
Есть такая штука как PRESENCE - как раз решает задачу слежения за списком контактов.

Konstantin
21.06.2017
07:55:40
Но сам список контактов никак "стандартно" не получается - это произвольно.

made
21.06.2017
07:55:52
список - это все, что есть в directory.xml, плюс их статусы (онлайн/офлайн).
можно ли средствами FS эту инфу раздать клиентам.

Konstantin
21.06.2017
07:56:55
http://www.voiceoperatorpanel.com/

made
21.06.2017
07:56:57
т.е. парсить directory.xml, смотреть на presence и все это раздавать своим tcp сервером?

Konstantin
21.06.2017
07:56:59
Это хочется?

made
21.06.2017
07:57:59
конечно хочется) но это оверкилл. достаточно скайп-подобного списка контактов)

Konstantin
21.06.2017
07:58:31
Как правило, "список" получают любым удобным для себя методом, а слежение организуется стандартным PRESENCE

made
21.06.2017
07:58:48
понял. спасибо огромное!

Google

Yuriy
21.06.2017
08:01:59
Завернул все в бд храню там комнаты, пользователей, настройки конфы)
через websocket клиентом подписываюсь на обновления списка участников - получаю реалтайм

made
21.06.2017
08:03:00
да, я просто хотел обезопаситься от велостроения лишнего.

Dmitriy
21.06.2017
08:05:54
добрый день. кто нибудь использовал в практике оповещение на почту когда сип транк отваливался?

Konstantin
21.06.2017
08:06:30
И на почту и по СМС через систему мониторинга, в частности Zabbix

Dmitriy
21.06.2017
08:08:35
в Zabbix - е есть имено чтобы сип транк когда отваливался или он сервер только мониторит?
скриптами можно сделать но я думал что то есть родное на фс

? Stan
21.06.2017
08:17:19
Вроде ФС через СНМП отдает в т.ч. статус реги

Admin
ERROR: S client not available

ros
21.06.2017
09:13:53

Konstantin
21.06.2017
09:16:35
Да. Делали "вещание". Было дело.
Клиенты на rpi и gstreamer и sipp, конечно.

made
21.06.2017
09:17:25

ros
21.06.2017
09:18:18
на блюдечке никто не выложит
даже если и выложит работать не будет

Konstantin
21.06.2017
09:18:50
Как правило, статьи "по памяти" прсле проекта пишут уже.
К ним стоит относиться по принципу: "помню, что примерно так делал"

LLC INTERCOMTEL
21.06.2017
13:15:01
Приветствую! Господа,подскажите как правильно сделать донабор dtmf при исходящем вызове. Т.е. при наборе через шлюз на определенный номер отвечает disa, в ней нужно донабрать комбинацию, а затем вызываемый номер. Заранее спасибо за ответы

Alexandru
21.06.2017
13:19:24

LLC INTERCOMTEL
21.06.2017
13:20:45
Нужно после ответа сгенерировать звуки тонового набора.
inband получается

Alexandru
21.06.2017
13:22:34
execute_on_answer spandsp_send_dtmf

Google

Alexandru
21.06.2017
13:23:35
просто send_dtmf*
и dtmf_type не забыть
но по сути все вертится вокруг execute_on_answer

Yuriy
21.06.2017
13:39:28
никто не пробовал переписать hangup_cause переменную после поднятия трубки?
Задача такая:
после поднятия трубки на отвечающем плече должны донабрать 1 скажем - это будет говорить о том тчто трукбу взял действительно человек. Есл же нет, то положить трукбу и звонок считать неотвеченным
В общем и целомя могу конечно сделать специальную переменную и отдать ее куда хочу, но как по мне, было бы здорово управлять этим через hangup_cause
попробовал переписать переменную через
session:setVariable("bridge_hangup_cause"," CALL_REJECTED")
Результат нулевой

Alexandru
21.06.2017
13:43:25
у приложения hangup есть параметр
туда можно вписать hangup_cause

Yuriy
21.06.2017
13:47:47
то что нужно
Работает

LLC INTERCOMTEL
21.06.2017
14:04:00

Alexandru
21.06.2017
14:04:17
все не так

LLC INTERCOMTEL
21.06.2017
14:04:18
<condition field="destination_number" expression="^([45]\d{2})$">
<action application="set" data="dtmf_type=inband"/>
<action application="set" data="execute_on_answer="send_dtmf *4719110852@500"/>
<action application="bridge" data="sofia/external/1144@192.168.11.1:35060"/>
<action application="answer" />
?

Alexandru
21.06.2017
14:04:42
answer зачем
или это я натупил... вроде там send_dtmf_generate нужно
хотя не факт

Yuriy
21.06.2017
14:07:29
атака продолжается
session:setVariable("continue_on_fail","true")
session:setVariable("hangup_after_bridge","false")
session:execute("bridge",processingData.dialString)
session:consoleLog("notice",session:getVariable("bridge_hangup_cause")) — тут пусто...
Звонок отбиваю сам на вызываемой стороне

Alexandru
21.06.2017
14:10:09

Yuriy
21.06.2017
14:10:33
При поднятии трубки вижу норм
А если например не поднимаю а просто отбиваю (USER_BUSY)
То ничего переменная пустая
Хотя в логах вот так
Hangup sofia/external/92Av96hW50q9 [CS_CONSUME_MEDIA] [USER_BUSY]