среда, 23 ноября 2011 г.

FREE Oktell GSM to SIP

Новость месяца!

Внимание. С 21 ноября 2011 года продукт Oktell SIP-GSM Gateway распространяется бесплатно.
Для взаимодействия программы с GSM-сетями необходима установка в USB-порт компьютера GSM-модема с поддержкой голосовых функций.



Подробнее об Oktell SIP-GSM Gateway тут

Скачать можно тут

вторник, 1 ноября 2011 г.

Call-центр\IP PBX Oktell: Закрепление абонентов за операторами при исходящей задаче.

IP PBX Oktell

Задача:
Нужна исходящая задача, в которой каждый абонент закреплен за конкретным оператором.

Создаем проект:



Создаем таблицу абонентов:




Добавляем столбцы и даем им ОБЯЗАТЕЛЬНЫЕ назначения:


Импортируем данные из таблицы Excel:




Структура Excel имеет следующий вид:



В результате:



Теперь у нас есть таблица абонентов,  в которой за номером закреплены определенные ID. Теперь эти ID нужно сопоставить со списком операторов.

Получаем список наших операторов:

Select id,name
from A_Users u
Inner join A_UserParams up on u.Id = up.Iduser
Where IsOperator = 1



Вставляем все в Excel. Даем название столбцам и каждому оператору даем определенный ID (Operator ID):



Создаем таблицу в Oktell'е и импортируем данные об операторах.





Создаем задачу и  задаем ей необходимые свойства. Рассмотрим вкладки "Ресурсы" и "Абоненты"


Выбираем всех операторов, независимо от того, будут ли они участвовать задаче.
Выбираем вариант обхода операторов "Пользовательская процедура" ( о не чуть ниже)



В качестве таблицы абонентов выбираем нашу таблицу.



Теперь запускаем SQL Server Management Studio Express. Выполняем запрос:

SELECT [Id]
            ,[Name]

FROM [oktell_settings].[dbo].[A_TaskManager_Tasks]


В получившейся таблице находим нашу задачу и копируем ее ID.



Далее ищем хранимую процедуру A_TaskManager_OperatorsAll_Get_Custom в баз oktell и модифицируем ее.




Текст запроса:



-- Задача "С закреплением абонента за оператором"

if (@idtask = 'F6A349EA-F430-4FA7-9664-D17DF9870347')
    begin
       select GUID as Id
       from Operators
           inner join tab_clients on [ID оператора]=[Operator ID]
      where tab_clients.id =@idabonent
      return
end

--Дефолтные величины
Select Id
FROM A_Users u
Inner join A_UserParams up on u.Id = up.Iduser
Where IsOperator = 1
end





Где вместо "F6A349EA-F430-4FA7-9664-D17DF9870347" пишем ID вашей задачи.

Нажимаем "Выполнить"

Теперь запускаем задачу:

И видим, что звонок абоненту 87777777777 распределяется на оператора "Медведев Виктор Сергеевич"


воскресенье, 9 октября 2011 г.

Call-центр\IP PBX Oktell: Настройка в связке с SIPGsm

IP PBX Oktell
Oktell SIP-GSM Gateway

Нужны линии GSM? Но нет под рукой аппаратного шлюза? Тогда на помощь придет Oktell SIP-GSM Gateway.

Рассмотрим его настройку.
1) Вставляем модем в USB-разъем.
Если модемов несколько, то рекомендуется использовать USB-хаб, который подключается напрямую в материнскую плату, а не в PCI-USB-плату. 
После установки драйвера устройства, заходим в диспетчер устройств.
Устройство должно определиться так:

Если все так, то замечательно. Иначе нужно разблокировать поддержку голоса.

2) Устанавливаем Oktell SIP-GSM Gateway используя инструкцию

3) Проверили 5 модели модемов.

    - ZTE MF 18

   - huawei e1550

     - huawei e1550


     - huawei e171

   - huawei e173

3) Запускаем SIP-GSM Gateway



4) Настраиваем учетные данные


