Отловить номер звонящего

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kif
Постоялец
Постоялец
 
Сообщения: 736
Зарегистрирован: 10.12.2001 (Пн) 18:06
Откуда: Украина, Одесса

Отловить номер звонящего

Сообщение kif » 29.12.2003 (Пн) 12:26

как отловить номер звонящего абонента

может кто знает ATI команды для этого или примерчик какой-нибудь?
Братья и сестры, что вы делаете???
Ведь вы же братья и сестры.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

TAPI

Сообщение hCORe » 29.12.2003 (Пн) 13:45

Microsoft Telephony API попробуй. Должно работать :wink:
Моду создают модоки, а распространяют модозвоны.

Faust
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 649
Зарегистрирован: 29.12.2003 (Пн) 13:38
Откуда: лаборатория

Re: Отловить номер звонящего

Сообщение Faust » 29.12.2003 (Пн) 13:56

Здесь http://archive.williamspublishing.com/cgi-bin/materials.cgi?isbn=5-8275-0021-6 есть материалы к книге "Использование Visual Basic 6. Специальное издание", среди которых - интересующий Вас CallID.
Листинги не горят!

nic0013
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 03.08.2008 (Вс) 15:48

Сообщение nic0013 » 03.08.2008 (Вс) 15:55

Есть у меня кодинг ...
Но я что-то не разобрался с параметром pEvent.
Кто разберется напишите plis ...!? :)

Код: Выделить всё
Public objCallNotificationEvent As ITCallNotificationEvent
Public gobjReceivedCallInfo As ITCallInfo
Public objCallControl As ITBasicCallControl
Public gobjTAPIRegToken As Long
Public gobjAddress As ITAddress
Public objCollAddresses As ITCollection
Public gobjTAPI As New TAPI
'Public WithEvents gobjTAPIWithEvents As TAPI
'Public CL As Class1
Const TAPI3_CALL_EVENTS = _
  TE_CALLMEDIA Or _
  TE_CALLNOTIFICATION Or _
  TE_CALLSTATE Or _
  TE_DIGITEVENT
 
Private Sub Form_Load()
  gobjTAPI.Initialize
  Set objCollAddresses = gobjTAPI.Addresses
  'For j = 1 To objCollAddresses.Count
    Set gobjAddress = objCollAddresses.Item(1)
    frm_Main.cmb_Address.AddItem gobjAddress.AddressName, cmb_Address.ListCount
   ' If gobjAddress.AddressName = GetSetting("HDAUDIO Soft Data Fax Modem with SmartCP", "Config", "Address") Then
   '   frm_Main.cmb_Address.ListIndex = j - 1
   ' End If
  'Next j
  gobjTAPI.EventFilter = TAPI3_CALL_EVENTS
  Set gobjTAPIWithEvents = gobjTAPI
  gobjTAPIRegToken = gobjTAPI.RegisterCallNotifications(gobjAddress, False, True, TAPIMEDIATYPE_AUDIO, 1)
'CL.gobjTAPIWithEvents = 0
End Sub

Private Sub Form_Unload(Cancel As Integer)
  objCallControl.Disconnect DC_NORMAL
  gobjTAPI.UnregisterNotifications gobjTAPIRegToken
  gobjTAPI.Shutdown
End Sub

Private Sub gobjTAPIWithEvents_Event(ByVal TapiEvent As TAPI3Lib.TAPI_EVENT, ByVal pEvent As Object)
  If TapiEvent = TE_CALLNOTIFICATION Then
    Set objCallNotificationEvent = pEvent
    Set gobjReceivedCallInfo = objCallNotificationEvent.Call
    Set objCallControl = gobjReceivedCallInfo
    tim_CID.Enabled = True
    objCallControl.Answer
  End If
  If TapiEvent = TE_CALLSTATE Then
    Set gobjReceivedCallInfo = objCallNotificationEvent.Call
    Set objCallControl = gobjReceivedCallInfo
    Debug.Print "CALL STATE: " & gobjReceivedCallInfo.CallState
    If gobjReceivedCallInfo.CallState = 3 Then
      On Error Resume Next
      objCallControl.Disconnect DC_NORMAL
      On Error GoTo 0
      Set gobjReceivedCallInfo = Nothing
      Set objCallControl = Nothing
      Set objCallNotificationEvent = Nothing
    End If
  End If
End Sub

Private Sub tim_CID_Timer()
  If lbl_CID.Caption > "" Then
    tim_CID.Enabled = False
    Exit Sub
  End If
  On Error Resume Next
  a$ = gobjReceivedCallInfo.CallInfoString(CIS_CALLERIDNAME)
  b$ = gobjReceivedCallInfo.CallInfoString(CIS_CALLERIDNUMBER)
  lbl_CID.Caption = a$ + vbCrLf + b$
  On Error GoTo 0
