209 просмотров
от (390 баллов) в категории Настройка провайдеров
редактировать от
Не знаю у меня ли только это, но входящая маршрутизация работает странно:

Звонок по первому правилу из "Входящая маршрутизация" перенаправляется на IVR, но через N секунд переводится на "Входящий маршрут по умолчанию - Если не подошло ни одно из правил", при этом игнорируя все остальные правила, то есть оно переходит не на следующее, а напрямую на действие по умолчанию.

N секунд это время отсюда:

"Время в секундах, после которого вызов будет направлен на следующее по приоритету правило: N"

UPD:

И все те звонки, которые пришли с внешних номеров и попали на добавочный, который оказался занят или на телефоне стоит DND - тоже проваливаются в "Входящий маршрут по умолчанию - Если не подошло ни одно из правил"

UPD2:

При создании очереди неверно задаётся стратегия, выбираю любую, а в параметры записывается всегда strategy=ringall

[QUEUE-36D1F4024A62A64254DDF65DE3A2B08F]; Test
musicclass=default
strategy=ringall
timeout=10
wrapuptime=10
ringinuse=yes
periodic-announce-frequency=45
joinempty=no
leavewhenempty=no
announce-position=yes
announce-holdtime=yes
announce-frequency=30
member => Local/4503@internal/n,1,"4503",hint:4503@internal-hints
member => Local/4504@internal/n,2,"4504",hint:4504@internal-hints
member => Local/4502@internal/n,3,"4502",hint:4502@internal-hints
member => Local/4501@internal/n,4,"4501",hint:4501@internal-hints
от (62.9 тыс. баллов)
Приложите скриншоты настроенных маршрутов.

Укажите номер версии АТС.
от (390 баллов)

Версия 2020.1.62

кусок из /etc/asterisk/extensions.conf (входящий номер изменён)

exten => _74950000000,1,NoOp(--- Incoming call ---)

same => n,Set(CHANNEL(language)=ru-ru)

same => n,Set(CHANNEL(hangup_handler_wipe)=hangup_handler,s,1)

same => n,Set(__FROM_DID=${EXTEN})

same => n,Set(__FROM_CHAN=${CHANNEL})

same => n,ExecIf($["${CHANNEL(channeltype)}" != "Local"]?Gosub(set_from_peer,s,1))

same => n,ExecIf($["${CHANNEL(channeltype)}" == "Local"]?Set(__FROM_PEER=${CALLERID(num)}))

same => n,Gosub(add-trim-prefix-clid,${EXTEN},1)

same => n,UserEvent(Interception,CALLERID: ${CALLERID(num)},chan1c: ${CHANNEL},FROM_DID: ${FROM_DID})

same => n,Gosub(check-out-work-time,${EXTEN},1) 

same => n,GosubIf($["${DIALPLAN_EXISTS(${CONTEXT}-custom,${EXTEN}),1}" == "1"]?${CONTEXT}-custom,${EXTEN},1) 

same => n,Set(M_TIMEOUT=120) 

same => n,ExecIf($["${M_DIALSTATUS}" != "ANSWER"]?Dial(Local/000100@internal-incoming/n,120,TKg));

same => n,Set(M_TIMEOUT=0)

same => n,ExecIf($["${M_DIALSTATUS}" != "ANSWER"]?Dial(Local/4504@internal/n,,TKg)); default action

  same => n,GosubIf($["${DIALPLAN_EXISTS(${CONTEXT}-after-dial-custom,${EXTEN}),1}" == "1"]?${CONTEXT}-after-dial-custom,${EXTEN},1)

same => n,Hangup()

от (390 баллов)
На 2020.1.124 проблема сохранилась, так же по истечению N секунд, указанных в "Время в секундах, после которого вызов будет направлен на следующее по приоритету правило: N" звонок переводится на номер в "Если не подошло ни одно из правил" ...

Но с очередями теперь иначе работает, записывает ringall вместо linear, остальные варианты правильно.
от (62.9 тыс. баллов)

Тут следует анализировать логи прохождения звонка:

от (390 баллов)

Сделал лог, через 10 (или 180 максимум, то есть это может произойти и посередине разговора) секунд звонок переводится на номер "если не подошло ни одно из правил" - 4504.

Log

https://pastebin.com/DCrJqXV6

от (62.9 тыс. баллов)

А звуковой файл на IVR АТС существует? 

Попробуйте использовать другой звуковой файл для воспроизведения. 

Путь к файлу /storage/usbdisk1/mikopbx/media/1577343503*

Проверить наличие файла можно при подключении по SSH:

Команда 
ls -l /storage/usbdisk1/mikopbx/media/1577343503*
от (390 баллов)
Да, звуковой файл с приветствием проигрывается. Сейчас для обхода выставлен максимальный таймаут 180 секунд и если внешние абоненты разговаривают (или просто ожидают на линии) с внутренними дольше 180 секунд (я имею в виду 180 секунд с момента попадания звонка на Аскозию), то звонок переводится на действие "если не подошло ни одно из правил".

Результат проверки файла:

~ # ls -l /storage/usbdisk1/mikopbx/media/1577343503*

-rw-r--r-- 1 www www 118656 Dec 26  2019 /storage/usbdisk1/mikopbx/media/1577343503.mp3

-rw-r--r-- 1 www www 471186 Dec 26  2019 /storage/usbdisk1/mikopbx/media/1577343503.wav
от (62.9 тыс. баллов)

Номер DID для всех входящих маршрутов одинаковый или отличается? На скрине номера скрыты. 

