Думаю, что многие используют переадресацию звонков на мобильный, когда вне офиса. Да, это очень удобная функция современной АТС: уходишь, включил переадресацию на мобильный (или по расписанию) и принимаешь важные звонки… Но, одним из неудобных моментов такой переадресации — отсутствие понимания с какого номера пришел звонок (у нас то всегда отображается офисный номер!). Для себя я решил этот вопрос следующим образом: приходит переадресованный звонок, разговариваю, надо узнать номер звонящего — нажимаю *9 и получаю SMS. Как это работает? В предыдущем посте я описал как отправить SMS о пропущенном звонке, так что останавливаться на самом SMS не буду. Все, что нужно, это добавить в dialplan, когда срабатывает переадресация, вызов вот такого action:
<action application="bind_meta_app" data="9 b s lua::smsinfo.lua ${cell}"/>
Я использую application bind_meta_app, который позволяет привязывать в уже отвеченном разговоре на заданную комбинацию DTMF запуск разных сценариев. Вот я и запускаю на *9 Lua скрипт с отправкой SMS:
local CallerName = session:getVariable("caller_id_name")
local CallerNumber = session:getVariable("caller_id_number")
function urlencode (s)
return (string.gsub (s, "%W",
function (str)
return string.format ("%%%02X", string.byte (str) )
end ))
end
local SMS = '<?xml version="1.0" encoding="UTF-8" ?> \
<request method="send-sms" login="login" passw="password"> \
<msg id="1" phone="' ..cell.. '" sn="IT-SFERA" encoding="cyr">Абонент: ' ..CallerName.. ' \
Номер: ' .. CallerNumber.. '</msg></request>'
if (cell) then
api = freeswitch.API();
local response = api:execute("curl", "http://sms.it-sfera.com/websend/ post " ..urlencode(SMS) )
freeswitch.consoleLog("DEBUG","Here's response:\n" .. response .. "\n")
end
И получаем SMS:
Permalink