Size: a a a

2021 March 03

RP

Roman Pertsev in Asterisker-ы
Igor Vyrva
ну вот в менеджере у меня фильтр
eventfilter=Event: DeviceStateChange
eventfilter=Event: AttendedTransfer

и вот чтот расширять как-то не хочется
при том что в самом начале работы скрипта я ещё вызываю
Action: DeviceStateList
дабы узнать какие сейчас Endpoint'ы подключены к АТС и какие у них статусы
у тех кто подключен и статусы отличаются от not_inuse - надо выяснить кто с кем разговаривает
и вот тут я подключаю cURL'ами инфу из ARI
и вот споткнулся что не могу сопоставить кто ответил
можно конечно косвенно попытаться сделать это через корёжинье name: {tech}/{resource}-кучацифр
но это кажется как-то не тру
не хочется а придется, ари не для этих целей
источник

RP

Roman Pertsev in Asterisker-ы
можно фильтровать по классам событий еще
источник

AO

Anton Oskin in Asterisker-ы
Igor Vyrva
ну вот в менеджере у меня фильтр
eventfilter=Event: DeviceStateChange
eventfilter=Event: AttendedTransfer

и вот чтот расширять как-то не хочется
при том что в самом начале работы скрипта я ещё вызываю
Action: DeviceStateList
дабы узнать какие сейчас Endpoint'ы подключены к АТС и какие у них статусы
у тех кто подключен и статусы отличаются от not_inuse - надо выяснить кто с кем разговаривает
и вот тут я подключаю cURL'ами инфу из ARI
и вот споткнулся что не могу сопоставить кто ответил
можно конечно косвенно попытаться сделать это через корёжинье name: {tech}/{resource}-кучацифр
но это кажется как-то не тру
Самый простой способ, который знаю, - ловить событие NewConnectedLine. Должно быть в момент ответа и в ConnectedLineNum будет номер ответившего.

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

RP

Roman Pertsev in Asterisker-ы
ну и никто не отменять просто скипать не нужные события в своем скрипте
источник

IV

Igor Vyrva in Asterisker-ы
Anton Oskin
Самый простой способ, который знаю, - ловить событие NewConnectedLine. Должно быть в момент ответа и в ConnectedLineNum будет номер ответившего.

Если нужно что-то более сложное/точное, придётся отслеживать с каким каналом звонящий соединяется через промежуточные Local-каналы (по крайней мере сам не нашёл более простого решения).
это всё замечательно, но как узнать инфу если  оно было ДО запуска скрипта?
источник

AO

Anton Oskin in Asterisker-ы
Igor Vyrva
это всё замечательно, но как узнать инфу если  оно было ДО запуска скрипта?
Как написал Роман, нужен демон, который будет постоянно подключен к AMI.
источник

IV

Igor Vyrva in Asterisker-ы
Anton Oskin
Как написал Роман, нужен демон, который будет постоянно подключен к AMI.
ну, я запускаю скрипт раз в минуту по крону
он проверяет - и если уже подключен то просто новый не запускается
но бывает что на АТС нет вызовов (ночь к примеру) и скрипт по тайматут отключается
тогда есть шанс пропустить часть инфы
источник

RP

Roman Pertsev in Asterisker-ы
Igor Vyrva
ну, я запускаю скрипт раз в минуту по крону
он проверяет - и если уже подключен то просто новый не запускается
но бывает что на АТС нет вызовов (ночь к примеру) и скрипт по тайматут отключается
тогда есть шанс пропустить часть инфы
скрипт запускается один раз при загрузке системы и работает, все, это основная концепция.

В скрипте бесконечный цикл который получает инфу из ами. Получаешь ее, обрабатываешь и что-то делаешь
источник

як

я никуда не тороплюс... in Asterisker-ы
коллеги, редактирую контекст, делаю dialplan reload, но ничего не меняется. Куда копать?
источник

АХ

Алексей Хирянов... in Asterisker-ы
я никуда не тороплюсь когда напьюсь тогда напьюсь
коллеги, редактирую контекст, делаю dialplan reload, но ничего не меняется. Куда копать?
Где не меняется? В жизни?
источник

YG

Yuriy Gorlichenko in Asterisker-ы
я никуда не тороплюсь когда напьюсь тогда напьюсь
коллеги, редактирую контекст, делаю dialplan reload, но ничего не меняется. Куда копать?
dialplan show
источник

IV