Если отличаются, тогда все понятно. Все работает как задумано. 

Если одни маршрут не прошел, то АТС ищет другой маршрут для этого провайдера с таким же did, если маршрут не найден, то вызов направляется на маршрут по умолчанию. 

Приложите вывод команды (Инструкция для получения логов в Putty)

dialplan show sIP-1569395747-incoming

от (390 баллов)
редактировать от

Тогда я не совсем понимаю как задумано :)

При таких настройках (во втором правиле раньше был указан провайдер "beeline", теперь поставил "любой провайдер"), если номер на который нам звонят совпадает с номером в первом правиле (DID на скрине это 74950000000) то через N секунд (которые указаны внутри правила) звонок проваливается в "если не подошло ни одно из правил", а если не совпадает с 74950000000, то сразу проваливается в "если не подошло ни одно из правил"... Хотя должен вроде бы попадать во второе правило "любой провайдер ...", или нет?

Если поставить как было раньше: в первом правиле N1 секунд, а во втором N2 секунд и провайдер "beeline". То звонок на DID из первого правила провалится в "если не подошло ни одно из правил" через N1 секунд, а если на любой другой DID, то через N2 секунд.

UPD:

Кажется до меня дошло как избавиться от проблемы, нужно удалить все правила, а правилом по умолчанию сделать перевод на IVR?

UPD1:

Так и есть, удалось избавиться, просто теперь не стоит задачи фильтрации вызовов, мы переходили с множества номеров на единый и на все остальные номера требовалось сделать уведомление перед переводом на IVR. Но всё равно осталась непонятной логика поведения при переводе по таймауту.

1 Ответ

от (62.9 тыс. баллов)

Вам просто НЕ нужно указывать DID (номер который набрал клиент). 

DID следует указывать только в том случае, когда через одну учетную запись провайдера могут приходить вызовы с нескольких внешних номеров. К примеру разные номера можно направить на разные очереди / IVR. 

Также DID следует использовать при звонках на вашу АТС без авторизации - звонки по SIP URI, удобно использовать для обработки входящих, когда АТС опубликована на белом IP. 

При выборе маршрута система отбирает все маршруты с одинаковым парами "DID и Провайдер" и начинает их пробовать сверху вниз, в порядке следования. 

Допустим есть маршруты:

  • DID 74950000000 Провайдер Билайн направлен вызов на номер 200
  • DID 78880000000 Провайдер Билайн направлен вызов на номер 201
  • DID 78880000000 Провайдер Билайн направлен вызов на номер 202
  • DID 74950000000 Провайдер Билайн направлен вызов на номер 203
  • DID  НЕ указан Провайдер Билайн направлен вызов на номер 207

 74950000000 - допустим это внешний номер, на который позвонил клиент

В итоге АТС попробует только следующие маршруты:

  1. DID 74950000000 Провайдер Билайн направлен вызов на номер 200
  2. DID 74950000000 Провайдер Билайн направлен вызов на номер 203
Если клиент позвонит на номер, не описанный в наших маршрутах в качестве DID, то вызов будет направлен по маршруту 
  1. DID  НЕ указан Провайдер Билайн направлен вызов на номер 207

 

от (390 баллов)

При таких настройках клиент попадает на IVR и через 10 секунд звонок переводится на номер 4504, независимо от каких-либо действий (сняли трубку, набрали добавочный ... и т.д.)

от (62.9 тыс. баллов)
логи приложите.
от (390 баллов)
Логи и диалплан:

https://pastebin.com/49yjFipU
от (390 баллов)

"независимо от каких-либо действий (сняли трубку, набрали добавочный ... и т.д."

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

Мне помогло для понимания логики АТС: "При выборе маршрута система отбирает все маршруты с одинаковым парами "DID и Провайдер" и начинает их пробовать сверху вниз, в порядке следования."

Только при успешном соединении абонента правило считается "выполненным" и звонок не обрабатывается далее. Всё у меня в голове встало на свои места, спасибо большое!

На этом сайте можно бесплатно задать вопрос разработчикам MikoPBX и другим членам сообщества. Время ответа не регламентированно, но мы стараемся несколько раз в день заглядывать сюда. Для срочного решения проблем обращайтесь на платную линию поддержки

Популярные теги

askozia настройка входящие-вызовы провайдер запись-разговоров маршрутизация ivr провайдеры askozia7 очередь маршрут askozia6 запись очередь-вызовов исходящие-звонки обновление факс переадресация перевод-вызова транк перехват-вызова веб-интерфейс ascozia история мобильный callerid интеграция установка логи звонок nat релиз goip провайдеров голосовая-почта панель-телефонии-1с редактор разговоров битрикс телефонная-книга аон маршруты диалплан тишина smtp почта gsm вызовы перевод лицензия панель askozia-5 bitrix24 донабор переадресация-мобильный настройка-провайдер префиксы время голосовая парковка перехват вызовов asterisk vmware мультифон мегафон задержки статистика monitoring звонков исходящие меню номер skype sip ssh 2 внешние-номера консольное запись-разговора web-интерфейс нерабочее-время mikopbx дополнительный-диск распределение память проброс-портов битрикс24 beta настройка-исходящие-исходящих-вызов-вызовов сетевые подменю goip4 отправка-факса демо-версия железо grandstream beeline альтернативный

1.7 тыс. вопросов

1.5 тыс. ответов

3.6 тыс. комментариев

3.5 тыс. пользователей

...