Недавно мне задали вопрос: «Как можно с помощью 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
Дальше, приправляем на свой вкус: записать результат отправки в базу или еще чего….