Звонки из Terrasoft без интеграционного ядра Oktell
У одного из наших клиентов уже давно успешно работает Terrasoft CRM 3.3.0, а не так и давно они еще и для телефонии внедрили у себя Oktell IP-PBX (когда акция была). Так вот, те менеджеры, что работают в Terrasoft захотели (для удобства) звонить клиенту “одним кликом”, а не копировать номер (помню, как у нас офисе это было до установки полноценной связки Terrasoft => Oktell – так-что я их отлично понимаю)! Но нужно все сделать экономно (денег на интеграционную библиотеку не выделили)… Помните, я писал о звонке в Oktell по гиперсылке? Вот эту функцию и будем использовать!
Web-интерфейс клиентского приложения Oktell – это молодой, но очень быстро развивающийся и перспективный интерфейс взаимодействия!
Что нам нужно? Рассмотрим на одном примере. Создаем на контроле окна со средством связи Контрагента или Контакта меню действия и подключаем как кнопочку:
В обработчике по нажатию на это действие прописываю код:
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
ответ придет в виде контента:
name="result" count="1">
>
>
>
среди режимов (поле mode): none, connected, ringing, flashed, calling
среди полей: number, name, description, comment
--
Из блога Vitaly Kovalyshyn @ IT-СФЕРА
Отлично! Очень удобно.
Как сделать так, чтобы такая дополнительная кнопка появлялась в тех полях, значение которых соответствует таким средствам связи, как "телефон", "мобильный телефон","Факс" и т. д.?
Предпочитаю продавать клиенту полнофункциональное решение 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: Синтаксическая ошибка"
"Ремеев Азат Илдарович" написал:Попробовал. На строчке oRequest.Send(); ошибка "msxml3.dll: Синтаксическая ошибка"
Все таки, есть у кого нибудь идеи из за чего такая ошибка может возникнуть?
Не работает!
Уточните требования: что должно стоять для корректной отработки кода?
У нас декабрьская версия 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:
ВСЕМ СПАСИБО!