End Sub

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 03.08.2008 (Вс) 20:32

Нужно забить стрелку и разобраться по-мокрому? Без базара, только проблемы решаем конкретные, а не абстрактные.

PS: Код ни о чем не говорит.
Лучший способ понять что-то самому — объяснить это другому.

nic0013
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 03.08.2008 (Вс) 15:48

Сообщение nic0013 » 04.08.2008 (Пн) 6:19

Хорошо ...!
Конкретная проблема: откуда в процедуре gobjTAPIWithEvents_Event взять значение pEvent? Как перейти на эту процедуру из загрузки формы?

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 04.08.2008 (Пн) 12:58

nic0013

Взять книжку и сперва прочитать о том, что такое события, как работает этот механизм в приложениях, а уже потом искать исходники и пытаться в них что то понять.
I don't understand. Sorry.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 04.08.2008 (Пн) 14:14

Никак не перейти. Эта процедура — событие, и оно генерируется телефонным устройством.

У меня есть рабочий код, который мониторит входящие и исходящие звонки и определяет номера, но он работает с офисной АТС и далеко не факт, что будет так же работать с другим устройством. И выложить смогу только через неделю, если не забуду. А пока могу только дать руководство, следуя которому я написал тот код:
1. открывыем все линии на мониториг
2. отлавливаем входящий звонок (событие LINE_APPNEWCALL)
3. отлавливаем на этой линии изменение состояния (событие LINE_CALLSTATE)
4. если состояние звонка LINE_CALLSTATE_OFFERING, читаем запоминаем звонок как входящий
5. отлавливаем событие LINE_CALLINFO на открытых линиях
6. если в полученном событии звонок равен запомненому, и если статус LINECALLINFOSTATE_CALLEDID, тогда RedirectingID в структуре CALLINFO есть искомый номер
Лучший способ понять что-то самому — объяснить это другому.

nic0013
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 03.08.2008 (Вс) 15:48

Сообщение nic0013 » 05.08.2008 (Вт) 9:36

почему то по этому событию (звонит телефон!) оно у меня не исполняется, можно узнать почему?
линию выбрал правильно ... а вот телефонный номер не могу отловить ...
позвонить могу, а вот отловить номер не получается?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.08.2008 (Вт) 10:14

Код: Выделить всё
'Public WithEvents gobjTAPIWithEvents As TAPI
Потому что объявление объекта, ловящего события, какой-то умник закомментировал. Option Explicit — хорошая защита от таких ситуаций.
Лучший способ понять что-то самому — объяснить это другому.

nic0013
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 03.08.2008 (Вс) 15:48

Сообщение nic0013 » 05.08.2008 (Вт) 10:36

дык даже когда разкоментировал, и при звонке не ловиться телефон ...! :(

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.08.2008 (Вт) 11:13

А событие хоть срабатывает?
Лучший способ понять что-то самому — объяснить это другому.

nic0013
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 03.08.2008 (Вс) 15:48

Сообщение nic0013 » 05.08.2008 (Вт) 11:16

дык вот именно, что событие не срабатывает ...
у нас 3 линии ...
все 3 линии проверил событие не срабатывает ...
через dialer делаю звонки идут и можно посмотреть номер телефона ...
а нужно сделать через VB, но ничего что-то не выходит ...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.08.2008 (Вт) 11:18

С каким устройством работаешь? Как сопрягается с компом? Короче, опиши телефонию.

И попробуй добавить в
Код: Выделить всё
Const TAPI3_CALL_EVENTS = _
  TE_CALLMEDIA Or _
  TE_CALLNOTIFICATION Or _
  TE_CALLSTATE Or _
  TE_DIGITEVENT
остальные события.

Еще скачай эту прогу, нажми кнопку Trace и посмотри что она выдаст.
Лучший способ понять что-то самому — объяснить это другому.

nic0013
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 03.08.2008 (Вс) 15:48

Сообщение nic0013 » 05.08.2008 (Вт) 11:32

Ericsson BP250, подключенно com port ...

nic0013
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 03.08.2008 (Вс) 15:48

Сообщение nic0013 » 05.08.2008 (Вт) 12:07

и что то при добавлении событий не может сработать это событие gobjTAPIWithEvents_Event ... :(
а программка Trace - у нас просто своя есть ...
называется blTrace - там все нормально трассируется ...

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 05.08.2008 (Вт) 15:03

Тогда жди до субботы, раньше я рядом с этим кодом не появлюсь.
Лучший способ понять что-то самому — объяснить это другому.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 73

    TopList