All pages
Powered by GitBook
1 of 9

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Удаление кода города из номера

Необходимо удалить код города 8495 или 7495, или 8499, или 7499 и оставлять 7-значный номер. Пример, номера 84952293042 и 74996382584 должны быть преобразованы к номеру 2293042 и 6382584 соответственно.

  1. Перейдите в раздел "Маршрутизация" → "Исходящие маршруты"

Нажмите "Добавить новое правило"

  1. Создайте шаблон как представлено на изображении:

  1. Нажмите "Сохранить"

Пример шаблона: звонки в другую страну (Украина, Беларусь, Латвия)

Звонки на номера:

  • 383XXXXXXXXX

  • 380XXXXXXXXX

  • 375XXXXXXXXX

  • 371XXXXXXXXX

  1. Перейдите в раздел Маршрутизация → Исходящие маршруты

Раздел "Исходящие маршруты"
  1. Создайте новое правило исходящей маршрутизации

Создание нового правила исходящей маршрутизации
  1. Заполните параметры согласно шаблону снизу:

Шаблон для вызовов за рубеж

Теперь при звонке на любые номера, удовлетворяющие шаблонам: 383XXXXXXXXX, 380XXXXXXXXX, 375XXXXXXXXX, 371XXXXXXXXX вызов направится через провайдера Задарма(Novofon).

Как запретить замену "+" на "00"

  1. Перейдите в раздел «Система» -> «Кастомизация системных файлов»

  1. Выберите для редактирования файл «/etc/asterisk/extensions.conf»

  1. Выберите режим «Добавлять в конец файла»

  1. Добавьте во второе поле текст

[outgoing](+)
exten => _+X!,1,Set(ADDPLUS=+);
    same => n,Goto(${CONTEXT},${EXTEN:1},1);
  1. Сохраните изменения

Замена префикса номера с "+7" на "8"

Необходимо заменить префиксы номеров +7 на 8. Пример, номер +74952293042 должен быть преобразован к номеру 84952293042.

  1. Перейдите в раздел "Маршрутизация" → "Исходящие маршруты"

Нажмите "Добавить новое правило"

  1. Создайте шаблон как представлено на изображении:

  1. Нажмите "Сохранить"

Равномерное распределение исходящих

  1. Перейдите в раздел

  1. Откройте на редактирование modules.conf

  1. Добавьте следующий код в конец файла:

  1. Откройте на редактирование файл extensions.conf

  1. Добавьте следующий код в конец файла:

В строках вида «Set(PUSH(rrItem)=SIP-1601534775)» перечисляются идентификаторы провайдеров, среди которых следует равномерно распределять исходящие. Идентификатор можно скопировать в адресной строке браузера при редактировании провайдера. В переменной «busyLevel» определяется максимально допустимое количество одновременных звонков через провайдера.

Для каждого провайдера потребуется описать исходящий маршрут. Шаблон в маршрутах должен быть одинаковым.

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
Кастомизация системных файлов
Раздел "Кастомизация системных файлов"
Файл Modules.conf
Код для файла Modules.conf
Файл Extensions.conf
Код для extensions.conf

Нормализация набираемого номера телефона

Шаблон для исходящих на примере маршрута для провайдера Mango

Отсечение "999"

  1. Перейдите в раздел "Маршрутизация" -> "Исходящая маршрутизация":

  1. Опишем исходящий маршрут с префиксом «999»:

  1. Перейдите в раздел "Система" -> "Кастомизация системных файлов":

  1. Откройте для редактирования файл "extensions.conf". Установите режим "Добавлять в конец файла" и вставьте следующий контекст:

Этот код отрежет префикс для 14ти значного номера, превратит его в 11ти значный.

  1. Добавьте еще один контекст:

При исходящем звонке будет добавлен отсеченный ранее префикс 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
Раздел "Исходящие маршруты"
Правило маршрута для Mango
Раздел "Кастомизация системных файлов"
Добавление контекста в конец файла extensions.conf
Добавление контекста в конец файла extensions.conf
Раздел "История вызовов"

Добавление префикса "8" к номеру

Необходимо добавить префикс 8 к номеру. Пример, номера 4952293042 и 4996382584 должны быть преобразованы к номеру 84952293042 и 84996382584 соответственно.

  1. Перейдите в раздел "Маршрутизация" → "Исходящие маршруты"

Нажмите "Добавить новое правило"

  1. Создайте шаблон как представлено на изображении:

  1. Нажмите "Сохранить"

Замена префикса номера с "8, 7" на "+7"

Необходимо заменить префиксы номеров 8, 7 на +7. Пример, номера 84952293042 и 74952293042 должны быть преобразованы к номеру +74952293042.

  1. Перейдите в раздел "Маршрутизация" → "Исходящие маршруты"

Нажмите "Добавить новое правило"

  1. Создайте шаблон как представлено на изображении:

  1. Нажмите "Сохранить"

Шаблоны номеров