Настройка интеграции Shelter2 с телефонным тарификатором PhoneTariff
Актуальную сборку можно скачать на FTP
Этапы тарификации звонков
Классическая схема подключения АТС через COM-порт. АСТ настроена на передачу данных по протоколу RS232, подключена нульмодемным кабелем в COM-порт.
1. RS232Reader слушает COM порт и формирует файлы в директории WorkDir. WorkDir это папка которая может находиться на любом компьютере в сети.
Имя файла имеет вид типа 000012FA.$qi.
2. SPCServ забирает из WorkDir этот файл и анализирует парсером commonparser.dll (для настройки см. раздел Настройка Commonparser.ini), определяет
время звонка, телефонный номер по которому был произведен звонок, продолжительность. При определённых настройках программы файл уже может
содержать в себе стоимость и направление. В этом случае пункт 2.1 не выполняется, а в настройках SPCServ.ini за место PhoneCalc.dll
прописываем "-" без ковычек.
2.1. Срабатывает PhoneCalc.dll (для настройки см. раздел Настройка PhoneCalc.ini и PhoneTariff.ini), которая из базы ShelterPhone.fdb определяет
направление звонка и стоимость. PhoneCalc.dll подключается к серверу блокировок v1.4. Backup базы ShelterPhone.fdb сделан под FireBird 1.5,
можно не переводить базу под FireBird 2.5.
2.2. Затем, SCNAS.dll (для настройки см. раздел Настройка SCNAS.ini) передает информацию о звонке в NAS базу (база данных всех телефонных
звонков – копия пустой empty базы Shelter.fdb, любой версии). В этой базе храниться информация обо всех исходящих звонках.
При необходимости по информации в этой базе можно строить отчёты с использование программы shphone.exe.
2.3. Срабатывает ShelterConnect.dll (для настройки см. раздел Настройка ShelterConnect.ini) и информация о звонке поступает в базу данных
программы Shelter.

Данная схема является классической. Если АТС работает по TCP/IP, то используется программа TelnetLogger.exe
Программа PhoneTariff.exe
Программа PhoneTariff предназначена для настройки тарифов телефонных звонков по всему миру в разное время суток.
После копирования программы на диск необходимо сделать restore базы ShelterPhone.fbk. В ней хранится все информация о тарифах, зонах,
телефонные коды регионов и городов, информация о праздничных и выходных днях. Данные в базу можно заносить при помощи программы Transfer.exe*.
Загрузка осуществляется из DBF файла, следущего формата:

формат DBF файла из которого происходит выгрузка данных в ShelterPhone.fdb (Рис. 1)
В файле PhoneTariff.ini(для настройки см. раздел Настройка PhoneCalc.ini и PhoneTariff.ini) необходимо прописать путь к базе ShelterPhone.fdb
и запустить программу phonetariff.exe.

Вид программы PhoneTariff.exe (Рис. 2)
На рисунке 2 в окне 1 отображаются зоны, например, SNG – СНГ, AFRICA – Африка. Можно создавать свои зоны. В окне 2 для каждой зоны
формируется тариф. Окно 3 предназначено для присваивания телефонным кодам определенной зоны. Можно присвоить всему континенту одну зону,
а можно для каждого города разные зоны.
Все незаполненные промежутки времени в определении тарифов наполняются значениями. Если не заполнены временные промежутки в тарифе рабочего
или выходного дня, то они заполняются со стоимостью равной нулю.
Если в тарифе выходного дня нет ни одной записи, то тариф выходного дня заполняется всеми данными из тарифа рабочего дня. Если есть хотя бы одна
запись в в тарифе выходного дня, то стоимость не заполненных временных промежутков будет равна нулю.
Если существует необходимость звонки в определенные населенные пункты тарифицировать по особым ценам (например, они должны быть бесплатными),
то можно добавить зону, настроить её тарифный план и, затем, выбрать в карточке кода нужных населенных пунктов выбрать нужную зону.
У зоны есть два ключевых параметра: округление и чувствительность. Если продолжительность звонка меньше указанной чувствительности,
то данный звонок будет игнорироваться. (Например, звонки до 5 сек. бесплатно).
В России используется сокращенный набор телефонных номеров. Например, для звонка в московскую область можно использовать следующие варианты:

Соответственно для правильной тарификации звонков необходимо настроить префиксы. В программе PhoneTariff используются международная
система телефонных префиксов. Настройка префиксов осуществляется на соответствующей закладке. Например телефонный тарификатор установлен
в г.Кемерово, код города 3842, но при звонке по городу гости отеля из своего номера набирают просто шестизначный номер телефона, а для того чтобы
привести его к международной системе необходимо завести префикс «пусто» - подстановка «73842».
В программе PhoneTariff существует проверка расчета стоимости звонка. Для удобства можно ограничиться четырьмя зонами: 1 - по городу; 2 - по области;
3 - по стране; 4 - по остальному миру.
Данные настройки всегда согласовываются с заказчиком.
Интерфейс работы Shelter со сторонним ПО
После каждого исходящего звонка сторонняя программа формирует в определенной папке (WORKDIR) текстовые файлы, например 000012FA.$qi, где:
- название файла - номер формируемого файла по порядку в шестнадцатеричном формате, например 000012FA;
- расширение файла - .$qi;
Каждый такой файл содержит следующие данные:
| Название блока | Символы | Формат | Пример |
|---|---|---|---|
| Дата начала соединения | 1-10 | любой |
27042007 27/04/2007 2007-04-27 |
| Время начала соединения | 11-20 | любой |
13:29:56 13/29/56 132956 |
| Продолжительность соединения | 21-30 | Hh:mm:ss | 00:12:42 |
| Набранный номер | 31-70 | 83452288654 | |
| Признак исходящего звонка | 71-75 | символ |
О |
|
Внутренний номер телефона, с которого осуществлен звонок |
76-79 | 1812 | |
| Символы окончания строки и возврата коретки | 80-82 | данное поле не обязательно | 0D0A |
Установка модулей "ShelterPhone и интерфейс Телефонный тарификатор
1. Скопировать на компьютер подключенный к АТС RS232Reader.exe и RS232Reader.ini;
2. Скопировать на любой компьютер находящийся в сети файлы SCPServ.exe, SCPServ.ini, ShelterConnect.ini, ShelterConnect.dll, SCNAS.ini, SCNAS.dll,
phonecalc.ini, phonecalc.dll, CommonParser.ini, CommonParser.dll, phonetariff.exe, phonetariff.ini, SHELTERPHONE.back;
3. Сделать Restore базы SHELTERPHONE.back и настроить файл phonetariff.ini;
4. В программе PhoneTariff настроить тарифы;
5. Настроить все оставшиеся ini файлы;
6. В настройках Shelter.exe в карточке номера комнаты указать внутренний телефонный номер;
7. После всех настроек на базе Shelter выполнить скрипт: execute procedure xx_fill_services (см. раздел Работа с IBExpert. Выполнение SQL скриптов).
Настройка CommonParser.ini
Файл CommonParser.ini служит для настройки параметров CommonParser.dll. Данная DLL отвечает за разбор строки лога звонка.
Настройку CommonParser.ini рекомендуются выполнять в текстовом редакторе, используя шрифты, у которых длина всех символов одинаковая
(например «Terminal»).
Для получения лога звонка необходимо настроить программу RS232Reader, совершить звонок, после которого в папке WorkDir
(параметр из файла RS232Reader.ini) появится файл с расширением $qi. Содержимое этого файла переписываем в файл CommonParser.ini:

Затем нужно «наложить»на строку лога маску

Настройка преобразования даты звонка:
- DateM0 = Dd/Mm/Yy - формат в котором дата идет в логе (26/ 07/ 06)
- DateM1 = 20YyMmDd - нужно привести к формату YYYYMMDD
Соответственно DateAsDAte = 0 для того чтобы использовалось преобразование
Настройка преобразования времени звонка:
- TimeM0 = Hh:Mm - формат в котором время записано в логе (09: 26)
- TimeM1 = HhMm00 - нужно привести к формату HHMMSS
Продолжительность звонка:
- DurationM0 = Hh:Mm'Ss - формат в котором продолжительность соединения записана в лог файле (00:00’06)
- DurationM1 = HhMmSs - преобразовываем к формату HHMMSS
Т.к. продолжительность соединения задается в «явном» виде, а не в частях суток, то CoefDuration = 0
На данном этапе можно не тарифицировать часть звонков. При этом информация о данных звонках не попадет ни в одну базу.
FilterExtn = * ; маска для исходящего номера. Если «звездочка», то тарифицировать звонки со всех номером. Если, например, FilterExtn = 1* ,
то будут тарифицироваться звонки, начинающиеся с единицы.
FilterDial = * ; маска для набранных номеров. Если «звездочка», то тарифицировать звонки на все набранные номера.
OutGoingText = O ; признак тарифицируемого звонка. Часто в специалисты не могу настроить АТС и она вы дает и входящие звонки.
Тогда данный признак помещается специальным символом. В нашем примере признаком тарифицируемого звонка является буква «O».
В маске сказали, что в этом будет тип звонка (сиввол Y). OutGoingText = O если в этом месте не O, то этот звонок тарифицироваться не будет.
Если OutGoingText = * , то все звонки считать тарифицируемыми.
Если АТС (или сторонняя программа тарификации) выдает в лог информацию о цене звонка, то используются параметры:
- PulseToCost = 1 - преобразовывать пульсы АТС в стоимость
- BaseToRetail = 1 - использовать стоимость из лог файла, как базовую
- AddFixedCost = 0 - к базовой стоимости добавить это значение.
Лог файл может формироваться с переменным числом пробелов перед первым символом, для работы с такими АТС используется параметр:
- UseTrim=1 ; Использовать обрезание строки лога . 0 - не использовать.
Конечный вид CommonParser.ini будет следующий:

