Реализовали у себя отправку и прием факсов из Terrasoft. Версия Terrasoft 3.4.0.136, Oktell 111007.
Для этого:
1. В окно wnd_CallEdit в меню amToolbar добавляем два компонента ActionMenuItem:
- amiFaxTransmit
- amiFaxReceive
С подписью Отправить факс и Принять факс соответственно.
На событии onExecute amiFaxTransmit прописываем:
На событии onExecute amiFaxReceive прописываем:
2. Открываем scr_OktellClientUtils и в функцию OktellCallClientObject() добавляем следующие строки:
this.FaxStartTransmit = function() {
OktellFaxStartTransmit();
}
//------ Получение факса -------//
this.FaxStartReceive = function() {
OktellFaxStartReceive();
}
3. Открываем scr_OktellUtils и Добавляем функции:
function OktellFaxStartReceive(){
var date;
date = new Date();
CurrentDay = date.getDate();
CurrentMonth = (date.getMonth() + 1);
CurrentHours = date.getHours();
CurrentMinutes = date.getMinutes();
CurrentSeconds = date.getSeconds();
FileName = String(CurrentDay) + '_' + String(CurrentMonth) + ' '
+ String(CurrentHours) + '_' + String(CurrentMinutes) + '_' + String(CurrentSeconds);
var wshshell = new ActiveXObject("wscript.shell");
var FullName = wshshell.ExpandEnvironmentStrings("%HOMEPATH%") +
'\\Desktop\\Принятые_факсы\\fax_' + FileName + '.tiff';
var CommandXml =
'' +
'
'' +
'
'
'' +
'' +
'';
Oktell.Instance.FaxStartReceive(CommandXml);
}
//------------ Отправка факсового сообщения -----------------
function OktellFaxStartTransmit(){
var FileName = System.CreateObject('TSObjectLibrary.Value');
var DialogCaption = "Выбор файла FAX";
// Фильтр по расширению прикрепляемых файлов
var DefaultExt = '*.jpg';
var IMGFilter = "Файл изображения" + ' (*.jpg)|*.jpg|(*.tif)|*.tif|(*.bmp)|*.bmp';
if (!(System.OpenDialog(FileName, IMGFilter , DefaultExt, DialogCaption, EmptyStr))) {
return;
}
// Получаем полный путь к файлу с раширением
var FullName = FileName.Value;
var CommandXml =
'' +
'
'' +
'
'
'' +
'' +
'';
Oktell.Instance.FaxStartTransmit(CommandXml);
}
4. Для того, чтобы увидеть ход процесса и получать информацию о возможных ошибках отправки и получения факсовых сообщений в функцию OnOktellCommunicate() скрипта scr_OktellUtils добавим:
OktellFaxStopped(RootNode);
break;
case ocmFaxFilesReceived: //----- Событие АТС о завершении файла по факс-сеансу
OktellFaxFilesReceived(RootNode); // -- Содержит признак успешности приема и ...
break;
case ocmFaxStarted: //----- Событие АТС о начале факс-сеанса
OktellFaxStarted(RootNode);
break;
5. В scr_OktellUtils добавим:
var wnd_Information = Services.GetSingleItemByUSI('wnd_FaxStartProgress');
wnd_Information.Prepare();
wnd_Information.Show();
}
function OktellFaxStopped(){ //----- Событие АТС о завершении факс-сеанса
var wnd_Information = Services.GetSingleItemByUSI('wnd_FaxStartProgress');
wnd_Information.Close();
}
function OktellFaxFilesReceived(RootNode){ //----- Событие АТС о завершении приема файла по факс-сеансу
var wnd_Information = Services.GetSingleItemByUSI('wnd_FaxStartProgress');
wnd_Information.Close();
// --- Успешно принято ? ---//
var SuccessXML = MsxmlGetChildXmlNodeByAttributeValue(RootNode, 'key', 'success');
var SuccessFax = MsxmlGetXmlAttributeValueByName(SuccessXML, 'value');
// --- Текст ошибки ---//
var ErrorXML = MsxmlGetChildXmlNodeByAttributeValue(RootNode, 'key', 'errortext');
var ErrorFax = MsxmlGetXmlAttributeValueByName(ErrorXML, 'value');
if (SuccessFax == 1){
var Message = "Операция приема/отправки факсового сообщения успешно завершена."
ShowInformationDialog(Message);
}
else if (SuccessFax == 0){
var Message = FormatStr("Ошибка получения факса: '%1'", ErrorFax);
ShowConfirmationDialog(Message);
}
}
6. Сервис окна wnd_FaxStartProgress:
7. Ну и сами картинки в карточку звонка
Принятые факсы сохраняются на рабочем столе пользователя в папке Принятые_факсы (папка создается автоматически) с расширением *.tiff. Для отправки подходят файлы изображений *.jpeg, *.bmp, *.tiff. Во время отправки и получения факса, пользователь Terrasoft слышит в трубке музыку из сценария Oktell (вместо служебных сигналов факса). Отправка других форматов файлов находится в стадии разработки
Документация Oktell для разработчиков
Очень интересно будет услышать Ваше мнения, а также предложения и замечания.
Вылетает ошибка "предполагается наличие объекта"
Скрипты во вложении
Добрый день, Алексей! Возможно эта ошибка возникает из-за отсутствия в wnd_CallEditScript прикрепленного скрипта scr_FileUtils. Для общей картины вот мои скрипты .
Скрипт прикрепил
Теперь в момент выбора файла для отправки вылетает сообщение (во вложении). При этом сервер Октелла факс не отправляет (т.е. скорее всего факс-сеанс не начинается)
Оно же вылетает и при приеме факса, (при старте приема и при окончании), но тем не менее факс приходит успешно и сохраняется на рабочем столе.
Скажите, удалось ли добавить отправку факсом doc и xls файлов?
"bayborodin" написал:Скажите, удалось ли добавить отправку факсом doc и xls файлов?
Напрямую не удалось реализовать такую функцию, пришлось воспользоваться сторонней коммерческой разработкой Total Doc Converter, который в фоновом режиме конвертирует doc в jpeg. Очень полезная особенность Total Doc Converter - возможность "склеивать" несколько страниц doc в один "рулон" jpeg. С pdf файлами все намного сложнее из-за функции сжатия. При их конвертации иногда случаются проблемы с отображением символов.