Звонок с сайта
Благодаря возможностям FreeSWITCH, сделали у себя на сайте кнопку «Позвонить»
Можем предоставить нашим клиентам такую же — БЕСПЛАТНО. Подключайте к своим PBX: Oktell, Infinity, Asterisk, YATE, FreeSWITCH или напрямую в SIP-телефон!
Благодаря возможностям FreeSWITCH, сделали у себя на сайте кнопку «Позвонить»
Можем предоставить нашим клиентам такую же — БЕСПЛАТНО. Подключайте к своим PBX: Oktell, Infinity, Asterisk, YATE, FreeSWITCH или напрямую в SIP-телефон!
Сегодня у нас есть FreeSWITCH с подключенными телефонами и отдельно у менеджеров установлен Terrasoft CRM. Необходимо обеспечить возможность определения имени из Terrasoft CRM звонящего абонента на SIP-телефонах. Для этого я написал PHP-скриптик:
Один из наших клиентов (очень большая компания в России) не может пользоваться Skype для звонков к нам в офис (политика безопасности), а на стационарный — дорого. Единственный вариант для него — Google Talk. А мне хочется что бы этот звонок отображался в единой статистике с возможностью прослушать его запись. Давайте объединим пожелания клиента с нашими!
Будем использовать FreeSWITCH. Необходимо включить модуль Dingaling. В файле conf/jingle_profiles/client.xml
Для входящих в dialplan добавляем:
Все! Теперь звонок будет поступать на номер 1000
И принимать звонок в Oktell
Наш адрес GTalk для звонков: it.sfera.com
Настроил на нашем сервере возможность прямого звонка. Теперь все желающие могут позвонить с любого SIP-телефона на номер: sip:911@it-sfera.com
или принять участие в конференции: sip:888@it-sfera.com
Если Вы используете Oktell IP PBX без модуля КЦ и Вы не умеете разрабатывать плагины, а необходимо быстро решить вопрос: При входящем звонке отобразить историю всех звонков по номеру с комментариями. Как это сделать? Пойдем через веб-страничку 🙂
Для начало разработаем SQL запрос, что бы увидеть все входящие, исходящие и пропущенные звонки по номеру:
SELECT [s].[TimeAnswer] as [TimeAnswer] ,CONVERT(varchar(max), Cast (Cast ( [s].TimeStop - [s].TimeAnswer as float ) * 1440 as decimal(15,2))) as [TimeLong] ,'входящий' AS [D] ,CONVERT(varchar(max), [s].[Astr]) as [Abonent] ,CONVERT(varchar(max), [s].[Bstr]) as [Oper] ,l.LineCode as [LineCode] ,CONVERT(varchar(max), [c].[Comment]) AS [Comment] FROM [oktell].[dbo].[A_Stat_Comments] [c] right outer join [oktell].[dbo].[A_Stat_Connections_1x1] [s] on [s].[Id] = c.[id] join [oktell].[dbo].A_ServerExtLines [l] on [s].ALineId = [l].id WHERE ([s].[AOutNumber] like '$c' AND [s].[Bstr] not like 'IVR') UNION SELECT [s].[TimeAnswer] as [TimeAnswer] ,CONVERT(varchar(max), Cast (Cast ( [s].TimeStop - [s].TimeAnswer as float ) * 1440 as decimal(15,2))) as [TimeLong] ,'исходящий' AS [D] ,CONVERT(varchar(max), [s].[Bstr]) as [Abonent] ,CONVERT(varchar(max), [s].[Astr]) as [Oper] ,l.LineCode as [LineCode] ,CONVERT(varchar(max), [c].[Comment]) AS [Comment] FROM [oktell].[dbo].[A_Stat_Comments] [c] right outer join [oktell].[dbo].[A_Stat_Connections_1x1] [s] on [s].[Id] = c.[id] join [oktell].[dbo].A_ServerExtLines [l] on [s].BLineId = [l].id WHERE [s].[BOutNumber] like '$c' AND [s].[Astr] not like 'IVR' UNION SELECT [s].[TimeAnswer] as [TimeAnswer] ,CONVERT(varchar(max), Cast (Cast ( [s].TimeStop - [s].TimeAnswer as float ) * 1440 as decimal(15,2))) as [TimeLong] ,'пропущенный' AS [D] ,CONVERT(varchar(max), [s].[Astr]) as [Abonent] ,CONVERT(varchar(max), [s].[Bstr]) as [Oper] ,l.LineCode as [LineCode] ,CONVERT(varchar(max), [c].[Comment]) AS [Comment] FROM [oktell].[dbo].[A_Stat_Comments] [c] right outer join [oktell].[dbo].[A_Stat_Connections_1x1] [s] on [s].[Id] = c.[id] join [oktell].[dbo].A_ServerExtLines [l] on [s].ALineId = [l].id WHERE [s].[AOutNumber] like '$c' AND [s].[Bstr] like 'IVR' AND [s].[ReasonStop] = '3' ORDER BY [TimeAnswer] DESC
Да-да! 😉