Igor Vyrva in Asterisker-ы
я никуда не тороплюсь когда напьюсь тогда напьюсь
коллеги, редактирую контекст, делаю dialplan reload, но ничего не меняется. Куда копать?
чем проверяли, как сравнивали?
чистый астер или freepbx?
какой файл правили?
источник

C

Chumayu in Asterisker-ы
Добрый,
нужна помощь (за денюжку) связка UCM6102 —> Mikrotik (L2TP client) —> Ubuntu ((L2TP server) and (OPENVPN server)) -> FREEPBX (Asterisk 16) (OPENVP client).
Звонок приходит а голоса нету, NAT'а по дороге нету. Готов заплатить, за подсказку.
Кому интересно в ЛС.
источник

як

я никуда не тороплюс... in Asterisker-ы
Igor Vyrva
чем проверяли, как сравнивали?
чистый астер или freepbx?
какой файл правили?
ael reload

уже подсказали добрые люди в соседнем чяти
источник

IV

Igor Vyrva in Asterisker-ы
я никуда не тороплюсь когда напьюсь тогда напьюсь
ael reload

уже подсказали добрые люди в соседнем чяти
я заметил
источник

К

Костик in Asterisker-ы
у меня очередной вопрос про запись разговоров, но в этот раз скорее про область видимости переменных канала...
итак, сложная ситауция с callback
всё сделано и работет по "учебнкику"
а именно, создаётся call файл, который сначала звоник абоненту А, тот отвечает, ему играет привестствие и идёт вызов абоненту Б...
упрощённо call файл:
Originate: Local/<numA>@contextstart
Context: contextcallback
Extension: <numB>

упрощённо контексты
contextstart:
__recfile=.....
MixMonitor(recfile...)
Dial(..<numA>)
HangUp

contextcallback:
Answer
Playback
ExecIf( "recfile" = "" ) ... __recfile ... & MixMonitor
Dial( ..<numB>)

так вот, в этой конструкции получается 2 записи, т.к. не смотря на два подчёркивания в contextstart  у recfile, в contextcallback эта переменная неизвестна и заново создаётся

это пример, тут вопрос про то что во втором плече ничего не известно про переменные первого плеча
как то побороть это можно ?
источник

ДС

Дмитрий Спиридонов... in Asterisker-ы
Костик
у меня очередной вопрос про запись разговоров, но в этот раз скорее про область видимости переменных канала...
итак, сложная ситауция с callback
всё сделано и работет по "учебнкику"
а именно, создаётся call файл, который сначала звоник абоненту А, тот отвечает, ему играет привестствие и идёт вызов абоненту Б...
упрощённо call файл:
Originate: Local/<numA>@contextstart
Context: contextcallback
Extension: <numB>

упрощённо контексты
contextstart:
__recfile=.....
MixMonitor(recfile...)
Dial(..<numA>)
HangUp

contextcallback:
Answer
Playback
ExecIf( "recfile" = "" ) ... __recfile ... & MixMonitor
Dial( ..<numB>)

так вот, в этой конструкции получается 2 записи, т.к. не смотря на два подчёркивания в contextstart  у recfile, в contextcallback эта переменная неизвестна и заново создаётся

это пример, тут вопрос про то что во втором плече ничего не известно про переменные первого плеча
как то побороть это можно ?
на вскидку можно попробовать обойти. например
1)создавать переменные в call файле
2)у вас это local каналы и они будут отличаться одной циферкой ;1 ;2, т.е. можно вычислить второй и использовать SHARED()
источник

MS

Maxim Shekhovtsov in Asterisker-ы
Всем привет. Некоторое время назад обсуждали допустимый процент потерь RTP. Тут от 0.5 до 5% цифры были.  Просто потери есть в районе 2%. В МТТ говорят иди к провайдеру, провайдер говорит - мы не виноваты такое случается. Так вот, какой процент всё же допустим? Можно ли сослаться на что-то чтобы прижать провайдера?
источник

OS

Oleg Shteinliht in Asterisker-ы
Maxim Shekhovtsov
Всем привет. Некоторое время назад обсуждали допустимый процент потерь RTP. Тут от 0.5 до 5% цифры были.  Просто потери есть в районе 2%. В МТТ говорят иди к провайдеру, провайдер говорит - мы не виноваты такое случается. Так вот, какой процент всё же допустим? Можно ли сослаться на что-то чтобы прижать провайдера?
считается допустимой нормой потери RTP до 3% (тогда речь будет, более менее комфортной), джиттер не должен превышать 150мс
источник

OS

Oleg Shteinliht in Asterisker-ы
так же имеет значение кодеки, и джиттер-буфер
источник