-
Спасибо большое!)
-
Решил я написать здесь ответ на одно письмо, которое пришло мне по e-mail. Выкладываю его здесь, так как он может кому-нибудь пригодится в рамках разработки по взаимодействию с Avaya ATC. Речь пойдет о переключении во время разговора на свободную линию многоканального телефона. Как раз в этот момент у абонента, которому говорят "Подождите минуточку" - звучит душевная музыка, пока он томится в ожидании, когда его собеседник, наконец-то, закончит болтать неизвестно с кем. Вариантов решений много. Самый простой - это создать интерфейс с помощью WSDL - файла, выложенного на сайте Avaya, но сам набор инструментов, который предоставляет данный интерфейс крайне ограничен. Поэтому рассмотрим всё через призму того же ctConector. Приведу код идеально работающей программы, без учета моментов, когда "шаловливые ручки" пользователей находят такие варианты выведения программы из нормального режима работы, что сам никогда бы в жизни до такого не додумался. Примерный код, написанный и протестированный быстренько минут за 10...
const
MyPhone = '16105';
FirstPhone = '16708';
SecondPhone = '16709';
........................................................
........................................................
.......................................................
type
TRingProp = record
CallId : Integer;
CalledPhone,
CallingPhone : string;
End;
PRingProp = ^TRingProp;
...........................................................
...........................................................
.............................................................
private
ListRings : array [0..1] of PRingProp;
FirstLine : Boolean;
...........................................................
...........................................................
.............................................................
procedure TfmMain.btMakeCallFirstLineClick(Sender: TObject);
begin
FirstLine := True;
CtConectorX1.MakeCall(MyPhone, FirstPhone, 'Test программа');
end;
...............................................................................
................................................................................ ....
................................................................................
procedure TfmMain.ctConectorX1CSTADelivered(Sender: TObject; monitorCrossRefId,
connectionCallId: Integer; connectionDevice, alertingDevice, callingDevice,
calledDevice, lastRedirectionDevice: ShortString; localConnectionInfo, cause,
deliveredType: Integer; trunkGroup, trunkMember, split, userInfo: ShortString;
reason: Integer; distributingDevice, ucid: ShortString;
flexibleBilling: Boolean);
function LineResume : Byte;
begin
If FirstLine Then Result := 0
Else Result := 1;
end;
begin
If Assigned(ListRings[LineResume]) Then
Begin
Dispose(ListRings[LineResume]);
End;
New(ListRings[LineResume]);
ListRings[LineResume].CallId := connectionCallId;
ListRings[LineResume].CalledPhone := calledDevice;
ListRings[LineResume].CallingPhone := callingDevice;
end;
..............................................................
.............................................................
...........................................................
procedure TfmMain.btMakeCallSecondLineClick(Sender: TObject);
begin
FirstLine := False;
CtConectorX1.ConsultationCall(ListRings[0].CallId , ListRings[0].CallingPhone , SecondPhone, 'Тестовый вызов');
end;
...................................................................
..................................................................
...............................................................
procedure TfmMain.btClearMyCallClick(Sender: TObject);
begin
CtConectorX1.ClearCall(ListRings[0].CallId, ListRings[0].CallingPhone);
end;
procedure TfmMain.btClearSecondCallClick(Sender: TObject);
begin
CtConectorX1.ClearCall(ListRings[1].CallId, ListRings[1].CalledPhone);
CtConectorX1.AnswerCall(ListRings[0].CallId, ListRings[0].CallingPhone)
end;
Всё. Оговорюсь, при звонках на внешние номера - некоторые события могут наступить раньше или даже вместо события OnCSTADelivered. Но в любом случае - необходимые данные из этих событий можно получить.
-
Добрый день всем! Я в делфи не очень, но все же хочу уточнить: можно ли в ней написать программку, которая представляет из себя telnet сервер с открытым портом для клиентов. Установленное соединение «уходит» на другой порт (генерится автоматически). Таким образом, порт для приема соединений для клиентов всегда один и тот же (стандартный сервер обмена данными аля WEB). Клиенты это АТСки Avaya. На выходе должен быть log файл полученных данных от клиента (все что прилетает) с ЕЖЕДНЕВНОЙ ротацией. Очень нужна помощь в этом. Если кто знает примерно как можно это реализовать, пожалуйста подскажите. Заранее благодарю.
-
В Дельфи можно написать абсолютно все, как и на других - более популярных сейчас, языках... Все зависит от "прокладки" между сидением и монитором.
-
asafr, ну "прокладка" универсальная :). Вы можете дать какую-нибудь полезную информацию или ссылку чтобы осуществить задуманное? Я бы погуглил, однако связь инета у меня в деревне оставляет желать лучшего. Это еще не учитывая тариф 1мб = 2руб :(.
-
Я бы мог попытаться. Напишите более подробное ТЗ на мыло - я посмотрю и скажу смогу помочь в данном вопросе или нет. Просто из того, что написали Вы "(29.11.11 10:24) [22]" я понял только в общих чертах, вполне возможно, что и неправильно. Может попытаюсь сделать что-нибудь сам, а может найду ссылку.... :)
-
Привет Мастерам! На Делфи написан простенький телефонный справочник. Хочу сделать, чтобы из него можно было позвонить на номер выбранного индивидуума. Использую Delphi XE, ОС Win7 x64. Не могу разобраться с установкой ctConector. Помогите, пожалуйста.
-
HIC, подробней написать, как устанавливать связь по протоколу TSAPI с помощью ctConector, по-моему, уже невозможно. Остается либо книжку написать, либо за тебя все установить. см. asafr (07.12.10 16:37) [4] и сои посты ниже....
-
А без помощи ctConnector? У меня IP Office. А вы писали выше:
> Если кто пытается произвести коннект через ctConector к > IP Office - не тратьте время, это невозможно: ищите другие > пути.
Также вы писали:
> На сайте Avaya скачал WSDL - файлы, но с помощью их я "достучался" > только до самых простых операций (позвонить, ответить, положить > трубку и т.д.).
Вот описание последнего мне и нужно.
-
выслал на e-mail пример работы с Avaya на WSDL.
-
Здравствуйте! А есть возможность при переключении во время разговора на свободную линию программно выбрать музыку которую будет слушать абонент, которому сказали "подождите минуточку"?
-
Нет... Невозможно... Дело в том, что эта музыка "хранится" на самой АТС. То есть - существует некая плата, которая находится среди всего прочего "железа" АТС и хранит/воспроизводит эту музыку. Достучатся до неё невозможно.
-
а как же обзвонщики разных компаний запускают голосовые файлы? Неужели нет обходных путей. К примеру, звонят нам чтобы сообщить о задолженности за кабельное. Как только мы берем трубку тут же запускается голосовой файл. Физически человек в этом с той стороны не участвует. Неужели нельзя это осуществить?
-
а как же обзвонщики разных компаний запускают голосовые файлы? Неужели нет обходных путей. К примеру, звонят нам чтобы сообщить о задолженности за кабельное. Как только мы берем трубку тут же запускается голосовой файл. Физически человек в этом с той стороны не участвует. Неужели нельзя это осуществить?
-
И ещё я хотел спросить про группы перехватов. Не могу с ней разобраться. Есть группа, в ней к примеру 4 номера. всё настроено администратором. Моя программа ловит звонки. Т.е. к примеру, если я перехватил звонок другого нашего сотрудника, то моя программа просто получает событие коннект. А у того номера с которого был перехват дисконнект появляется только когда я положу трубку. Я знаю, что есть функция GroupPickupCall. Но мне никак не сообразить как с ней работать
-
И перенаправление звонка. необходимо вызвать функцию TransferCall, верно? Но предварительно получается необходимо фунцией HoldCall отправить активный звонок на удержание и функцией MakeCall вызвать абонента которому необходимо перенаправить звонок? У меня такая система не работает. Извините меня за мои глупости. Я просто совсем ещё новичок в этом во всем. Спасибо большое за помощь!!
-
Обзвонщики - это не музыка, которая играет при HOLD. Это другое. Это проигрывается звуковой файл... Вопрос должен был звучать: "Как программно передавать звуковой файл по телефону". Ответ: "Не знаю. Не занимался этим. Но уверен, что можно... Надо "копать" :)
-
Перенаправление звонка... Очень просто... Когда ты перехватываешь звонок другого абонента, скорее всего ты перехватываешь его CallID. Когда отбиваешь звонок - указываешь, что положил трубку с этим CallID/ У абонента прерывается звонок... Когда кладешь трубку надо указывать свой callID, а не перехваченный от абонента... Я на эти "грабли" натыкался уже.
-
Кстати.. Насчет обзвонщика. Не знаю, возможно это сделать по протоколу TSAPI ? Не рассматривал, но что-то подсказывает мне, что нет... Насколько я слышал, у AVATA есть продукт Contact Center Express (вроде бы), который может автообзванивать и рассылать СМС... Но это уже другая история...
-
> Кстати.. Насчет обзвонщика. Не знаю, возможно это сделать > по протоколу TSAPI ? Не рассматривал, но что-то подсказывает > мне, что нет...
- дык, обычный VoIP софт-фон, через DMCC XML SDK подключается терминал и через него гонится RTP... Управление - можно там-же, можно через TSAPI...
поиск документации - "cmapixml-sdk" (официальный на support.avaya.com требует логина)
|