Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Необходимо удалить код города 8495 или 7495, или 8499, или 7499 и оставлять 7-значный номер. Пример, номера 84952293042 и 74996382584 должны быть преобразованы к номеру 2293042 и 6382584 соответственно.
Перейдите в раздел "Маршрутизация" → "Исходящие маршруты"
Нажмите "Добавить новое правило"
Создайте шаблон как представлено на изображении:
Нажмите "Сохранить"
Звонки на номера:
383XXXXXXXXX
380XXXXXXXXX
375XXXXXXXXX
371XXXXXXXXX
Перейдите в раздел Маршрутизация → Исходящие маршруты
Создайте новое правило исходящей маршрутизации
Заполните параметры согласно шаблону снизу:
Теперь при звонке на любые номера, удовлетворяющие шаблонам: 383XXXXXXXXX, 380XXXXXXXXX, 375XXXXXXXXX, 371XXXXXXXXX вызов направится через провайдера Задарма(Novofon).
Перейдите в раздел «Система» -> «Кастомизация системных файлов»
Выберите для редактирования файл «/etc/asterisk/extensions.conf»
Выберите режим «Добавлять в конец файла»
Добавьте во второе поле текст
[outgoing](+)
exten => _+X!,1,Set(ADDPLUS=+);
same => n,Goto(${CONTEXT},${EXTEN:1},1);
Сохраните изменения
Необходимо заменить префиксы номеров +7 на 8. Пример, номер +74952293042 должен быть преобразован к номеру 84952293042.
Перейдите в раздел "Маршрутизация" → "Исходящие маршруты"
Нажмите "Добавить новое правило"
Создайте шаблон как представлено на изображении:
Нажмите "Сохранить"
Перейдите в раздел
Откройте на редактирование modules.conf
Добавьте следующий код в конец файла:
Откройте на редактирование файл extensions.conf
Добавьте следующий код в конец файла:
Для каждого провайдера потребуется описать исходящий маршрут. Шаблон в маршрутах должен быть одинаковым.
load => func_global.so
[all-outgoing-custom]
exten => _X!,1,NoOp()
same => n,Set(NEED_RETURN=0)
; Описываем список провайдеров
same => n,Set(PUSH(rrItem)=SIP-1601534775)
same => n,Set(PUSH(rrItem)=SIP-1611151795)
same => n,Set(PUSH(rrItem)=SIP-1681205343)
; Максимальное количество одновременных звонков через линию
same => n,Set(busyLevel=50)
; Проверка, есть ли провайдер в списке.
same => n,ExecIf($[ "${FIELDNUM(rrItem,\,,${PROVIDER_ID})}" == "0" ]?return)
; Если ID приоритетного провайдера определен, то сразу к проверке.
same => n,GotoIf($[ "${rrElement}x" != "x" ]?check)
; Инициализация массива
same => n,Set(rrArray=${EMPTY})
same => n,Set(i=${SHIFT(rrItem)})
same => n,While(1)
same => n,ExecIf($[ "${i}x" == "x" ]?ExitWhile())
same => n,ExecIf($[ "${rrArray}x" != "x" ]?Set(rrArray=${rrArray},))
same => n,ExecIf($[ "${GLOBAL(${i})}x" == "x" ]?Set(GLOBAL(${i})=0))
same => n,Set(rrArray=${rrArray}${i}:${GLOBAL(${i})})
same => n,Set(i=${SHIFT(rrItem)})
same => n,EndWhile
; Поиск элемента с меньшим весом
same => n,Set(rrArray=${SORT(${rrArray})})
same => n,Set(rrElement=${SHIFT(rrArray)})
same => n,While(1)
same => n,ExecIf($[ $[${GROUP_COUNT(${rrElement})} < ${busyLevel}] ]?ExitWhile())
same => n,ExecIf($[ "${rrElement}x" == "x" ]?ExitWhile())
same => n,NoOp( ${rrElement} - is busy)
same => n,Set(rrElement=${SHIFT(rrArray)})
same => n,EndWhile
same => n,NoOp(--- ${rrElement} ---)
; Проверка совпадает ли провайдер
same => n(check),ExecIf($[ "${PROVIDER_ID}x" != "${rrElement}x" ]?Set(NEED_RETURN=1))
same => n,ExecIf($[ "${PROVIDER_ID}x" != "${rrElement}x" ]?return)
; Увеличиваем счетчик
same => n,Set(GLOBAL(${rrElement})=$[${GLOBAL(${rrElement})} + 1])
; Счетчик активных звонков через провайдера
same => n,Set(GROUP()=${rrElement})
same => n,return
Шаблон для исходящих на примере маршрута для провайдера Mango
Перейдите в раздел "Маршрутизация" -> "Исходящая маршрутизация":
Опишем исходящий маршрут с префиксом «999»:
Перейдите в раздел "Система" -> "Кастомизация системных файлов":
Откройте для редактирования файл "extensions.conf". Установите режим "Добавлять в конец файла" и вставьте следующий контекст:
Этот код отрежет префикс для 14ти значного номера, превратит его в 11ти значный.
Добавьте еще один контекст:
При исходящем звонке будет добавлен отсеченный ранее префикс 999. В истории вызовов отобразится номер без набранного префикса, в 11ти значном формате:
Для звонков из CTI приложений нужно дополнить контекст:
[all_peers](+)
exten => _999XXXXXXXXXXX,1,Set(OUT_CALL_PREFIX=999)
same => n,Goto(all_peers,${EXTEN:3},1)
[outgoing-custom]
exten => _[0-9*#+a-zA-Z]!,1,NoOp()
same => n,ExecIf($["${NEW_DST_EXTEN}x" != "x"]?return)
same => n,Set(NEW_DST_EXTEN=${OUT_CALL_PREFIX}${EXTEN})
same => n,GosubIf($["${OUT_CALL_PREFIX}x" != "x"]?outgoing,${OUT_CALL_PREFIX}${EXTEN},1)
same => n,return
exten => _[hit],1,Hangup()
[internal-originate](+)
exten => _XXX!,1,Set(pt1c_cid=${FILTER(\*\#\+1234567890,${pt1c_cid})})
same => n,ExecIf($[ ${LEN(${CALLERID(num)})} == 14 ]?Set(__OUT_CALL_PREFIX=7${pt1c_cid:0:3}))
same => n,ExecIf($[ ${LEN(${CALLERID(num)})} == 14 ]?Set(pt1c_cid=7${pt1c_cid:3}))
same => n,Set(MASTER_CHANNEL(ORIGINATE_DST_EXTEN)=${pt1c_cid})
same => n,Set(number=${FILTER(\*\#\+1234567890,${EXTEN})})
same => n,ExecIf($["${EXTEN}" != "${number}"]?Goto(${CONTEXT},${number},$[${PRIORITY} + 1]))
same => n,Set(__IS_ORGNT=${EMPTY})
same => n,Gosub(interception_start,${EXTEN},1)
same => n,ExecIf($["${pt1c_cid}x" != "x"]?Set(CALLERID(num)=${pt1c_cid}))
same => n,ExecIf($["${origCidName}x" != "x"]?Set(CALLERID(name)=${origCidName}))
same => n,GosubIf($["${DIALPLAN_EXISTS(${CONTEXT}-custom,${EXTEN},1)}" == "1"]?${CONTEXT}-custom,${EXTEN},1)
same => n,ExecIf($["${SRC_QUEUE}x" != "x"]?Goto(internal-originate-queue,${EXTEN},1))
same => n,ExecIf($["${CUT(CHANNEL,\;,2)}" == "2"]?Set(__PT1C_SIP_HEADER=${SIPADDHEADER}))
same => n,ExecIf($["${PJSIP_ENDPOINT(${EXTEN},auth)}x" == "x"]?Goto(internal-num-undefined,${EXTEN},1))
same => n,Gosub(set-dial-contacts,${EXTEN},1)
same => n,ExecIf($["${FIELDQTY(DST_CONTACT,&)}" != "1" && "${ALLOW_MULTY_ANSWER}" != "1"]?Set(__PT1C_SIP_HEADER=${EMPTY_VAR}))
same => n,ExecIf($["${DST_CONTACT}x" != "x"]?Dial(${DST_CONTACT},${ringlength},TtekKHhb(originate-create-channel,${EXTEN},1)U(originate-answer-channel),s,1)))
exten => _[hit],1,Gosub(interception_bridge_result,${EXTEN},1)
same => n,Hangup
Необходимо добавить префикс 8 к номеру. Пример, номера 4952293042 и 4996382584 должны быть преобразованы к номеру 84952293042 и 84996382584 соответственно.
Перейдите в раздел "Маршрутизация" → "Исходящие маршруты"
Нажмите "Добавить новое правило"
Создайте шаблон как представлено на изображении:
Нажмите "Сохранить"
Необходимо заменить префиксы номеров 8, 7 на +7. Пример, номера 84952293042 и 74952293042 должны быть преобразованы к номеру +74952293042.
Перейдите в раздел "Маршрутизация" → "Исходящие маршруты"
Нажмите "Добавить новое правило"
Создайте шаблон как представлено на изображении:
Нажмите "Сохранить"