Публикация

Звонки из Terrasoft без интеграционного ядра Oktell

У одного из наших клиентов уже давно успешно работает Terrasoft CRM 3.3.0, а не так и давно они еще и для телефонии внедрили у себя Oktell IP-PBX (когда акция была:wink:). Так вот, те менеджеры, что работают в Terrasoft захотели (для удобства) звонить клиенту “одним кликом”, а не копировать номер (помню, как у нас офисе это было до установки полноценной связки Terrasoft => Oktell – так-что я их отлично понимаю)! Но нужно все сделать экономно (денег на интеграционную библиотеку не выделили)… Помните, я писал о звонке в Oktell по гиперсылке? Вот эту функцию и будем использовать!

Web-интерфейс клиентского приложения Oktell – это молодой, но очень быстро развивающийся и перспективный интерфейс взаимодействия!

Что нам нужно? Рассмотрим на одном примере. Создаем на контроле окна со средством связи Контрагента или Контакта меню действия и подключаем как кнопочку:

В обработчике по нажатию на это действие прописываю код:

function amiOktellOnExecute(ActionMenuItem, Sender) {
    var Communication1 = DigitsFromString(edtCommunication1.DataField.Value);
    var OktellUrl = 'http://localhost:4059/callto?number=' + Communication1;
    var oRequest = new ActiveXObject('MSXML2.XMLHTTP');
        oRequest.Open('GET', OktellUrl, true);
        oRequest.Send();
}

Теперь из клиента Terrasoft, как и хотели менеджеры, одним кликом осуществляем звонок:

На вторую стадию доработки выносим “рюшечки”: добавить новую деталь “Звонки”, по завершению звонка в Oktell запустить служебный сценарий постобработки вызова, который будет создавать на детали в Terrasoft историю звонков по клиентам.

Еще одно новшество, которое появилось в версии Oktell старше 101122: возможность получить информацию о текущем разговоре:http://127.0.0.1:4059/getcurrentcallinfo
ответ придет в виде контента:

version="1.0" encoding="utf-16"?>
version="80710">
name="result" count="1">
name="callinfo">
key="result" value="1" name="success" />
key="mode" value="connected" />
key="number" value="16" />
key="name">>

key="description">>
>
>
>

среди режимов (поле mode): none, connected, ringing, flashed, calling
среди полей: number, name, description, comment

--
Из блога Vitaly Kovalyshyn @ IT-СФЕРА

Нравится

Поделиться

27 комментариев

Отлично! Очень удобно.
Как сделать так, чтобы такая дополнительная кнопка появлялась в тех полях, значение которых соответствует таким средствам связи, как "телефон", "мобильный телефон","Факс" и т. д.?

Скриптами делать проверку :)

Предпочитаю продавать клиенту полнофункциональное решение Terrasoft-Oktell.

Юра, продавать можешь все что угодно! Здесь описание варианта технического решения поставленной задачи.

Тем техническим специалистам, кого интересует развитие Web-интерфейса взаимодействия Oktell, приглашаем к открытому обсуждению: http://r.telsystems.ru/blogs/plans/36/

Юра,
Одной из главнейших наших задач вижу в том чтобы сделать продукт максимально удобным и доступным. Благодаря таким инициативам как эта, мы становимся на шаг ближе клиенту.
В общем случае, предпочитаю иметь возможность выбора - предлагать клиенту то или другое.

Шаг действительно достойный, и я восхищаюсь инициативой Виталия!
Возможно, вы меня не правильно поняли, коллеги, будучи не техническим специалистом, я просто сказал, что для меня это проще чем, например, писать скрипт :)
Разумеется, такая возможность делает решения еще более привлекательными на рынке!!! И это просто здорово!!!
Я правильно понимаю, что можно так же например вызывать интерфейс Skype или другого клиента в зависимости от "тип связи"?

Юра, я тебя понял правильно ;)

Skype - да, у него есть хороший внешний интерфейс :) А вот web-интерфейс Oktell только развивается. Скоро можно будет такими же командами и поднять трубку, и перевести звонок и т.д.

"Шевченко Юрий" написал:Я правильно понимаю, что можно так же например вызывать интерфейс Skype или другого клиента в зависимости от "тип связи"?

Подскажите, пожалуйста, как можно вызвать интерфейс Skype из Terrasoft.

"Ремеев Азат Илдарович" написал:Подскажите, пожалуйста, как можно вызвать интерфейс Skype из Terrasoft.

