Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local accountcode = argv[1]; -- Для проверки не из FreeSwitch пишем переменные так arg[1]
- local destination = argv[2];
- local domain = argv[3];
- --
- -- Подключение к Postgres с помощью Lua. Установить apt install lua-sql-postgres
- local luasql = require "luasql.postgres"
- --
- -- Настройки подключения к базе PostgreSQL
- DBHOST = '127.0.0.1'
- DBNAME = 'freeswitch'
- DBUSER = 'freeswitch'
- DBPASS = '**************'
- DBPORT = '5432'
- --Получаем стоимость минуты звонка по направлению и баланс
- local env = assert (luasql.postgres())
- local dbcon = env:connect(DBNAME, DBUSER, DBPASS, DBHOST, DBPORT)
- res = dbcon:execute("SELECT * FROM code WHERE '".. destination .."' LIKE CONCAT(prefix,'%') ORDER BY CHAR_LENGTH(prefix) DESC OFFSET 0 LIMIT 1")
- readsql = dbcon:execute("SELECT * FROM extensions WHERE accountcode='".. accountcode .."' AND domain='".. domain .."'")
- row = res:fetch ({}, "a");
- row1 = readsql:fetch ({}, "a");
- if (row and row1 ~= nil) then)
- price = tonumber(row.price);
- gate = row.gate;
- dest = row.name;
- balance = tonumber(row1.balance);
- readsql:close();
- res:close();
- dbcon:close();
- env:close();
- else
- readsql:close();
- res:close();
- dbcon:close();
- env:close();
- session:preAnswer();
- session:sleep(1000);
- session:execute("playback", "shout://tts.voicetech.yandex.net/tts?format=mp3&quality=hi&platform=web&application=translate&lang=ru_RU&speaker=ermil&emotion=good&text=${url_encode Нет линий на данное направление.");
- session:hangup();
- return;
- end;
- if balance >= price then
- freeswitch.consoleLog("WARNING","##################################################\n");
- freeswitch.consoleLog("WARNING","# Совершаем звонок на номер ".. destination .. " #\n");
- freeswitch.consoleLog("WARNING","# Стоимость направления ".. price .." руб. #\n");
- freeswitch.consoleLog("WARNING","# Кто звонит ".. accountcode .."@".. domain .." #\n");
- freeswitch.consoleLog("WARNING","# Баланс ".. balance .." руб. #\n");
- freeswitch.consoleLog("WARNING","##################################################\n");
- if gate == "qwerty" then
- legA = freeswitch.Session("{sip_cid_type=none,absolute_codec_string='PCMA,PCMU',enable_heartbeat_events=5,nibble_rate=".. price ..",nibble_account=".. accountcode .."}sofia/gateway/qwerty/" .. destination);
- else
- legA = freeswitch.Session("{absolute_codec_string='PCMA,PCMU',enable_heartbeat_events=5,nibble_rate=".. price ..",nibble_account=".. accountcode ..}sofia/gateway/FS15/" .. destination);
- end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement