@ru_freeswitch

Страница 257 из 430
Александр
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. Какие-нибудь есть еще варианты?

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
Alexey
07.03.2018
07:29:17
"подмешать", а товарищу просто зациклить нужно, пока вызов на парковке.
так если файл один и тот же, из него можно moh сделать и подмешивать через displace (moh бесконечный) https://freeswitch.org/confluence/display/FREESWITCH/mod_local_stream

Сергей
07.03.2018
07:30:40
Я c PLAYBACK_STOP и endless_palyback добивался нужного эффекта, а если нужно просто DTMF(КПВ, скажем) играть, то tone_stream и loops=-1
Музыка нужна, поэтому tone_stream не то)) А как удавалось прервать проигрывание через endless_palyback?

Konstantin
07.03.2018
07:31:13
так если файл один и тот же, из него можно moh сделать и подмешивать через displace (moh бесконечный) https://freeswitch.org/confluence/display/FREESWITCH/mod_local_stream
Если сам по себе local_stream позволяет бесконечно играть, то это выход даже с uuid_broadcast playback::local_stream://

uuid_break для прерывания

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

Konstantin
07.03.2018
07:34:26
Мне не удаваось endless_palyback прервать через uuid_break, заявляют что endless_palyback вообще нельзя прервать (прерывать пробовал через CLI).
Вероятно так и есть. Тогда, как предложил @nuclear_horse через local_stream:// Если не хочется с событиями заморачиваться. ;-)

Сергей
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
Гляну, спасибо) Всем благодарствую за участие в решении вопроса))

Konstantin
07.03.2018
07:42:55
но им-то точно что угодно можно будет стримить
Это, пожалуй слишком. :-) Хотя, да, можно запулить в мультикаст и через 3PCC для всей системы синхронный MOH играть :-) Лишь бы enpoints mcast умели.

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

Alexey
07.03.2018
07:44:03
я как-то не оч понял, после кофе ещё гляну
выглядит так, будто вы хотите continue on fail = true, hangup after brdige = false и потом какой-нибудь valet park

во FS moh синхронный, local_stream так и работает, один на всех емнип, а sipxcom (по крайней мере раньше) вообще всю медию через FS делал

хотя конкретно за moh не помню, давно уже не крутил

Google
Konstantin
07.03.2018
07:46:13
выглядит так, будто вы хотите continue on fail = true, hangup after brdige = false и потом какой-нибудь valet park
Там что-то вроде этого и получалось. Я через API делал originate с постановкой в park и потом uuid_broadcast UUID answer:: делал. Что-то типо такого.

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
Коллеги, добрый день. Возник такой вопрос, может кто то сталкивался с такой задачей. Имеется несколько телефонов, и один 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
скорее всего вы хотите добавить какие-то переменные в директорию и потом проверять их в dialplan

то, о чём я и писал, хороший пример

Denis 災 nobody
07.03.2018
09:51:22
А не надо использовать myisam: овчинка выделки не стоит.
исам норм, когда много чтения и почти нет записи, а также не нужна транзакционность. А еще она восстанавливается легче после сбоев, у нас половина сбоев инны - и откат из бэкапа

Виталий
07.03.2018
09:56:11
cdr не тот случай явно

ребят - мы тут все взрослые дядьки с большим погружением в интерпрайз - каждый сам знает достоинства-недостатки баз. ну и решить может сам )

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 и приложения, на сколько я помню.

Кеков Зез
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
ну а toll_allow - не работает чтоли получается (?
Вместо caller_id_number можно любую другую переменную использовать.

Пепеменные в части использования в condition абсолютно равноправны.

Главное, чтобы на момент прохола по dialplan переменная уже была определена в канале.

Alexey
07.03.2018
14:04:00
Коллеги, взгляните пожалуйста на конфиг <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
здесь всё работает именно так, как ожидается, не понимаю проблемы а ещё вам стоит почитать про XML dialplan в Confluence как минимум на счёт continue=true

Виталий
07.03.2018
14:04:28
нашли там проблему

кондишн с toll_allow закрывается сразу а не распостраняется на всю оствшуюся часть

Alexey
07.03.2018
14:08:14
кондишн с toll_allow закрывается сразу а не распостраняется на всю оствшуюся часть
не уверен, что понял вас верно, но если вы про "/" в xml тегах, то он стоит именно так как и должен

Sergey
07.03.2018
14:32:55
<condition field="caller_id_number" expression="^1\d{3}$" break="on-false"/>
Спасибо, по такому методу вроде обработался. Тут возник еще один вопрос, могу я подряд несколько condition указать с разными callerid? <condition field="caller_id_number" expression="^6018$" break="on-false"/> <condition field="caller_id_number" expression="^6033$" break="on-false"/>

в таком виде первое правило обрабатывается, но если звонить с 6033, то не проходит дальше

ситуация такая что, номера в разброску и правила разные, т.е. мне в разных правилах разбросанные номера нужно использовать

Страница 257 из 430