Подробнее объясните, какой функционал вам нужно реализовать?

Функционал, аналогичный тому, что описан выше. То есть начать соединение через Skype с помощью кнопки в Terrasoft (если тип связи "Skype"). Насколько я знаю сделать вызов в Skype можно с помощью ссылки "skype:SkypeContact?call". Вопрос в том, как это реализовать в Terrasoft.

Проверил из windows explorer, работает такой линк для установленного Skype:
skype:vsamael?call

Попробуйте вот так:

function amiOktellOnExecute(ActionMenuItem, Sender) {
    var Communication1 = edtCommunication1.DataField.Value;
    var SkypeUrl = 'skype:' + Communication1 + '?call';
    var oRequest = new ActiveXObject('MSXML2.XMLHTTP');
        oRequest.Open('GET', SkypeUrl, true);
        oRequest.Send();
}

"Виталий Ковалишин" написал:Попробуйте вот так:
function amiOktellOnExecute(ActionMenuItem, Sender) {
    var Communication1 = edtCommunication1.DataField.Value;
    var SkypeUrl = 'skype:' + Communication1 + '?call';
    var oRequest = new ActiveXObject('MSXML2.XMLHTTP');
        oRequest.Open('GET', SkypeUrl, true);
        oRequest.Send();
}

Попробовал. На строчке oRequest.Send(); ошибка "msxml3.dll: Синтаксическая ошибка"

Хочу подать идею:
кроме Skype и Oktel можно еще использовать OCS от Microsoft (aka Communicator).

"Ремеев Азат Илдарович" написал:Попробовал. На строчке oRequest.Send(); ошибка "msxml3.dll: Синтаксическая ошибка"

Все таки, есть у кого нибудь идеи из за чего такая ошибка может возникнуть?

Не работает!
Уточните требования: что должно стоять для корректной отработки кода?

клиент Oktell и клиент Terrasoft

Версия Oktell начиная с 5-го июля 2010 года

У нас декабрьская версия Oktell, делаю:

var oRequest = new ActiveXObject('MSXML2.XMLHTTP.3.0');
var strCall='1234567';
oRequest.open('GET', strCall, true);
oRequest.send();

Не работает!

Попробуйте вот так:

var oRequest = new ActiveXObject('MSXML2.XMLHTTP');
var strCall='http://localhost:4059/callto?number=1234567';
oRequest.Open('GET', strCall, true);
oRequest.Send();

"Ремеев Азат Илдарович" написал:Функционал, аналогичный тому, что описан выше. То есть начать соединение через Skype с помощью кнопки в Terrasoft (если тип связи "Skype"). Насколько я знаю сделать вызов в Skype можно с помощью ссылки "skype:SkypeContact?call". Вопрос в том, как это реализовать в Terrasoft.

var fatRead = 1;
System.OpenFile('skype:goedelkam?call', fatRead);

Прошу прощения, именно так и делал:

var oRequest = new ActiveXObject('MSXML2.XMLHTTP');
var strCall='http://localhost:4059/callto?number=1234567';
oRequest.Open('GET', strCall, true);
oRequest.Send();

Проблема в том, что ничего не происходит в ТерраСофт XRM. В VS debugger пишет после вызова .Send() в поле oRequest.Status: "Неопознанная ошибка". В oRequest.ResponseText: "Данные, необходимые для завершения этой операции еще не доступны."
Операционная система: "Windows 7 Максимальная".
Есть идеи как решить проблему?

1. Настроен сценарий автодозвона?
2. Пользователь имеет право выполнять автодозвон?
3. Выполняется в браузере строка: http://localhost:4059/callto?number=1234567 ?

1-3: ответ "да".
На XML из Run переделываю из-за того, что вызов абонента в Oktel открывает окошко браузера.

"Кривонос Максим" написал:var fatRead = 1;
System.OpenFile('skype:goedelkam?call', fatRead);

Спасибо, все получилось.

Проблема решена:
вся проблема заключалась в настройке зон безопасности Microsoft Internet Explorer. Инструкция здесь: http://support.microsoft.com/kb/923737. KB 50195.
После сброса настроек все корректно заработало в Oktell :smile:
ВСЕМ СПАСИБО!

В версии Terrasoft 3.4 в карточках Контрагент и Контакт есть иконки для звонков, но настроены они на Skype, можно ли изменить на Oktell?

Показать все комментарии