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

Звонок по первому правилу из "Входящая маршрутизация" перенаправляется на 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
от (122 тыс. баллов)
Приложите скриншоты настроенных маршрутов.

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

Версия 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()

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

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

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

от (420 баллов)

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

Log

https://pastebin.com/DCrJqXV6

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

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

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

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

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

Команда 
ls -l /storage/usbdisk1/mikopbx/media/1577343503*
от (420 баллов)
Да, звуковой файл с приветствием проигрывается. Сейчас для обхода выставлен максимальный таймаут 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
от (122 тыс. баллов)

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

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

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

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

dialplan show sIP-1569395747-incoming

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

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

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

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

UPD:

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

UPD1:

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

1 Ответ

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

Вам просто НЕ нужно указывать 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

 

от (420 баллов)

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

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

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

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

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

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

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

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

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

askozia входящие-вызовы настройка исходящие маршрутизация провайдер запись-разговоров входящие ivr исходящие-звонки обновление ошибка очередь провайдеры битрикс24 очередь-вызовов переадресация запись установка маршрут история-звонков mikopbx транк панель-телефонии-1с перевод-вызова перевод askozia7 askozia6 битрикс callerid интеграция голосовая-почта логи перехват-вызова ростелеком нерабочее-время факс модуль nat docker запись-разговора веб-интерфейс bitrix24 goip настройка-провайдер история диалплан почта журнал-звонков релиз gsm вызовы звонок внешние-номера web-интерфейс zabbix маршруты cdr sip панель pjsip переадресация-мобильный voicemail ascozia телефонная-книга аон мобильный звонков лицензирование вызовов редактор номер asterisk лицензия ami регистрация оповещения провайдеров время голосовая fax trunk разговоров группы-пользователей #mikopbx пропущенные-звонки донабор beeline monitoring тишина smtp cisco мобильные мультифон мегафон шлюз не-работает электронная-почта не-слышно-звук

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

2.4 тыс. ответов

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

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

...