Тема: Проблема с Ipldk300 и Tapi
Добрый день!
Недавно активировал на своей станции TAPI.
До сегодняшнего дня тестили, писали софт, экспериментировали. Все работало без проблем.
Сегодня запустили так сказать в эксплуатацию.
Сразу полезли глюки.
При активной работе через TAPI более 10 пользователей, TAPI перестает возвращать события через процедуру LineCallBackProc (Используется режим HiddenWindow). Причем это происходит не сразу, а постепенно.
Т.е. для начала события начинают возвращаться с задержкой, потом через раз, потом вообще не возвращается. События могут возвращаться через 10 минут после возникновения.
При этом функция LineMakeCall нормально работает, вызов идет.
ezphone ведет себя также. Тоже перестает показывать состояние линий и состояние разговора.
Забавно наблюдать в ezphone, что состояние твоего телефона - “занят”, когда разговор закончился более 10 минут назад.
Сервер телефонии практически не загружен.
Перезапуск сервиса телефонии на сервере телефонии помогает, но не надолго.
Помогите разобраться в чем грабли и кто виноват.
Станция LDK300 прошивка 3.5Bk
TSP драйвер С.1СС
Сервер телефонии под Win2003.
А device specific events падают в call back процедуру, когда стандартные перестают? Если есть какой-нибудь api трейсер (типа SoftSnoop by yoda) рекомендую запостить здесь логи с коментариями. В вашем софте нужно смотреть есть ли вообще вызовы вашей call back процедуры и с какими параметрами. Так же стоит поснифить трафик между серваком и pbx - может с сеткой что-то.. Драйвер можно другой попробовать..
омогите разобраться в чем грабли и кто виноват.
Попробую, но инфы мало. Исходники все не прошу, но покажите как вызываете lineInitializeEx хотя бы..
Фрагменты кода на VB 6
Объявление переменных и инициализация:
Private m_hLineApp As Long ‘handle to TAPI
Private m_APIversions() As Long
‘Private m_ExtAPIversions() As LINEEXTENSIONID
Private m_LowAPI As Long ‘default TAPI 1.3 (&H00010003;)
Private m_HiAPI As Long ‘default TAPI 3.0 (&H00030000;)
‘line selection variables
Private m_numLines As Long
...
Public Function InitializeTAPI() As Boolean
Dim rc As Long
Dim n As Long
Dim Lip As LINEINITIALIZEEXPARAMS
Dim lxid As LINEEXTENSIONID
Lip.dwTotalSize = Len(Lip)
Lip.dwOptions = LINEINITIALIZEEXOPTION_USEHIDDENWINDOW
m_LowAPI = &H20001; m_HiAPI = &H20001; rc = lineInitializeEx(m_hLineApp, App.hInstance, AddressOf LineCallbackProc, App.Title, m_numLines, m_HiAPI, Lip)
If rc = 0 Then
InitializeTAPI = True
Else
InitializeTAPI = False
Exit Function
End If
‘MsgBox (rc)
ReDim m_APIversions(0 To m_numLines - 1)
End Function
Объявление LineCallBackProc:
Public Sub LineCallbackProc(ByVal hDevice As Long, _
ByVal dwMsg As Long, _
ByVal dwCallbackInstance As Long, _
ByVal dwParam1 As Long, _
ByVal dwParam2 As Long, _
ByVal dwParam3 As Long)
> А device specific events падают в call back процедуру, когда стандартные перестают?
Такой закономерности не выявлено. Перестают возвращаться любые события
Поменяли TSP драйвер.
Сейчас стоит версия 3.1Bn
Проблему это не решило.
С softsnoop не получается отловить вызовы.
Дело в том, что tapi-вызовы находятся в OCX-компоненте, написанном на VB. Этот компонент встроен в обработку в конфигурации 1С-Предприятие 8.0. Когда пытаюсь открыть softsnoop’ом 1cv8.exe - исполняемый файл 1С 8.0 - она не загружается до конца
Поднял свои исходники - я по какой-то причине предпочел event handle замест hidden window. Подробности уже не вспомню сейчас. Реализация маленько так сложнее, поэтому думаю выбор был неспроста (склероз блин! ;o)
Думается вот что: Ежели ezPhone тоже здесь спотыкается надо смотреть сетку. См. пакеты (udp:5001, udp:5029). Не стоит забывать про трейс самой станции. (должны отображатся события CTI)
Ещё один вопросик: 10 клиентов - некое пороговое значение когда начинает глючить? Можно ли уточнить? У меня в работе к примеру есть плагин к Miranda IM, написанный вообще на tapi 3.0 и completion port соответственно - вроде юзера не жалуются, звонки идут. (не считая того что tsp сваливается иногда)
А как смотреть такой трейс станции?
Какой трейс надо включать? Board, Device?
Имхо, достаточно 3-й свич переключить. Если не поможет то дать команду t b NoOfMPB_slot. Должно быть что-то вроде этого:
=======
CTI_AckRspToSpi(STN:NULL, RSP:50) - src\ctmain.c, #485
003160 CT->CMD: 00 FF FF 50 36 23
CTI_SndMsgToSpi(STN:NULL, MSG:CTIMSG_CALLPARK_INFO, 1h) - src\ctif.c, #369
003160 CT->CMD: 01 FF FF 41 20 36 30 31 45 4D 50
CTI_SndMsgToSpi(STN:NULL, MSG:CTIMSG_CALLPARK_INFO, 2h) - src\ctif.c, #369
003160 CT->CMD: 02 FF FF 41 20 36 30 32 45 4D 50
CTI_SndMsgToSpi(STN:NULL, MSG:CTIMSG_CALLPARK_INFO, 3h) - src\ctif.c, #369
003160 CT->CMD: 03 FF FF 41 20 36 30 33 45 4D 50
CTI_SndMsgToSpi(STN:NULL, MSG:CTIMSG_CALLPARK_INFO, 4h) - src\ctif.c, #369
003160 CT->CMD: 04 FF FF 41 20 36 30 34 45 4D 50
...
=======
Этот свич на ходу можно переключить? Или лучше на выключенной станции?
NoOfMPB_slot - это 00?
Даю t b 00 - в ответ
Range is invalid(slot: 01 - 27, 28: cpt, 29: dtmf)
Номер слота MPB
MPB стоит в своем слоте, там где ей и полагается стоять. В первом ящике. Какой у него номер? Я не знаю.
Команда bs 00 дает такой результат
Print SLOT : 0 Config
SLOT : 0
Board Type : MPB
Version: LGE/GS30P-3.5Bk NOV/05
—MPB Resource————-
1) External Page Port ( 1)
2) External MOH ( 1)
3) DTMF RCVR ( 4)
—System Resource———
1) Max DTMF RCVR (20)
2) Max CPTU ( 0)
Вот я и подумал что номер MPB 00
Просто вкл. свича и соотв. настройка вывода трейса на COM/Telnet не помогает? Попробуйте трейсить внешний интерфейс например. (lcob, prib, ну slib наконец). У вас станция есть под рукой? Пробуйте!
свич переключил.
Трейс в лог не идет.
t b 01
Включил трейс по первой плате системников.
Насыпало в лог кучу непонятной информации, но о CTI там не слова.
Как всетаки включить трейс по MPB?
mon> t ceht sxxx
At the sxxx, xxx should be physical station number. (i.e. port number of station)
Command options :
c : device command tracing. (MP PP)
e : event tracing. (PP, Internal, Timer Event)
h : highway tracing.
t : CTI device command / event tracing.
(Multi-options can be used; ceh, c, eh, chi .etc.)
Example
If you want to trace the Station 102, you should enter the physical station number as following;
mon>t ceh s003
Even if the station number was changed from 102 to 702, the physical station number is not changed;
mon>t ceh s003
Так же хорошая практика перед трейсом почистить конфиг: mon>t d
А откуда этот текст? Вырезка какойто документации? Можно ее както получить?
Если не сложно - почтой на olegm=i.com.ua
Такого вида трейс по CTI, как Вы указывали раньше, у меня получить не удалось.
А этот device trace - это тоже самое что я делал по плате системников, только информация валится не по всем портам, а по одному, который укажешь вместо ххх