Преобразование номеров — различия между версиями

Материал из TaxiMaster
Перейти к: навигация, поиск
м (орфоссылка)
(Логическая модель)
 
(не показано 11 промежуточных версий 3 участников)
Строка 1: Строка 1:
'''Преобразование номеров''' — это специальная функция [[Такси-Мастер]], позволяющая изменять номера телефонов, принимаемые [[Модули Такси-Мастер|модулями]], работающими со средствами связи (например, [[модуль «Средства связи»]]), и отправляемые в них.
+
'''Преобразование номеров''' — это специальная функция [[Такси-Мастер|Такси-Мастер]], позволяющая изменять номера телефонов на входе (при приеме входящих звонков) и на выходе.
Эта функция берет начало со времен, когда по каким-то причинам устройство SpRecord передавало в [[модуль SpRecord]] номера, которые начинались с <tt>07</tt> или <tt>+7</tt> вместо <tt>8</tt>.
+
 
Функция нацелена на то, чтобы привести любой номер телефона к тому виду, который принят за стандарт и используется внутри [[База данных|базы данных]].
+
Функция нацелена на то, чтобы привести любой номер телефона к тому виду, который принят за стандарт и используется внутри базы данных.
Первым решением было использование регулярных выражений [http://ru.wikipedia.org/wiki/Regex], но такой подход мог показаться слишком сложным, поэтому было принято решение ввести язык с примитивным синтаксисом.
 
  
 
== Логическая модель ==
 
== Логическая модель ==
Строка 11: Строка 10:
 
Здесь:
 
Здесь:
  
# <tt>N</tt> — количество знаков в номере телефона. Если в номере поступившего телефона знаков меньше или больше N, он не обрабатывается настоящим правилом.
+
# {{code|N}} — количество знаков в номере телефона. Если в номере поступившего телефона знаков меньше или больше N, он не обрабатывается настоящим правилом.
# <tt>S1</tt> — это подстрока номера телефона, по наличию которой программа принимает решение об обработке телефона. Если в ''левой части номера телефона'' встречается такая подстрока, она обрезается.  
+
# {{code|S1}} — это подстрока номера телефона, по наличию которой программа принимает решение об обработке телефона. Если в ''левой части номера телефона'' встречается такая подстрока, она обрезается.  
# <tt>S2</tt> — строка, которая подставляется ''слева от оставшейся части.''
+
# {{code|S2}} — строка, которая подставляется к оставшейся части.
 +
 
 +
Например, если есть правило {{code|12;07;8}}, то при поступлении номера, в котором 12 знаков, и первые знаки — {{code|07}}, от него отрежутся эти знаки, и к левой части присоединится {{code|8}}: ''079090123456 → 89090123456''.
  
Например, если есть правило <tt>12;07;8</tt>, то при поступлении номера, в котором 12 знаков, и первые знаки — <tt>07</tt>, от него отрежутся эти знаки, и к левой части присоединится <tt>8</tt>: ''079090123456 89090123456''.
+
Перед {{code|N}} может стоять знак {{code|-}} (минус), что означает, что нужно подставить {{code|S2}} не слева, а ''справа''.
 +
То есть, например, если есть правило {{code|-12;;#}}, то к номеру из 12 цифр ''справа'' подставится символ решетки: ''+79090123456 +79090123456#''.
  
 
=== Частный случай правила: второй параметр отсутствует ===
 
=== Частный случай правила: второй параметр отсутствует ===
Строка 22: Строка 24:
 
  N;;S2
 
  N;;S2
  
В этом случае подстрока <tt>S1</tt> — пустая, то есть, фактически, от номера телефона не будет отрезано ничего, однако, при этом к нему будет подставлена подстрока <tt>S2</tt>.
+
В этом случае подстрока {{code|S1}} — пустая, то есть, фактически, от номера телефона не будет отрезано ничего, однако, при этом к нему будет подставлена подстрока {{code|S2}}.
Правило сработает в случае, когда в номере телефона <tt>N</tt> цифр.
+
Правило сработает в случае, когда в номере телефона {{code|N}} цифр.
  
Например, если есть правило <tt>7;;8495</tt>, то к входящему номеру, состоящему из 7 цифр, будет подставлен код Москвы: ''7123456 → 84957123456''.
+
Например, если есть правило {{code|7;;8495}}, то к входящему номеру, состоящему из 7 цифр, будет подставлен код Москвы: ''7123456 → 84957123456''.
  
 
=== Частный случай правила: третий параметр отсутствует ===
 
=== Частный случай правила: третий параметр отсутствует ===
Строка 32: Строка 34:
 
  N;S1;
 
  N;S1;
  
В этом случае, если брать за пример предыдущий, от поступившего номера телефона будет отрезана подстрока <tt>S1</tt>, но при этом ничего не добавится слева, поскольку <tt>S2</tt> в данном случае — пустая строка.
+
В этом случае, если брать за пример предыдущий, от поступившего номера телефона будет отрезана подстрока {{code|S1}}, но при этом ничего не добавится слева, поскольку {{code|S2}} в данном случае — пустая строка.
Правило сработает в случае, когда в номере телефона <tt>N</tt> цифр, и первые цифры совпадают с цифрами, указанными в <tt>S1</tt>.
+
Правило сработает в случае, когда в номере телефона {{code|N}} цифр, и первые цифры совпадают с цифрами, указанными в {{code|S1}}.
 +
 
 +
Например, если есть правило {{code|11;8495;}}, то от входящего номера, который начинается на {{code|8495}} и имеет 11 цифр, будет отрезан код Москвы (8495): ''84957123456 → 7123456''.
 +
 
 +
== Ссылки ==
 +
* [[Фильтр сотовых телефонов]] — если вам нужно маршрутизировать звонки (например, сотовые — через одну линию, городские — через другую).
  
Например, если есть правило <tt>11;8495;</tt>, то от входящего номера, который начинается на <tt>8495</tt> и имеет 11 цифр, будет отрезан код Москвы (8495): ''84957123456 → 7123456''.
 
  
 
[[Категория:Клиентская часть]]
 
[[Категория:Клиентская часть]]
 
[[Категория:Специальные функции]]
 
[[Категория:Специальные функции]]
 +
[[Категория:Параметры ТМ]]

Текущая версия на 15:58, 31 января 2022

Преобразование номеров — это специальная функция Такси-Мастер, позволяющая изменять номера телефонов на входе (при приеме входящих звонков) и на выходе.

Функция нацелена на то, чтобы привести любой номер телефона к тому виду, который принят за стандарт и используется внутри базы данных.

Логическая модель

Правила записываются в следующем виде:

N;S1;S2

Здесь:

  1. «N» — количество знаков в номере телефона. Если в номере поступившего телефона знаков меньше или больше N, он не обрабатывается настоящим правилом.
  2. «S1» — это подстрока номера телефона, по наличию которой программа принимает решение об обработке телефона. Если в левой части номера телефона встречается такая подстрока, она обрезается.
  3. «S2» — строка, которая подставляется к оставшейся части.

Например, если есть правило «12;07;8», то при поступлении номера, в котором 12 знаков, и первые знаки — «07», от него отрежутся эти знаки, и к левой части присоединится «8»: 079090123456 → 89090123456.

Перед «N» может стоять знак «-» (минус), что означает, что нужно подставить «S2» не слева, а справа. То есть, например, если есть правило «-12;;#», то к номеру из 12 цифр справа подставится символ решетки: +79090123456 → +79090123456#.

Частный случай правила: второй параметр отсутствует

Правило может быть записано так:

N;;S2

В этом случае подстрока «S1» — пустая, то есть, фактически, от номера телефона не будет отрезано ничего, однако, при этом к нему будет подставлена подстрока «S2». Правило сработает в случае, когда в номере телефона «N» цифр.

Например, если есть правило «7;;8495», то к входящему номеру, состоящему из 7 цифр, будет подставлен код Москвы: 7123456 → 84957123456.

Частный случай правила: третий параметр отсутствует

Правило может быть записано так:

N;S1;

В этом случае, если брать за пример предыдущий, от поступившего номера телефона будет отрезана подстрока «S1», но при этом ничего не добавится слева, поскольку «S2» в данном случае — пустая строка. Правило сработает в случае, когда в номере телефона «N» цифр, и первые цифры совпадают с цифрами, указанными в «S1».

Например, если есть правило «11;8495;», то от входящего номера, который начинается на «8495» и имеет 11 цифр, будет отрезан код Москвы (8495): 84957123456 → 7123456.

Ссылки

  • Фильтр сотовых телефонов — если вам нужно маршрутизировать звонки (например, сотовые — через одну линию, городские — через другую).