Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
280
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.91 KB | None | 0 0
  1. local accountcode = argv[1]; -- Для проверки не из FreeSwitch пишем переменные так arg[1]
  2. local destination = argv[2];
  3. local domain = argv[3];
  4. --
  5. --  Подключение к Postgres с помощью Lua. Установить apt install lua-sql-postgres
  6. local luasql = require "luasql.postgres"
  7. --
  8. -- Настройки подключения к базе PostgreSQL
  9. DBHOST = '127.0.0.1'
  10. DBNAME = 'freeswitch'
  11. DBUSER = 'freeswitch'
  12. DBPASS = '**************'
  13. DBPORT = '5432'
  14.  
  15. --Получаем стоимость минуты звонка по направлению и баланс
  16. local env = assert (luasql.postgres())
  17. local dbcon = env:connect(DBNAME, DBUSER, DBPASS, DBHOST, DBPORT)
  18. res = dbcon:execute("SELECT * FROM code WHERE '".. destination .."' LIKE CONCAT(prefix,'%') ORDER BY CHAR_LENGTH(prefix) DESC OFFSET 0 LIMIT 1")
  19. readsql = dbcon:execute("SELECT * FROM extensions WHERE accountcode='".. accountcode .."' AND domain='".. domain .."'")
  20. row = res:fetch ({}, "a");
  21. row1 = readsql:fetch ({}, "a");
  22.  
  23.     if (row and row1 ~= nil) then)
  24.        price = tonumber(row.price);
  25.        gate = row.gate;
  26.        dest = row.name;
  27.        balance = tonumber(row1.balance);
  28.        readsql:close();
  29.        res:close();
  30.        dbcon:close();
  31.        env:close();
  32.     else
  33.        readsql:close();
  34.        res:close();
  35.        dbcon:close();
  36.        env:close();
  37.        session:preAnswer();
  38.        session:sleep(1000);
  39.        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 Нет линий на данное направление.");
  40.        session:hangup();
  41.     return;
  42.     end;
  43.  
  44.     if balance >= price  then
  45.         freeswitch.consoleLog("WARNING","##################################################\n");
  46.         freeswitch.consoleLog("WARNING","# Совершаем звонок на номер ".. destination .. "          #\n");
  47.         freeswitch.consoleLog("WARNING","# Стоимость направления ".. price .." руб.                #\n");
  48.         freeswitch.consoleLog("WARNING","# Кто звонит  ".. accountcode .."@".. domain .."                   #\n");
  49.         freeswitch.consoleLog("WARNING","# Баланс  ".. balance .." руб.                             #\n");
  50.         freeswitch.consoleLog("WARNING","##################################################\n");
  51.  
  52.     if gate == "qwerty" then
  53.        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);
  54.     else
  55.         legA = freeswitch.Session("{absolute_codec_string='PCMA,PCMU',enable_heartbeat_events=5,nibble_rate=".. price ..",nibble_account=".. accountcode ..}sofia/gateway/FS15/" .. destination);
  56.    end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement