FS: Запрос SMS с переадресованным номером

FreeSWITCHДумаю, что многие используют переадресацию звонков на мобильный, когда вне офиса. Да, это очень удобная функция современной АТС: уходишь, включил переадресацию на мобильный (или по расписанию) и принимаешь важные звонки… Но, одним из неудобных моментов такой переадресации – отсутствие понимания с какого номера пришел звонок (у нас то всегда отображается офисный номер!). Для себя я решил этот вопрос следующим образом: приходит переадресованный звонок, разговариваю, надо узнать номер звонящего – нажимаю *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.. '&lt;/msg>&lt;/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:

Абонент на линии
Абонент на линии

1 Comment on "FS: Запрос SMS с переадресованным номером"


Leave a Reply

Your email address will not be published. Required fields are marked *