Конференция "Сети" » Управление Avaya АТС
 
  • UmkaSServera (01.11.11 09:58) [20]
    Спасибо большое!)
  • asafr (29.11.11 00:02) [21]
    Решил я написать здесь ответ на одно письмо, которое пришло мне по 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;
    {
    После вызова абонента FirstPhone - этот абонент может брать или не брать трубку. Проследите за реакцией ctConector сами.
    }

    ...............................................................................
    ................................................................................ ....
    ................................................................................
    //После вызова абонента, во время "длинных гудков", обрабатывается событие
    //OnctConector-а - CSTADelivered (Оно чень важное. Из него черпаем необходимую информацию)

    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;

    {
    После перевода звонка - так же происходит событие OnCSTADelivered.. Булева переменная FirstLine = False
    }

    ...................................................................
    ..................................................................
    ...............................................................
    //Ну.. и завершающий аккорды:
    procedure TfmMain.btClearMyCallClick(Sender: TObject);
    begin
    //Отбиваем звонок с первым абонентом и болтаем с номером SecondPhone
     CtConectorX1.ClearCall(ListRings[0].CallId, ListRings[0].CallingPhone);  
    end;

    //ИЛИ

    procedure TfmMain.btClearSecondCallClick(Sender: TObject);
    begin
    //Отбиваю абонента (или длинные гудки), на которого перевел звонок (SecondPhone)
     CtConectorX1.ClearCall(ListRings[1].CallId, ListRings[1].CalledPhone);

    //...и возвращаюсь к первому абоненту (FirstPhone). Продолжаю с ним разговор
     CtConectorX1.AnswerCall(ListRings[0].CallId, ListRings[0].CallingPhone)
    end;




    Всё. Оговорюсь, при звонках на внешние номера - некоторые события могут наступить раньше или даже вместо события OnCSTADelivered. Но в любом случае - необходимые данные из этих событий можно получить.
  • Segi (29.11.11 10:24) [22]
    Добрый день всем!
    Я в делфи не очень, но все же хочу уточнить: можно ли в ней написать программку, которая представляет из себя telnet сервер с открытым портом для клиентов. Установленное соединение «уходит» на другой порт (генерится автоматически). Таким образом, порт для приема соединений для клиентов всегда один и тот же (стандартный сервер обмена данными аля  WEB). Клиенты это АТСки Avaya.
    На выходе должен быть log файл полученных данных от клиента (все что прилетает) с ЕЖЕДНЕВНОЙ ротацией.
    Очень нужна помощь в этом. Если кто знает примерно как можно это реализовать, пожалуйста подскажите.
    Заранее благодарю.
  • asafr (29.11.11 11:29) [23]
    В Дельфи можно написать абсолютно все, как и на других - более популярных сейчас, языках... Все зависит от "прокладки" между сидением и монитором.
  • Segi (29.11.11 11:41) [24]
    asafr, ну "прокладка" универсальная :). Вы можете дать какую-нибудь полезную информацию или ссылку чтобы осуществить задуманное?
    Я бы погуглил, однако связь инета у меня в деревне оставляет желать лучшего. Это еще не учитывая тариф 1мб = 2руб :(.
  • asafr (29.11.11 16:14) [25]
    Я бы мог попытаться. Напишите более подробное ТЗ на мыло -  я посмотрю и скажу смогу помочь в данном вопросе или нет. Просто из того, что написали Вы  "(29.11.11 10:24) [22]"  я понял только в общих чертах, вполне возможно, что и неправильно.
    Может попытаюсь сделать что-нибудь сам, а может найду ссылку.... :)
  • HIC (03.12.11 04:04) [26]
    Привет Мастерам!
    На Делфи написан простенький телефонный справочник. Хочу сделать, чтобы из него можно было позвонить на номер выбранного индивидуума.
    Использую Delphi XE, ОС Win7 x64. Не могу разобраться с установкой ctConector. Помогите, пожалуйста.
  • asafr © (09.12.11 15:20) [27]
    HIC, подробней написать, как устанавливать связь по протоколу TSAPI с помощью ctConector, по-моему, уже невозможно.
    Остается либо книжку написать, либо за тебя все установить.
    см. asafr   (07.12.10 16:37) [4]  и сои посты ниже....
  • HIC (12.12.11 11:03) [28]
    А без помощи ctConnector? У меня IP Office.
    А вы писали выше:

    > Если кто пытается произвести коннект через ctConector к
    > IP Office - не тратьте время, это невозможно: ищите другие
    > пути.

    Также вы писали:

    > На сайте Avaya скачал WSDL - файлы, но с помощью их я "достучался"
    > только до самых простых операций (позвонить, ответить, положить
    > трубку и т.д.).

    Вот описание последнего мне и нужно.
  • asafr © (12.12.11 15:25) [29]
    выслал на e-mail пример работы с Avaya на WSDL.
  • Ведьмак (19.12.11 11:36) [30]
    Здравствуйте!
    А есть возможность при переключении во время разговора на свободную линию программно выбрать музыку которую будет слушать абонент, которому сказали "подождите минуточку"?
  • asafr © (19.12.11 15:03) [31]
    Нет... Невозможно...
    Дело в том, что эта музыка "хранится" на самой АТС.
    То есть - существует некая плата, которая находится среди всего прочего "железа" АТС  и хранит/воспроизводит эту музыку. Достучатся до неё невозможно.
  • Ведьмак (20.12.11 05:26) [32]
    а как же обзвонщики разных компаний запускают голосовые файлы? Неужели нет обходных путей.
    К примеру, звонят нам чтобы сообщить о задолженности за кабельное. Как только мы берем трубку тут же запускается голосовой файл. Физически человек в этом с той стороны не участвует. Неужели нельзя это осуществить?
  • Ведьмак... (20.12.11 05:27) [33]
    а как же обзвонщики разных компаний запускают голосовые файлы? Неужели нет обходных путей.
    К примеру, звонят нам чтобы сообщить о задолженности за кабельное. Как только мы берем трубку тут же запускается голосовой файл. Физически человек в этом с той стороны не участвует. Неужели нельзя это осуществить?
  • Ведьмак (20.12.11 05:35) [34]
    И ещё я хотел спросить про группы перехватов.
    Не могу с ней разобраться.
    Есть группа, в ней к примеру 4 номера. всё настроено администратором. Моя программа ловит звонки. Т.е. к примеру, если я перехватил звонок другого нашего сотрудника, то моя программа просто получает событие коннект. А у того номера с которого был перехват дисконнект появляется только когда я положу трубку. Я знаю, что есть функция GroupPickupCall. Но мне никак не сообразить как с ней работать
  • Ведьмак (20.12.11 05:40) [35]
    И перенаправление звонка. необходимо вызвать функцию TransferCall, верно? Но предварительно получается необходимо фунцией  HoldCall отправить активный звонок на удержание и функцией  MakeCall вызвать абонента которому необходимо перенаправить звонок? У меня такая система не работает.
    Извините меня за мои глупости. Я просто совсем ещё новичок в этом во всем.
    Спасибо большое за помощь!!
  • asafr © (20.12.11 11:01) [36]
    Обзвонщики - это не музыка, которая играет при HOLD. Это другое. Это проигрывается звуковой файл...
    Вопрос должен был звучать: "Как программно передавать звуковой файл по телефону".
    Ответ: "Не знаю. Не занимался этим. Но уверен, что можно... Надо "копать"  :)
  • asafr © (20.12.11 11:08) [37]
    Перенаправление звонка... Очень просто... Когда ты перехватываешь звонок другого абонента, скорее всего ты перехватываешь его CallID. Когда отбиваешь звонок - указываешь, что положил трубку с этим CallID/ У абонента прерывается звонок...
    Когда кладешь трубку надо указывать свой callID, а не перехваченный от абонента...
    Я на эти "грабли" натыкался уже.
  • asafr © (20.12.11 11:22) [38]
    Кстати.. Насчет обзвонщика. Не знаю, возможно это сделать по протоколу TSAPI ? Не рассматривал, но что-то подсказывает мне, что нет...
    Насколько я слышал, у AVATA есть продукт Contact Center Express (вроде бы), который может автообзванивать и рассылать СМС... Но это уже другая история...
  • han_malign (20.12.11 18:06) [39]

    > Кстати.. Насчет обзвонщика. Не знаю, возможно это сделать
    > по протоколу TSAPI ? Не рассматривал, но что-то подсказывает
    > мне, что нет...

    - дык, обычный VoIP софт-фон, через DMCC XML SDK подключается терминал и через него гонится RTP... Управление - можно там-же, можно через TSAPI...

    поиск документации - "cmapixml-sdk" (официальный на support.avaya.com требует логина)
 
Конференция "Сети" » Управление Avaya АТС
Есть новые Нет новых   [118488   +59][b:0][p:0.005]