
Александр
06.03.2018
10:30:04
чатик

Konstantin
06.03.2018
10:30:38
чатик
Telegram позволяет править сообщения. ;-)

Yuriy
06.03.2018
10:31:50
Это лень

Евгений Большедворский
07.03.2018
03:29:40

Google

Yuriy
07.03.2018
03:32:20
А не надо использовать myisam: овчинка выделки не стоит.

Евгений Большедворский
07.03.2018
03:33:30
На shared хостинг - куда проблем меньше :) но сейчас уже возможно , у меня опыт где то 10 летней давности

енот
07.03.2018
03:58:13
вы ещё не закончили
ужас

Сергей
07.03.2018
04:11:00
Прошу помощи.
Пытаюсь реализовать следующую схему.
Приходит звонкок. Мне необходимо запустить проигрывание файла звонящему в отдельном трэде, а в текущем канале запустить скрипт lua, в котором делается всякое.
Пока пришел к тому, что в отдельном трэде можно запустить проигрывание через uuid_broadcast, но столкнулся с проблемой, что проигрывание файла нельзя закольцевать.
Может кто-нибудь подсказать как можно запустить проигрывание файла в петле через uuid_broadcast?

Konstantin
07.03.2018
04:11:57
Привет. Закольцевать можно.
endless_palyback тебе в помощь
А также можешь ловить событие PLAYBACK_STOP и в зависимости от необходимости возобновлять проигрывание.

Сергей
07.03.2018
04:16:16
Забыл добавить, в определенный момент мне нужно сделать uuid_break для а-лега и сокннектить с б-легом. Я так понимаю endless_palyback нельза прервать через uuid_break.
У меня реализация без внешнего анализа событий. Это я про PLAYBACK_STOP.
Какие-нибудь есть еще варианты?

Alexey
07.03.2018
07:20:45


Konstantin
07.03.2018
07:21:24
"подмешать", а товарищу просто зациклить нужно, пока вызов на парковке.
@nuclear_horse , а я замечал такое состояние канала, в котором он не выполняет никаких приложений и на нём включается MOH автоматически. Этого состояния можно как-то "специально" добиться? Скажем, с помощью какой-то переменной отключить "завершение" при достижении конца dialplan?
Я тогда был занят какой-то задачей и это как побочный эффект вылезло, поэтому я не стал углубляться. А сейчас контекст мне напомнил про этот момент.

Сергей
07.03.2018
07:26:49
displace_session/uuid_displace тоже обдумывал, там видимо с зацикливанием тоже не получится.
Пойду обратным путем, проигрывание файла с зацикливанием буду делать в основном канале через дополнительный lua скрипт, а основной lua-скрипт буду запускать в отделном трэде.
А так, ловить событие PLAYBACK_STOP наверное самый оптимальный вариант, если анализировать ивенты на внешней стороне.

Google

Konstantin
07.03.2018
07:28:38

Alexey
07.03.2018
07:29:17

Сергей
07.03.2018
07:30:40

Konstantin
07.03.2018
07:31:13
uuid_break для прерывания

Сергей
07.03.2018
07:33:35
uuid_break для прерывания
Мне не удаваось endless_palyback прервать через uuid_break, заявляют что endless_palyback вообще нельзя прервать (прерывать пробовал через CLI).

Konstantin
07.03.2018
07:34:26

Сергей
07.03.2018
07:35:26
В качестве музыки может исползоваться рекламное сообщение, поэтому его нужно начинать проигрывать всегда с самого начала, а local_stream проигрывает со случайного места((

Alexey
07.03.2018
07:35:27
в общем попробуйте, если есть возможность $${hold_music} через displace подмешать, если заработает, то это оно ($${hold_music} на самом деле local_stream://moh , и их таких можно мколько угодно создавать)

Konstantin
07.03.2018
07:36:56
По сути, $${hold_music} - это просто константа, а что в ней - это кому как удобно и она просто "по умолчанию" передаётся как аргумент в playback на канале в определённые моменты.

Alexey
07.03.2018
07:39:31
mod_shout?
может правда понадобиться свой icecast серевер)
но им-то точно что угодно можно будет стримить

Сергей
07.03.2018
07:41:43
Гляну, спасибо)
Всем благодарствую за участие в решении вопроса))

Alexey
07.03.2018
07:42:40

Konstantin
07.03.2018
07:42:55
В том же sipXcom(openUC) MOH так и реализован - через перенаправление RTP от MOH сервера на конкретного пользователя, которог на удержание поставили.

Alexey
07.03.2018
07:44:03
во FS moh синхронный, local_stream так и работает, один на всех емнип, а sipxcom (по крайней мере раньше) вообще всю медию через FS делал
хотя конкретно за moh не помню, давно уже не крутил

Google

Konstantin
07.03.2018
07:46:13

Alexey
07.03.2018
07:52:15

Konstantin
07.03.2018
07:52:50
Да. :-)
А ещё можно "как в CISCO" SPANLESS recording реализовать можно через "встроенные" в телефонный аппарат конференции. Но это совсем "слишком". :-)


Sergey
07.03.2018
08:04:05
Коллеги, добрый день.
Возник такой вопрос, может кто то сталкивался с такой задачей. Имеется несколько телефонов, и один 4-х портовый GSM шлюз. нужно чтобы набор с телефона через 8 обрабатывался для каждого телефона отдельным правилом.
Правила набора выглядят след образом
<extension name="tibb_out_mob_test">
<condition field="destination_number" expression="^(8\d{10})$">
<action application="set" data="RECORD_STEREO=false"/>
<action application="set" data="ringback=$${us-ring}"/>
<action application="set" data="effective_caller_id_number="/>
<action application="set" data="effective_caller_id_name="/>
<action application="bridge" data="sofia/gateway/procall_mob3/1$1"/>
</condition>
</extension>
<extension name="tibb_out_mob_test2">
<condition field="destination_number" expression="^(8\d{10})$">
<action application="set" data="RECORD_STEREO=false"/>
<action application="set" data="ringback=$${us-ring}"/>
<action application="set" data="effective_caller_id_number="/>
<action application="set" data="effective_caller_id_name="/>
<action application="bridge" data="sofia/gateway/procall_mob3/2$1"/>
</condition>
</extension>
Как я могу указать ,чтобы разные экстеншены обращались к разному правилу? при том, что оба экстеншена будут набирать номер через 8


Виталий
07.03.2018
08:04:46
можешь
<variable name="toll_allow" value="domestic,international,local "/>

Alexey
07.03.2018
08:05:23
то, о чём я и писал, хороший пример


Sergey
07.03.2018
08:09:51

Denis 災 nobody
07.03.2018
09:51:22

Виталий
07.03.2018
09:56:11
cdr не тот случай явно
ребят - мы тут все взрослые дядьки с большим погружением в интерпрайз - каждый сам знает достоинства-недостатки баз. ну и решить может сам )

Yuriy
07.03.2018
10:10:11

Denis 災 nobody
07.03.2018
10:10:30
но да, всю

Google

Yuriy
07.03.2018
10:13:27
Сорян на запись. На обновление информации

Denis 災 nobody
07.03.2018
10:14:00
на любое изменение. А чтение - никаких локов, поэтому сразу и было "когда мало записи"

Yuriy
07.03.2018
10:14:52
Дада. я поэтому и написал - сорян, потому что неправильно прочитал изначально. Но мы можем это еще пообсуждать конечно
Любое изменение - это и есть обновление. Ну слово -обновить оно в себе смысл такой несет - что была информация а потом к ней что то добавили или что то исправили или удалили что то. Это обновление называется.


Sergey
07.03.2018
11:16:37
Коллеги, взгляните пожалуйста на конфиг
<user id="1018">
<params>
<param name="password" value="$${default_password}"/>
<param name="vm-password" value="1018"/>
</params>
<variables>
<variable name="toll_allow" value="domestic,international,local,aptek"/>
<variable name="accountcode" value="1018"/>
<variable name="user_context" value="$${domain}"/>
<variable name="effective_caller_id_name" value="Extension 1018"/>
<variable name="effective_caller_id_number" value="1018"/>
<variable name="outbound_caller_id_name" value="$${outbound_caller_name}"/>
<variable name="outbound_caller_id_number" value="$${outbound_caller_id}"/>
<variable name="callgroup" value="exten"/>
</variables>
</user>
Это настройки экстена
Это настройки выхода
<extension name="tibb_out_mob_test">
<condition field="${toll_allow}" expression="test"/>
<condition field="destination_number" expression="^(8\d{10})$">
<action application="set" data="RECORD_STEREO=false"/>
<action application="set" data="ringback=$${us-ring}"/>
<action application="set" data="effective_caller_id_number="/>
<action application="set" data="effective_caller_id_name="/>
<action application="bridge" data="sofia/gateway/procall_mob3/1$1"/>
</condition>
</extension>
<extension name="tibb_out_mob_test2">
<condition field="${toll_allow}" expression="aptek"/>
<condition field="destination_number" expression="^(8\d{10})$">
<action application="set" data="RECORD_STEREO=false"/>
<action application="set" data="ringback=$${us-ring}"/>
<action application="set" data="effective_caller_id_number="/>
<action application="set" data="effective_caller_id_name="/>
<action application="bridge" data="sofia/gateway/procall_mob1/991$1"/>
</condition>
</extension>
Доходя до этих правил в кли получаю такое
Dialplan: sofia/internal/1018@192.168.60.11 parsing [prospect.loc->tibb_out_mob_test] continue=false
Dialplan: sofia/internal/1018@192.168.60.11 Regex (FAIL) [tibb_out_mob_test] ${toll_allow}() =~ /test/ break=on-false
Dialplan: sofia/internal/1018@192.168.60.11 parsing [prospect.loc->tibb_out_mob_test2] continue=false
Dialplan: sofia/internal/1018@192.168.60.11 Regex (FAIL) [tibb_out_mob_test2] ${toll_allow}() =~ /aptek/ break=on-false
инфы по toll_allow не очень много, поэтому незнаю в какую сторону копать...


Serge
07.03.2018
11:23:06
это просто переменная, смотри в ванильных конфигах пример использования

Sergey
07.03.2018
11:24:53
т.е. задача стоит такая, есть 4 разных правила, и с этих 4-х правил должны звонить только определенные группы операторов, не имея прав звонить с других правил. подход правильный? или можно организовать как то по другому?

Виталий
07.03.2018
11:51:13
<extension name="local.example.com">
<condition field="${toll_allow}" expression="local"/>
<condition field="destination_number" expression="^(\d{7})$">
<action application="set" data="effective_caller_id_number=${outbound_caller_id_number}"/>
<action application="set" data="effective_caller_id_name=${outbound_caller_id_name}"/>
<action application="bridge" data="sofia/gateway/${default_gateway}/1${default_areacode}$1"/>
</condition>
</extension>
это с ванильных
вроде так-же написано...


Анна
07.03.2018
12:16:41
Ребят, у меня вопрос по mod_callcenter. Этот модуль при запуске создает базу данных и заполяет таблицу agents агентами из конфига. При последующих запусках, этот модуль также просматривает конфиг, если появились новые агенты (или изменилась конфигурация тех агентов которые уже были) - модуль вносит эти изменения в базу данных. Но он не удаляет агентов если их в конфиге нет. То есть если при первом запуске например запустить FS с mod_callcenter и в конфиге прописать 3 агента, то они добавятся в таблицу agents. Но если потом удалить всех агентов из конфига и перезапустить FS c mod_callcenter то агенты из таблицы удалены не будут. Можно ли как то повлиять на это? Я знаю что можно добавлять/удалять агенов через команды к callcenter_config, А через конфиг их не удалить?

Konstantin
07.03.2018
12:17:42
Для этого есть соответствующие вызовы API и приложения, на сколько я помню.

Denis 災 nobody
07.03.2018
12:19:39

Кеков Зез
07.03.2018
12:19:45
я через sqlite базу правлю. Так удобнее.

Denis 災 nobody
07.03.2018
12:20:00
и была какая-то опция, чистить лишнее при старте

Кеков Зез
07.03.2018
12:20:03
А вообще, есть два параметра
truncate-agents-on-load
If defined to true, we'll delete all the agents when the module is loaded. false by default.
truncate-tiers-on-load
If defined to true, we'll delete all the tiers when the module is loaded. false by default.
но я их не тестил

Denis 災 nobody
07.03.2018
12:20:11
а, ну вот
сразу предупреждаю - если динамика и 10к+ агентов, грузится непомерно долго
у нас 20 минут было, когда начали отдавать пустых агентов и заполнять потом внешним скриптом за 1с

Google

Denis 災 nobody
07.03.2018
12:22:21

Анна
07.03.2018
12:28:16
ребят спасибо

Sergey
07.03.2018
12:36:13
коллеги, подскажите пожалуйста способ разбивки по правилам набора... как могу пускать разных экстенов по разным правилам? tool_allow в разных вариациях попробовал, не обрабатывается...
на астере это дело делал через префиксы , к каждому экстену добавлял префикс, и согласно префиксу уже гонял по нужным направлениям, что то в этом роде на ФС можно сделать?

Сергей
07.03.2018
12:39:58
Вариант с матчингом в диалплане номера звонящего не подходит?
Тоесть в condition проверять переменную caller_id_number

Konstantin
07.03.2018
13:07:59
<condition field="caller_id_number" expression="^1\d{3}$" break="on-false"/>
Это если хочется, чтоб данный extension не был пользован никем, кроме 1XXX номеров
Есть в документации раздел как раз на тему использования различных логических схем: И/ИЛИ/НЕ
google: freeswitch dialpan regexp

Виталий
07.03.2018
13:15:48
ну а toll_allow - не работает чтоли получается (?

Konstantin
07.03.2018
13:22:41
Пепеменные в части использования в condition абсолютно равноправны.
Главное, чтобы на момент прохола по dialplan переменная уже была определена в канале.

Alexey
07.03.2018
14:04:00


Виталий
07.03.2018
14:04:28
нашли там проблему
кондишн с toll_allow закрывается сразу а не распостраняется на всю оствшуюся часть

Alexey
07.03.2018
14:08:14

Sergey
07.03.2018
14:32:55
в таком виде первое правило обрабатывается, но если звонить с 6033, то не проходит дальше
ситуация такая что, номера в разброску и правила разные, т.е. мне в разных правилах разбросанные номера нужно использовать