|
|
Инструкция пользования LVP Linux version |
Новости | Описание | Форум | Контакты
Рассмотрим конфигурационный файл для light version
Рассмотрим особенности business version
Рассмотрим особенности enterprise version
Инструкция пользования LVP Linux version.
Программа LVP разработана для маршрутизации VOIP трафика, работающая под Linux.
Компания General Networks распространяет три версии софтсвича.
1) Софтсвич для базовой маршрутизации трафика - light version
2) Софтсвич для маршрутизации трафика со встроенными скриптами дебитной платформы и статическим виртуальным офисом - professional version.
3) Софтсвич для маршрутизации трафика со скриптами и виртуальным офисом с интерфейсом для билинговой системы (enterprise version).
Для удобства поставляется программа мониторинга, для удаленного мониторинга трафика.
Софтсвич конфигурируется через конфигурационный файл.
Рассмотрим конфигурационный файл для light version.
# example of configuration file for linux voice proxy(lvp) program
# lines that begins with symbol "#" or ";" are ignored (comments)
# all symbols after ";" are ignored (comments)
;
;
[Aliases]
# format:
# host alias ip_address [, ip_address ...]
test 100.16.45.114,111.16.44.4 ; Здесь определяются символьные обозначения серверов с которыми мы работаем
test1 100.16.11.2
host_admin 10.10.10.10
[Friendly_Hosts]
#list of aliases that can establish a phone connection
#to our voice proxy program
#(other words - can open port 1720)
#all other hosts will be rejected during opening tcp port
# syntax: HOST [[+/-]prefix] [aon_authorization_filename] [account=aon | IP] ; aon_authorization_filename – файл со списком номеров ani, которые могут звонить
# example: cisco5300 -6000 aon.txt ; account=aon опция которая позволяет
; записывать экаунтинг на пользователя с ani или IP (по умолчанию на сервер).
# cisco_definity aon_definity.txt
# cisco_another
# cisco_another2 +3000
# note: prefix(if exist) MUST start with '+' or '-' character!
; Prinemaem zvonki ot vseh hostov!
unknown_host -1234 +14459751 maxconn=2 file_billing auto_progress; принимаем звонки от всех серверов (используем преопределенное название сервера)
; екаунтинг записываем в текстовый файл
; при приеме звонка выдаем прогресс сообщение и сетап и фасилити нетранзитем.
; транзитем только коннект и алертинг
; здесь в dnis мы убираем префикс и добавляем новый ; Максимальное количество одновременных соединений с этого сервера 2
test1 udpacct=host_admin quality=2 country=ua ; Здесь мы разрешаем принимать трафик с test1 и посылаем udp екаунтинг на компьютер host_admin
; здесь мы принимаем, что качество сервиса равно 2, страна происхождения звонка равна ua
[InterFaces] ; определяем обозначения интерфесов с которыми работает LVP
eth0 11.16.45.101
eth0:3 11.16.44.81
lo 127.0.0.1
[Global] ; обределяем глобальные параметры
ddl=5 ; default debug level. correct values range 0..7 (0-lower, 7-higher)
; recommended value = 4 (0=no any output&files debug only billing aviable)
; 6 - be careful, all tcp messages saved in logs_fd directory !!!
; 7 - be careful, full udp send/recv debug !!!
; level 6 and 7 is not recommended to set for a long time period
Calls_Log_File=lvp_v2.txt ; billing information file ; определяем файл для текстовой записи екаунтинга
Account=5202 ; global user account ; определяем имя пользователя на которого записываем исходящий трафик
; входной трафик пишется на IP адрес.
TimeOuts=5,5,40,120,0,3,360 ; (global TimeOut_N0,... TimeOut_N6) ; определяем таймауты
; TimeOut_N0 = receiving SETUP packet message from ORIGINATE side
; TimeOut_N1 = opening port 1720 on target host
; TimeOut_N2 = receiving ALERTING packet message from ANSWERING side
; TimeOut_N3 = receiving CONNECT packet message from ANSWERING side
; TimeOut_N4 = pause before sending ReleaseCompleteMSG
; to ORIGINATE/cancel connection
; (after receiving Answering ReleaseCompleteMSG and no more route available)
; TimeOut_N5 = pause after end of the call
; (with a hope that Originate client will initiate a break of tcp connection)
; TimeOut_N6 = timeout for udp data.
; If no udp data available from OR or AN sides for a specified seconds
; Then ReleaseMSG with Cause=Normal, unspecified(31) sent to ORiginate
; Note: TimeOut_N6 start checking for udp data after ConnectMSG only.
; all TimeOuts values are in seconds
MaxPhoneConnections=160 ; max number of simultaneous phone connections
Default_Incoming=eth0:3 ; interface for listening tcp 1720 port
Default_OutGoing=eth0:3 ; interface from which program will connect to 1720 target/remote host
Max_Connection_Duration= 3600; in seconds
AON_out_file=aon_phones_out.txt; file with phones for replacing CallingPartyNumber
user=proxy ; имя пользователя под каким запускается СофтСвич LVP
[Routing] ; секция, которая определяет правила маршрутизации трафика
#format:
# +phone pattern [time of call hh:mm-hh:mm] [weekday]
# weekdays { 0/sun = sunday, 1/mon = monday , ... 6/sat = saturday }
# first target_host_alias [+/-]prefix TimeOut_N1,... TimeOut_N6 [Send_From_Interface]
# second ...... TimeOut_N1,...N6 [Send_From_Interface]
# third ......
; ---------------------------
; local TimeOuts(if specified) for the server override global Timeouts values
; TimeOut_N1,... TimeOut_N6 = see global description of timeouts
; Note: * = means global value timeOut, 0 = No TimeOut
; Example: AS53_ia +11## 15,20,*,0,3
; ^^^^^^^^^^host ^^^^^prefix ^^^^^^^^^^timeOuts(N3,N6=global N3,N6;N4=absent)
;
;
+14459751 ; Здесь все звонки, что начинаются на 14459751 будут идти
test -14459751 +3899 ; на сервер test, при этом, префикс сначала убирается и добавляется 3899
test1 -14459751 +3899 ; если на первом сервере неуспешная попытка пробуем второй
+ host=test ; Здесь все звонки от сервера test посылаем по следующим маршрутам
test1 +3899
+14459751 +7095 ; Этот маршрут срабатывает если ani начинается на 7095
test1 -14459751 +3899
+14459751 +7095 quality=2 country=ua ; This dial-pear runs if ani begins on 7095 if quality service 2 and country of origination is equal to ua
test -14459751 +3899
Последнее направление будет выбираться только тогда, когда качество сервиса сервера больше или равно качеству направлению.
Конфигурирование light версии довольно простое задание. Весь смысл состоит перечесть все сервера, с которыми вы работаете. Расставить префиксы. Дальше прописать все маршруты для терминации. Заметим, что экаунтинг состоит из двух звонков: - один входящий, второй исходящий. Входящее плечо, по – умолчанию, записывается на IP адрес, а исходящее на пользователя Account ( в нашем примере 5202).
Рассмотрим особенности business version.
Бизнес версия рассчитана, как на транзит трафика, так и на использование дебит платформы, которая, работает на интегрированных скриптах. Экаунтинг может производится как в файл, так и в SQL сервер. Предлагается набор встроенных скриптов для авторизации абонентов с последующей маршрутизацией трафика. Формат использования скриптов следующий
auto_connect_lvp [aon] [ru] [idd=0] [Pseudo_alerting=on]
Рассмотрим синтаксис: - auto_connect_lvp служебное слово, которое обозначает начало работы скрипта и высылается connect message; - aon служебное слово, которое инициирует сначало авторизацию по ani; ru обозначает, что язык русский и файлы будут проигрываться с префиксом ru_; idd= определяем время в миллисекундах на протяжении которого будут игнорироваться одинаковые кнопки; Pseudo_alerting=on – опция, которая определяет посылку алертинга перед коннектом (некоторые устройства перестают работать, если получают сразу коннект).
Для того, чтобы скрипты работали надо записать следующие голосовые файлы
ru_say_user_busy
ru_say_problem_connecting
ru_say_no_data
ru_say_bad_digits_count
ru_ring
ru_ask_pincode
ru_ask_phone
ru_ask_account
Содержание файлов легко понять из их названия.
Скрипты используют SQL процедуры, которые проводят аутентификацию, авторизацию, экаунтинг. Описание процедур поставляется по дополнительному запросу.
После введения номера производится поиск маршрутов согласно таблицы маршрутов. Заметим, что данные скрипты не умеют проговаривать чисел (это возможно только в версии enterprise), поэтому есть необходимость в стороннем сервисе, который бы это умел. Для этого можно использовать Циску.
Рассмотрим пример
+7111111111
auto_connect_lvp
10.20.18.11 +10102 noAonOut amount continue
Здесь мы задаем, что после авторизации lvp сначала проводит звонок на 10.20.18.11 добавляет префикс 10102 неподставляет ani с файла и вместо ani устанавливает количество денег на счету и максимальное продолжение разговора с разделителем #. На циске стоит скрипт, который может проговорить сколько денег и времени. Команда continue значит, что даже при успешном соединении мы дальше продолжаем перебор маршрутов из секции [Routing].
Данная версия может авторизовать клиентов из конфигурационного файла, которые прописаны в секции [Friendly_Users]
Например
[Friendly_Users]
10184 3423412344 ani
10184 234444 123432
102057 122303 406828
Первая колонка обозначает id пользователя, вторая колонка номер счета или телефонный номер, третья колонка – pin код для телефонного номера пишется служебное слово ani.
Когда определены пользователи в секции [Friendly_Users]. Тогда клиент авторизируется локально (SQL не нужен) длительность разговора может быть не больше часа.
Давайте рассмотрим образец конфигурационного файла
# example of configuration file for linux voice proxy(lvp) program
# lines that begins with symbol "#" or ";" are ignored (comments)
# all symbols after ";" are ignored (comments)
;
[Aliases]
# format:
# host alias ip_address [, ip_address ...]
definity 153.18.12.1
c3620 251.179.241.69,159.10.1.205
as5300 159.10.41.193,159.5.4.82
[Friendly_Hosts]
#list of aliases that can establish a phone connection
#to our voice proxy program
#(other words - can open port 1720)
#all other hosts will be rejected during opening tcp port
# syntax: HOST [[+/-]prefix] [aon_authorization_filename] [Pseudo_Alerting=on/off]
# example: cisco5300 -6000 aon.txt
# cisco_definity aon_definity.txt
# cisco_another pseudo_alerting=off
# cisco_another2 +3000 Pseudo_Alerting=on
# note: prefix(if exist) MUST start with '+' or '-' character!
c3620 -810
as5300-sta -810 ani=20608 account=1121 ; Для ani=20608 в билинг пишем счет 1121
as5300-sta -810 account=IP ; Для произвольных ani вместо счета пишем IP адрес
definity -11##810 aon.txt ; Здесь разрешается только с ani, которые перечислены в файле aon.txt
[Friendly_Users]
10184 3423412344 ani
10184 234444 123432
102057 122303 406828
[InterFaces]
eth0:00 10.10.10.1
lo0 127.0.0.1
eth0 159.4.2.12
eth00 159.4.2.18
[Global]
ddl=5 ; default debug level. correct values range 0..7 (0-lower, 7-higher)
; recommended value = 4 (0=no any output&files debug only billing aviable)
; 6 - be careful, all tcp messages saved in logs_fd directory !!!
; 7 - be careful, full udp send/recv debug !!!
; level 6 and 7 is not recommended to set for a long time period
Calls_Log_File=lvp_v2.txt ; billing information file
Account=2202 ; global user account
TimeOuts=5,8,50,70,0,0 ; (global TimeOut_N0,... TimeOut_N6)
; TimeOut_N0 = receiving SETUP packet message from ORIGINATE side
; TimeOut_N1 = opening port 1720 on target host
; TimeOut_N2 = receiving ALERTING packet message from ANSWERING side
; TimeOut_N3 = receiving CONNECT packet message from ANSWERING side
; TimeOut_N4 = pause before sending ReleaseCompleteMSG
; to ORIGINATE/cancel connection
; (after receiving Answering ReleaseCompleteMSG and no more route available)
; TimeOut_N5 = pause after end of the call
; (with a hope that Originate client will initiate a break of tcp connection)
; TimeOut_N6 = timeout for udp data.
; If no udp data available from OR or AN sides for a specified seconds
; Then ReleaseMSG with Cause=Normal, unspecified(31) sent to ORiginate
; Note: TimeOut_N6 start checking for udp data after ConnectMSG only.
; all TimeOuts values are in seconds
MaxPhoneConnections=160 ; max number of simultaneous phone connections
;Tcp_Listen_Port=1719; if commented - default 1720 used
;note: tcp_listen_port if specified MUST appear before Default_Incoming...
Additional_Listen_Port=1725 ; Порт, на который подключаются клиенты в защищенном режиме
Default_Incoming=eth0 ; Адрес, на котором принимаются звонки
Default_OutGoing=eth00 ; interface from which program will connect to 1720 target/remote post
Max_Connection_Duration=7200; in seconds
AON_out_file=aon_phones_out.txt; file with phones for replacing CallingPartyNumber
MsSql= 10.10.1.1 user bdf2isdffcdjyjdfk1p 5 10
; ^^ serverIP ^^login ^^ encrypted_password ^connect_TimeOut ^query_TimeOut
; Пример использования логина в SQL сервер, для вызова процедур и записи экаунтинга.
user=lvp
bill_bad_routes; every bad route will be written to SQL, to account: bad ; Для при неуспешных маршрутах, тоже записывается экаунтинг
[Scripting]
language=ua ; Глобальный параметр, который выбирается по - умолчанию для проигрыванию файлов
digit_input_timeout=5 ; Время в секундах для определения конца ввода цифр
identical_digits_delay=0; in milliseconds ; Глобальный параметр idd
digit_input_pause_after_connect_msg=2 ; Время на которое блокируется ввод после коннекта, для блокировки мусора
[Routing]
#format:
# +phone pattern [time of call hh:mm-hh:mm] [weekday]
# weekdays { 0/sun = sunday, 1/mon = monday , ... 6/sat = saturday }
# first target_host_alias [+/-]prefix TimeOut_N1,... TimeOut_N6 [Send_From_Interface]
# second TimeOut_N1,...N6 [noAonOut] [Pseudo_alerting=on/off] [Send_From_Interface]
# third ......
; ---------------------------
; local TimeOuts(if specified) for the server override global Timeouts values
; TimeOut_N1,... TimeOut_N6 = see global description of timeouts
; Note: * = means global value timeOut, 0 = No TimeOut
; Example: AS53_meria +11## 15,20,*,0,3
; ^^^^^^^^^^host ^^^^^prefix ^^^^^^^^^^timeOuts(N3,N6=global N3,N6;N4=absent)
;
; instead of the host name you can use the following reserved words:
; auto_connect_lvp - lvp program becomes as ANSWERING side
; mssql - lvp program takes server_IPs from MSSQL Server
;
; Example:
+00
auto_office_pickup ; Если приходит номер 00 тогда мы запускаем процедуру перехвата звонков для автоофиса
+ ; Весь трафик шлем по очереди, если попытка успешная, тогда мы перебор останавливаем
10.10.10.100
153.18.12.1
159.10.41.193
+ quality=2 ; Весь трафик шлем по очереди, если попытка успешная, тогда мы перебор останавливаем
10.10.10.1 ; Здесь мы эти маршруты предлагаем для качества 2
153.18.12.21
159.10.41.13
+123
a_o main ext=suffix pseudo_alerting=on ddl6 ; Здесь мы запускаем авто офис если номер начинается на 123
; Если номер длиннее мы ищем расширение и отрабатываем маршруты в расширении
; перед коннектом мы высылаем алертинг и включаем режим отладки 6
; описание Автоофиса смотрите ниже
[Bind_Routing]
#to_alias_or_ip send_from_alias_or_ip ; на серверы (первая колонка) будем слать с IP (вторая колонка)
153.18.12.1 eth0
251.179.241.69 59.4.2.12
159.10.41.193 159.4.2.18
Автоофис – определяется в файле lvp_ao.conf, если основной конфигурационный файл в lvp.conf.
Рассмотрим пример
[main]
udp_accounting=10.10.2.1,10.10.2.6 ; Посылаем акаунтинг для мониторинга
prompt_file=ru_say_hello_office ; Файл приветствия
delay=2 ; Задержка на ввод цифр для блокировки муссора
access_international=9810 ; ; Код доступа к международной связи (для переадресации)
access_national=98 ; ... ; Код доступ к междугородней связи (для переадресации)
access_local=9 ; ... ; Код доступ к городу (для переадресации)
code_tech=810 ; Технический префикс
code_country=7 ; ... ; Код страны
code_city=7095 ; ... ; Код города
;
; Когда наберем 92331122 получим -9, +7095, +810 =81070952331122 - местный
; Когда наберем 9891612312322 -98, +7, +810=810791612312322 - междугородний
; Когда наберем 981012122233445 -9810, +810=81012122233445 - международный
;
office_code=000111 ; ... ; Выбираем код Автоофиса для учета трафика на внутренние номера
; Например звонок на расширение +1 будет учитываться как на 0001111
redirect_code=*21; ; ; Код для переадресации звонка
; Когда внутренний телефон наберет *21 тогда он переведет звонок на любой номер,
; используя преобразования описанные выше
pickup_access=13.18.12.21 ; с какого сервера можно делать перехват звонков
voicemail_file leave_mail ; файл, который информирует, что оставьте сообщение
voicemail_pass prompt_pass ; введитие пароль для прослушивания почты
voicemail_prompt prompt_number ; введите номер сообщения для прослушивания
password 123672 +8 ; пароль доступа к голосовой почте расширения 8
password 123674 +1 ; пароль доступа к голосовой почте расширения 1
+1 ; правила маршрутизации расширения 1
10.10.1.2 +231 5,7,30,0,0,0 noAonOut ; сначала посылаем звонок на 10.10.1.2 с номером 231(это не префикс) со списком
; таймаутов и посылаем оригинальный ani (не убираем)
voicemail ; если первый маршрут недоступен запускаем голосовую почту
;
; по умолчанию проигрывается приглашение согласно voicemail_file,
; если вы хотите персональную информацию создайте vm1_leave_message
; если вы хотите изменить приглашение введите при проигрывании приглашения пароль
; и наговорите новое приглашение
+ ; если номер расширения не введен или нет совпадения отрабатываются эти маршруты
10.10.1.1 +132 5,7,30,0,0,0 OR noAonOut ; OR значит, что следующий маршрут должен стартовать одновременно с настоящим
10.10.1.2 +231 5,7,30,0,0,0 noAonOut
+8
voicemail listen ; Если мы введем правильно пароль, нам проиграют файл согласно voicemail_prompt и если мы
; введем номер то прослушаем сообщение или 0 чтобы прослушать все сообщения или *# , чтобы
; стереть все собщения
Рассмотрим особенности enterprise version.
Основными особенностями версии есть расширенные функции работы с SQL сервером и язык-интерпретатор для построения собственных скриптов.
Дополнительные функции работы с SQL связаны с возможностью управлением маршрутизацией трафика с SQL, Авторизацией серверов и пользователей. Работой с Автоофисами.
Интерпретатор позволяет добавить функциональность автоофисам. В наличии функции умеющие проговаривать числа, время. Команды if else endif (нет ограничений на вложения), do while (до 4 вложений).
Остановимся на SQL функциях. SQL сервер проводит статистику звонков и соответственно удобно дать ему возможность управлять маршрутизацией. Управлением SQL каждым звонком довольно сложная задача и при большом количестве звонков может быть непосильной. Для этого предлагается загружать таблицу маршрутизации на Софтсвич, а при изменении таблицы загружаем только изменении. Данное решение позволяет правильно маршрутизировать трафик даже при отсутствии связи с SQL. На софтсвиче всегда сохраняется копия последней таблицы. Удобно, чтобы корпоративные пользователи, у которых есть кредит, могли авторизоваться и делать звонки даже при отсутствии связи с SQL. Для этого происходит синхронизация таких пользователей с SQL. Удобно, чтобы пользователи, могли изменять настройки своего Автоофиса через ВЕБ и дальше SQL. Для этого делается синхронизация с SQL.
Сами же Автоофисы расширены возможностью написанием скриптов.
Рассмотрим язык.
Основным критерием написания языка было его «легкопонятность» (байсик подобность). В тексте Автоофиса встречаются, как команды Автоофиса, так команды интерпретатора. Команды интерпретатора начинаются с слова operation. Рассмотрим команды настройки Автоофиса.
[main] ; Название Автоофиса
udp_accounting=10.10.2.1,10.10.2.6 ; Посылаем акаунтинг для мониторинга
prompt_file=ru_say_hello_office ; Файл приветствия
information_file =ru_info ; Файл дополнительной информации ( Сначала проигрывается prompt_file а потом information_file)
delay=2 ; Задержка на ввод цифр для блокировки муссора
max_extension_length 4 ; Максимальное количество цифр в расширении (не надо ждать окончания набора)
access_international=9810 ; ; Код доступа к международной связи (для переадресации)
access_national=98 ; ... ; Код доступ к междугородней связи (для переадресации)
access_local=9 ; ... ; Код доступ к городу (для переадресации)
code_tech=810 ; Технический префикс
code_country=7 ; ... ; Код страны
code_city=7095 ; ... ; Код города
system ; если эта команда присутствует, можно менять параметры звонков такие,
; как ani, baccount (счет на кого записывать билинг)
;
; Когда наберем 92331122 получим -9, +7095, +810 =81070952331122 - местный
; Когда наберем 9891612312322 -98, +7, +810=810791612312322 - междугородний
; Когда наберем 981012122233445 -9810, +810=81012122233445 - международный
;
office_code=000111 ; ... ; Выбираем код Автоофиса для учета трафика на внутренние номера
; Например звонок на расширение +1 будет учитываться как на 0001111
redirect_code=*21; ; ; Код для переадресации звонка
; Когда внутренний телефон наберет *21 тогда он переведет звонок на любой номер,
; используя преобразования описанные выше
pickup_access=13.18.12.21 ; с какого сервера можно делать перехват звонков
voicemail_file leave_mail ; файл, который информирует, что оставьте сообщение
voicemail_pass prompt_pass ; введитие пароль для прослушивания почты
voicemail_prompt prompt_number ; введите номер сообщения для прослушивания
password 123672 +8 ; пароль доступа к голосовой почте расширения 8
password 123674 +1 ; пароль доступа к голосовой почте расширения 1
Рассмотрим команды Автоофиса
Расширения
Начинаются на +
Пример
+001
Дальше должны быть маршруты.
Например
10.10.10.3 +20 здесь +20 не префикс, а полный номер телефона. Здесь при успешном звонке работа Автоофиса закнчивается
Есть дополнительные команды
A_o main ext=5 info - это значит, что перейти на начало Автоофиса но проигрывать только информацию information_file и перейти сразу на расширение 5. Два последние параметры они опциональны.
pause=9 Устанавливает паузу в 9 секунд.
play_prompt file_name - проигрывает звуковой файл
voicemail - программа записи сообщений которая сначала проигрывает файл voicemail_file
voicemail listen - программа, которая сначала проигрывает файл voicemail_pass, а потом при правильном введении пароля voicemail_prompt и проигрывает файл, номер которого вы ввели. Если вы введете 0 то проигрывает все файлы, если *# то сотрет все записанные файлы.
Если обнаружена ошибка в команде то команда игрорируется.
При окончании списка команд в расширении Автоофис заканчивает свою работу.
Рассмотрим синтаксис языка интерпретатора.
Operation [command]
Здесь [command] - команда. Интерпретатор понимает только определенные переменные и константы. Все переменные и константы в памяти сохраняются в виде текста. Есть переменные, которые могут интерпретироваться только, как текстовые, есть переменные, которые могут быть, как текстовые или целые. Существуют следующие константы
ani – номер абонента А
dnis – номер на котором работае Автоофис
ListenIP IP на котором работает сервер
originIP IP который инициирует вызов
Null - пустая строка
result - результат выполнения последней операции
cm_account - id счета, который авторизирован в Call manager
false –‘0’
true –‘1’
Есть специальные пременные
baccount – системный счет для биллинга
bani - системный ani для команды PlaceCall и Call (их можно изменять только когда установлена опция Автоофиса system, после окончания звонков они восстанавливают значения по умолчанию)
Есть переменные только строки:
ip
account
baccount
bani
pin
dnis
ani
phone
Следующие переменные могут быть как строки, так и целыми
local
quality
book
country
time
money
num1
num2
..
num0
Last_Call_Release_Code
Введен массив Array, у которого 100 элементов, начиная с 0 и оканчивая 99.
Есть два альтернативных методы доступа к элементу массива. Первый – прямой например Array10; Второй – косвенный например
read num0 num1 прочитать значения Array[num1] в num0
put num0 num1 записать значения Array[num1] в num0
Начнем с команд set:
SET timeout 5 таймаут на ввод цифр
set local 1
устанавливается локальное приведение номера телефона к нормальному формату
set country ua|ru|en…
устанавливается параметр страна происхождения трафика
set quality 2 -
устанавливается качество сервиса
set clearinput 1 - устанавливается флаг очистки буфера ввода перед командой input
set release_code ## набор кнопок после которых отвечающая сторона может завершить два плеча звонка
set pause_after_connect 0 установка времени задержки на прием клавиш от клиента после коннекта (для того чтобы убрать улюлюканье) на Автоофис
set language [ua|ru|en|...] установка языка, действует для произношения чисел
set interrupt_say 1 [0] устанавливает режим прерывания звука при выполнений функций say_number say_phone
set signal_busy
1 [0] --- default
устанавливаем режим для PlaceCall
когда при неудачном завершении давать сигнал занято 5секунд
set cm_account num0 устанавливаем колМенеджеру id пользователя, если есть такой же id, то такие звонки перерываются.
set fh_file_billing
1|0 если 1 то будет писаться билинг в файл, если 0 то в
SQL
set digit_input_pause_after_connect_msg
integer_value
Меняет значения задержки восприятия клавиш после коннекта при звонке с
Автоофиса
set Last_Call_Release_Code code
play_till_connect prompt_file
Проигрывает по кругу файл до получения коннекта
play_till_alerting prompt_file Проигрывает по кругу файл
до получения алертинга
Функции обработки строк и целых
LEFT num1 num2 num3 num1=left(num2, num3) num3 левых символов num2 в num1
RIGHT num1 num2 num3 num1=right(num2, num3) num3 правых символов num2 в num1
SHIFT num1 num2 num num3 num1= strcpy(&num2+ num3) отбрасываем num3 символов спереди
INT Num1 Num2 Num1=Int(num2) целое знацение числа num2
Incr num0 - увеличиваем на единицу
Decr num0 - уменьшаем на единицу
ADD num0 num1 num2 строковое сложение num0=num1+num2 например 777+777=777777
Команды if else endif. Есть следующие сравнения GE GT LE LT EQ NE. Например:
IF GE money num1
…
ELSE
…
ENDIF – конец условия
Возможно неограниченное количество вложений.
Команда цикла
do
…
while GE| GT| LE| LT| EQ| NE num1 num0
Возможно только 5 вложений.
Рассмотрим служебные функции:
Input prompt prompt_err num1 n1 n2 n3 - Проигрываем файл prompt если какая-то ошибка prompt_err, ждем на ввод кнопок до n1 или до # , минимум n2, повторяем n3 раз и с таймаутом для скрипта, ясли успешно result=’1’
PlaceCall phone time – делаем звонок на номер phone и максимальным временем разговора time
call phone time ip - делаем звонок на IP адрес с номером phone и максимальным временем разговора time
kill_calls num0 - завершаем все сессии с id равным num0
local_user_aut account pin аутентификация локального пользователя, используя account и pin (используются пользователи загруженные с sql)
Возможно вызвать процедуры из SQL используя две функции:
exec num0 “” например exec num1 procedure_t account pin – здесь num1 получает результат выполнения процедуры, при успешном выполнении result будет равен 1.
Следующая функция
execa 10 procedure account pin записывает результат в Array начиная с 10 элемента. То-есть результат будет в Array[10]