Сегодня стартует новый этап в жизни: от интегратора до вендора!
Сегодня, официально мы уже не партнеры Oktell. За время партнерства случалось много разного… Мы собрали множество регалий: от дилера до внедренческого центра, лучший партнер, 5 звезд… Мой сценарий проверки голосовой почты попал в коробку с Oktell. Не одну статью написал на страницах этого блога…
Сегодня, мы запускаем 1.0 релиз продукта Terrasoft Webitel CallManager. Мы выходим на новую для нас стезю производителя решения. Да, у нас есть Terrasoft Press — но это нечто другое, новое, интересное. Вся наша команда вот уже не первый месяц работает… Хочется верить, что Вы полюбите Webitel так, как мы!
Сегодня у нас рубрика: письмо в студию. Собственно, текст:
Друзья, хочу рассказать Вам одну историю из жизни под громким, или не очень, названием «Как Webitel CallManager помогает в обычных жизненных ситуациях».
Итак, пишу Вам с Ipad сидя на лестничной клетке своей квартиры.
Все произошло очень банально, как и любая ситуация, которая вызывает к самому себе только эмоции сожаления и фразу «ну ты и дурак»… 🙂
Планирую во вторник (20.11.2012) провести вебинар, на котором расскажу о функциональных возможностях нашего нового продукта Terrasoft Webitel CallManager. Если Вам интересно, что он из себя представляет — регистрируйтесь на вебинар. Так же, можете задавать вопросы в комментариях к данному посту.
Рассказывают: последний месяц очень интенсивно идут работы по запуску нового продукта от нашей Компании на платформе Terrasoft. Много еще надо успеть, поскольку планируем показать миру beta-версию уже на этой партнерской конференции (9-10 ноября). Так что, звиняйте 😉
Что это за продукт и как прошла конференция — расскажу уже после оной в следующем подкасте!
P.S. ах, и да, если есть вопросы к подкасту — задавайте 🙂
Установил на своем SIP-телефоне последнюю прошивку от Yealink (v.61) и увидел новый пункт меню: MulticastIP. Проверим как он работает! В диалплан FreeSWITCH добавлю новый пункт с Multicast Paging группой, на который звонить будет по номеру 7243:
В Yealink можно прописать 10 Multicast групп. Прописываем нашу группу «Селектор» на объявленный в диалплане IP 224.168.168.168 и порт 34567:
Звоним и любуемся (и говорить не забываем): Прошивка 61 — англоязычная, если для Вас это помеха, тогда ждем скорого выхода (в ноябре обещали) русскоязычной версии 70 от IP.Matika.
После перерыва в 3 недели я записал 4 выпуск!
Из новостей. Обновились: YATE, 3CX, Asterisk. Мысли о безопасности программных IP АТС.
Практика отправки SMS, FAX и как пропустить 30 звонков через канал в 0,5 Mbps
Встречаем новый кодек Opus. Когда уже наступит эра HD телефонии???
У нас есть первый победитель!
Жду Ваших вопросов!
Продолжая серию публикаций о SMS, сегодня хочу рассказать о еще одной удобной функции, которую легко реализовать в АТС. Типовая ситуация: менеджер звонит на мобильный клиента, а тот просит sms-кой скинуть свои контакты… Мы уже говорили о SMS-визитках, но это же исходящий звонок, здесь наш сценарий не сработает! Как быть? Просто, воспользуемся уже знакомым bind_meta_app application. В dialplan, когда звоним на мобильные, добавим вызов вот такого action:
В самом JavaScript сценарии у меня будет простенькая визиточка, но Вы сможете делать даже личные sms для каждого менеджера! Вот пример кода для моего провайдера:
use("CURL");
var CallerID = session.destination;
var SMS = " \
\
Nashy kontakty: (044)591-92-81, (032)232-77-57, office@it-sfera.com.ua, www.it-sfera.com.ua" ;
console_log("info","Send SMS Card: \n" + SMS + "\n");
var curl = new CURL();
curl.run("POST", "http://sms.it-sfera.com/websend/", SMS);
Теперь менеджер во время разговора с клиентом может просто нажать *0 на SIP-телефоне и клиент получает SMS-визитку на свой телефон. Удобно, вчера дважды сам воспользовался этой функцией!
Думаю, что многие используют переадресацию звонков на мобильный, когда вне офиса. Да, это очень удобная функция современной АТС: уходишь, включил переадресацию на мобильный (или по расписанию) и принимаешь важные звонки… Но, одним из неудобных моментов такой переадресации — отсутствие понимания с какого номера пришел звонок (у нас то всегда отображается офисный номер!). Для себя я решил этот вопрос следующим образом: приходит переадресованный звонок, разговариваю, надо узнать номер звонящего — нажимаю *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 сотруднику о пропущенном звонке. Я опишу, как реализовать этот функционал на FreeSWITCH.
1. Формат SMS
Мой SMS провайдер принимает сообщения через HTTP XML API. Мне необходимо будет сформировать XML файл и передать его методом POST на URL шлюза. Использовать будем модуль mod_curl. Здесь проблем нет. Только нужна будет функция для преобразования XML в urlencode…
2. Когда и куда отправлять
Что бы ответить на вопрос куда отправить, в directory я к регистрации каждого сотрудника добавил переменную cell с мобильным. Теперь из скрипта можно будет получить эту информацию. А когда отправлять? Здесь 2 проверки:
1. причина разрыва коммутации «ORIGINATOR_CANCEL»
2. возможно абонент Вам оставил голосовое сообщение?
3. Как вызвать скрипт?
Из dialplana 🙂 Просто добавьте вот такой action в extension с локальными пользователями:
4. А теперь сам скрипт на Lua
local send = false
local cell = env:getHeader("cell")
local hangup_cause = env:getHeader("hangup_cause")
local bridge_channel = env:getHeader("bridge_channel")
local CallerName = env:getHeader("Caller-Caller-ID-Name")
local CallerNumber = env:getHeader("Caller-Caller-ID-Number")
function urlencode (s)
return (string.gsub (s, "%W",
function (str)
return string.format ("%%%02X", string.byte (str) )
end ))
end
local SMS = ' \
\
'
if (hangup_cause == "ORIGINATOR_CANCEL" and cell) then
SMS = SMS.. "Вам звонили: " ..CallerName.. " " .. CallerNumber
send = true
end
if (bridge_channel == "loopback/voicemail-a" and cell) then
SMS = SMS.. "Новое сообщение от " ..CallerName.. " " .. CallerNumber
send = true
end
if (send) then
SMS = SMS.. ""
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