192.168.0.100 - ip адрес сервера Oktell
SIPGsm1 - логин и пароль ( можете придумать свой )
"Локальный порт" для каждой учетной записи прописываем свой. Например 5071, 5072, 5073
Обязательно заполняем "SIP-номер по умолчанию". В нашем случае должен совпадать с логином. 
Жмем "Сохранить", а потом "Применить"

5) Переходим в Oktell, в карту сети. Создаем внешний шлюз.


Открываем свойства шлюза и заводим учетные записи.



Сохраняем и перезагружаем.
В мониторинге видим, что линия зарегистрировалась.


Теперь можете назначить направление и с успехом звонить!

четверг, 29 сентября 2011 г.

Call-центр\IP PBX Oktell: Опрос клиентов без использования Call-центра

IP PBX Oktell
Есть задача опросить клиентов, а модуля Call-центра у вас нет? Тогда на помощь придет Google Docs

Создаем в нем Форму:


Добавляем необходимые элементы:


Копируем адрес внизу страницы. Он нам понадобится.

Переходим в Oktell. В раздел Администрирование\Внешние модули\Разделы меню


Нажимаем "Добавить".


Вставляем ранее скопированную ссылку. Даем название пункту меню. И сохраняем.


Перезагружаем клиентское приложение. После перезапуска появится новый пункт меню "Карточка опроса"


Теперь можно при входящих\исходящих звонках проводить опрос.


Нажимаем "Готово"


Для возврата нажимаем "Вернуться к форме".

Статистику по опросу можно просмотреть в Google Docs


Смотрим статистику и наслаждаемся.


Надеюсь кому-нибудь помог =)

среда, 24 августа 2011 г.

Call-центр\IP PBX Oktell: Получить путь к записи разговора, по завершению коммутации

IP PBX Oktell


Задача:
Приходит внешний звонок. Коммутируется с внутренней линией. После разговора необходимо отправить файл записи разговора  на почтовый ящик.
Для этого нам понадобиться определить адрес этого файла.

Разберем  пример нахождения пути, к данному файлу. Потом уже его можно без проблем отправить, воспроизвести и т.д.

В "Главном сценарии"  создадим глобальную переменную "Флаг".
Присвоим ей значение "1" . Только в том случае, когда нам это необходимо.


Сохраняем.

Создаем служебный сценарий "1_Сбор контента".
Он будет назначен как "Служебный сценарий обработки контента". Подробнее про назначение сценария тут
 
В нем в качестве стартового параметра передается XML-файл, содержащий информацию о коммутации.


Создаем   глобальную переменную "Флаг" ( в нее передается значение из Главного сценария).
Проверяем ее значение.



Анализируем XML-файл с помощью компонента "Парсер".
 Поисковый запрос: commutation>property_simple[key=idconnection]
Сначала получаем количество коммутаций, в рамках цепочки коммутации. Берем последний ID коммутации. т.к. первый  это ID коммутации с IVR сценарием.





Теперь получаем ID последней коммутации.


  
Выполняем SQL запрос в базу, для получения пути к файлу.
Т.к. имя файла не храниться в БД, то придется его "склеить"

SQL запрос :
declare @aln nvarchar(10)
declare @bln nvarchar(10)
declare @idrecdir int
declare @ts nvarchar(50)
declare @path nvarchar(1000)

select top 1 @aln=case when alinenum<blinenum then alinenum else blinenum end,
@bln=case when blinenum>alinenum then blinenum else alinenum end,
@idrecdir=idrecdir, 
@ts=replace(convert(nvarchar(10), TimeStart, 121),'-','_')+'__'+replace(convert(nvarchar(20), TimeStart, 114),':','_') from A_Stat_Connections_1x1
where Id=@id and isrecorded=1

set @path='C:\Program Files\oktell\Server\RecordedFiles\'
if (@idrecdir>0)
select @path=path from A_Stat_RecordDirectories where id=@idrecdir

