Недавно мне задали вопрос: «Как можно с помощью FreeSWITCH сделать рассылку факсов по списку номеров?» Я набросаю ключевые пункты, как это сделать.
Во-первых, у Вас должна быть какая-то SQL база со списком номеров. К примеру, берем MySQL с одной табличкой fax, где находиться колонка distination.
Во-вторых, файл, который будем отправлять. Что бы привести его в пригодный нам формат, воспользуемся утилитой convert:
convert -density 204x98 -units PixelsPerInch -resize 1728x1186\! -monochrome -compress Fax my-fax-file.pdf /opt/freeswitch/storage/fax_out/01.tif
В-третьих, напишем LUA-скрипт scripts/send_fax.lua, который будет лезть в базу, выбирать номер и отправлять наш файлик:
local fax_file = "/opt/freeswitch/storage/fax_out/01.tif" local dbh = freeswitch.Dbh("dsn", "user", "password") if dbh:connected() then freeswitch.consoleLog("NOTICE", "database connected\n") else freeswitch.consoleLog("ERR", "database error\n") return end local my_query = "select distination from fax " assert(dbh:query(my_query, function(row) freeswitch.consoleLog("NOTICE", "\nSending FAX to " ..row.distination.. "\n") send_fax = "originate sofia/gateway/farlep/" ..row.distination.. " &txfax(" ..fax_file.. ")" api = freeswitch.API() reply = api:executeString(send_fax) freeswitch.consoleLog("DEBUG", "\nSending " ..reply.. "\n") end))
Теперь можем просто из консоли FreeSWITCH выполнить скрипт:
luarun send_fax.lua
Дальше, приправляем на свой вкус: записать результат отправки в базу или еще чего….