Настройка SCNAS.ini
Файл SCNAS.ini содержит внутри следующую информацию:
[Database]
DBname = <path do NAS database>
Где:
- DBname =
- полный путь до NAS базы. Например 127.0.0.1/3050:С:\Shelter\Phone\NAS.fdb, 127.0.0.1 - IP-адрес сервера на котором располагается база, а 3050 порт на котором работает FireBird. - DBuser = UCS - не изменять
- DBpassword = oQKH8n0BFUE= - не изменять
- FileName = SCNAS.log - лог программы
- Level = 5 - уровень детализации лога
- DebugLevel = 0 - уровень отладочной информации добавляемой в лог
Настройка ShelterConnect.ini
Файл ShelterConnect.ini содержит внутри следующую информацию:
Где:
- DBname =
<path to Shelter database> - полный путь до рабочей базы. Например 127.0.0.1/3050:С:\Shelter\IBData\Shelter.fdb, 127.0.0.1 - IP-адрес сервера на котором располагается база, а 3050 порт на котором работает FireBird. - DBuser = UCS - не изменять
- DBpassword = oQKH8n0BFUE= - не изменять.
- ClientID = 1 - код ShelterConnect'a, если используются несколько ShelterConnect.dll
- IdentPhysType = 200 - Тип устройства
- ConvertOperationNeed = 1 - (0- не использовать секцию [TranslateOperation], 1- использовать секцию)
- ToOEM = 0 - (0 - не конвертирования, 1 - конвертирование текстов в/из OEM/Windows (Ошибки, комментарии, тексты...))
- FileName = ShelterConnect.log - лог программы.
- Level = 5 - уровень детализации лога.
- DebugLevel = 0 - уровень отладочной информации добавляемой в лог файл.
- PHONE = 201 - код услуги телефон из справочника услуг Shelter.
- Section =0 - параметр отвечающий за секции: 0 - номер, 1- гость, 2 - питание.
- UseSection =1 - использовать/не использовать параметр Section.
Настройка RS232Reader.ini
[Application]
- TCPHost = 127.0.0.1 - IP-адрес компьютера, где физически установлен ключ защиты. Если он установлен на локальной рабочей станции, то можно использовать значение 127.0.0.1.
- TCPPort = 1111 - номер порта на котором запущен сервер блокировок
- dbname = 127.0.0.1/3050:C:\Shelter\ShelterPhone.fdb - полный путь до базы ShelterPhone.fdb, в которой храниться информация о тарифах. 127.0.0.1 - IP-адрес сервера на котором располагается база, а 3050 порт на котором работает FireBird.
- DBuser = UCS - не изменять
- DBpassword - oQKH8n0BFUE= - не изменять
Подключение АТС через TelnetLogger (вместо RS232Reader)
Данная утилита используется в случае, если АТС работает не через COM-порт, а TCP/IP соединение.
Настройка TelnetLogger.ini
[Net]
Host = 192.168.3.253 - адрес АТС
Port = 8800 - порт АТС
BoundPort = 0 - предпочитаемый порт, который выделит атс для соединения
ConnectionTimeout = 50 - Тайм аут подключения (сек.)
[Log]
WriteLog = 1
FileName = TelnetLogger.log
[Other]
PBXDir = c:\Temp
LastFileNumber =31
AutoStart = 1
AutoHide = 0
RestoreConnection = 1 - Автоматически пытаться востановить соединение
RestoreConnectionTimeOut = 5000 - Таймаут автоматического соединения (мск.)
FirstSymbolIsNum = 1 - Только строки, где первый символ число
AutoLogin=1 - автологин: 1 - передает логин/пароль из файла TelnetLogger.ini, 0 - будет ожидать ввода вручную
WordLogin=- - слово "Логин" (т.е. строка, которая будет искаться в приглашении "логин")
WordPassword=Enter Password: - слово "Password" (аналогично логину)
Login=smdr - логин АТС
Password=1234 - пароль АТС
Соответственно при варианте подключения АТС через TelnetLogger параметры запуска будут следующие: TelnetLogger.exe → SCPServ.exe
Смена статуса номера через телефонный тарификатор
1. Выполнить скрипт TR_AU_ROOM_STATE :
2. В ShelterConnect.ini добавить секцию :
[TranslateRoomState]
999 = 1
888 = 0
Где 999 - номер телефона, который набирает горничная после уборки для смены статус номера на грязынй номер
888 - номер телефона, который набирает горничная после уборки номер для смены статуса номер на чистый номер
3. В CommonParser.ini добавить, в секцию [parser] добавить :
ROOMSTATUS = 888,999
ВНИМАНИЕ!!! В описанном случае, номера телефонов 888 и 999 являются примерами.