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

Материал из TaxiMaster
Перейти к: навигация, поиск
Строка 55: Строка 55:
 
[[Категория:Клиентская часть]]
 
[[Категория:Клиентская часть]]
 
[[Категория:Специальные функции]]
 
[[Категория:Специальные функции]]
[[Категория:ТМ1]]
 
 
[[Категория:ТМ2]]
 
[[Категория:ТМ2]]

Версия 14:11, 17 января 2012

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

Возможность преобразования номеров была добавлена в то время, когда по каким-то причинам устройство SpRecord передавало в модуль SpRecord номера, которые начинались с «07» или «+7» вместо «8». Функция нацелена на то, чтобы привести любой номер телефона к тому виду, который принят за стандарт и используется внутри базы данных. Первым решением было использование регулярных выражений, но такой подход мог показаться слишком сложным и существенно замедлить работу программы, поэтому было принято решение ввести язык с примитивным синтаксисом. Ниже описаны его правила.

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

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

N;S1;S2

Здесь:

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

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

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

Интересная информация

В некоторых случаях при подстановке к концу номера символа «#» набор через устройства SpRecord происходит быстрее. Нет никакого обоснования подобной работе SpRecord, поэтому подстановка решетки может ускорить набор номера, а может не ускорить.

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

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

N;;S2

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

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

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

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

N;S1;

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

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

Ссылки