set @filename=@path+replace(substring(@ts, 1, 10),'_','')+'\'+substring(@ts, 13, 2)+substring(@ts, 16, 2)+'\mix_'+@aln+'_'+@bln+'__'+@ts+'.wav'  

Назначаем параметры. 


Сохраняем


SQL запрос вернет нам путь к файлу. Теперь его можно указать в качестве пути для отправку на почту, для воспроизведения и т.д. В примере для наглядности я просто вывел его в качестве уведомления.



Переходим в раздел "Общие настройки".
1) Тут назначаем "Служебный сценарий обработки контента"
2)  Выставляем настройки записи разговоров.





Сохраняем

Осуществляем входящий звонок. Разговариваем. Кладем трубочку и видим уведомление:



D:\RecFile\201108241712\mix_13001_16003__2011_08_24__17_12_30_327.wav




четверг, 18 августа 2011 г.

Call-центр\IP PBX Oktell: Отобразить карточку диалога после ручного набора

IP PBX Oktell

Задача:
Оператор набирает номер в ручном режиме. Необходимо после разговора заполнить данные формы.

И так приступаем к реализации...
Нужно определять после какого конкретного звонка отображать карточку. Я решил ввести префикс, например *
Соответственно в сценарии маршрутизации внутренних звонков будем этот префикс анализировать.


Если есть префикс *, то удаляем его. И переключаем на внешнюю линию. Если переключение произошло, то определяем ID оператора (человека который набирает номер) и делаем запись в таблицу (структура таблицы чуть ниже). Далее дезактивируем и активируем задачу ( для чего и что за задачу-чуть ниже). 


Создаем таблицу абонентов в разделе Call-центр.





Сохраняем.

Создаем еще одну таблицу, которая будет заполняться выборкой из таблицы User_tab_clients.
Т.е. выбираем все записи у кого поле status не равен 1

"Прикрепленная таблица БД" нужна для того, что бы в сценарии диалога использовать переменные типа "Поле таблицы"


Назначаем ID как "Идентификатор",  phone как "Телефон"


Сохраняем.

Создаем сценарий диалога. В нем получаем имя оператора. Делаем запись в нашу таблицу. И присваиваем служебной переменной "Результат звонка" значение 2. Подробнее тут




Форма диалога выглядит так:



Используемые переменные: 

Сохраняем сценарий.

Создаем задачу.

Тип: С запросом у оператора


Выбираем всех операторов, независимо от того, будут ли они участвовать задаче.
Выбираем вариант обхода операторов "Пользовательская процедура" ( о не чуть ниже)


В качестве таблицы абонентов выбираем вторую нашу таблицу. И ставим галочку "Синхронизировать со списком при каждой активации". Как раз для этого делали дезактивацию и активацию  в сценарии маршрутизации внутренних звонков.


Выбираем наш сценарий, как сценарий запроса на дозвон.


Сохраняем и активируем задачу.


Теперь запускаем SQL Server Management Studio Express. Выполняем запрос:

SELECT [Id]
            ,[Name]

FROM [oktell_settings].[dbo].[A_TaskManager_Tasks]


В получившейся таблице находим нашу задачу и копируем ее ID.

Далее ищем хранимую процедуру A_TaskManager_OperatorsAll_Get_Custom в баз oktell и модифицируем ее.



Текст запроса:

--Задача "Карточка после ручного звонка"

if (@idtask = '42479030-427C-4F7F-9262-87512F5567AD')
    begin
      select Operator_id as Id from User_tab_clients
      where Id = @idabonent
      return   
end
--Дефолтные величины
Select Id
FROM A_Users u
Inner join A_UserParams up on u.Id = up.Iduser
Where IsOperator = 1
end



Где вместо "42479030-427C-4F7F-9262-87512F5567AD" пишем ID вашей задачи.

Нажимаем "Выполнить"

Теперь набираем номер, в нашем случае *89274365636 ( номер вымышлен)


Поговорили. Теперь нажимаем "Завершить"  и у нас всплывает наша карточка.


Выбираем целевой или не целевой и нажимаем "Далее"
Вот и всё. Жду вопросов.