Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Konst Junior member
Зарегистрирован: 21.08.2004 Сообщения: 5
|
Добавлено: Сб Авг 21, 2004 6:50 pm Заголовок сообщения: Как определить поднятие трубки? |
|
|
Если кто знает пожалуйста подскажите как определить что на той тороне подняли трубку и можно проигрывать звуковое сообщение |
|
Вернуться к началу |
|
|
Technical Support Expert
Зарегистрирован: 31.10.2002 Сообщения: 6330
|
Добавлено: Сб Авг 21, 2004 8:29 pm Заголовок сообщения: |
|
|
Вы не сообщили модель Вашего модема. Поэтому будем считать, что у Вас один из модемов серии IDC/VR+.
Теперь по существу вопроса:
Единственный абсолютно достоверный метод - получение информации об ответе абонента от телефонной станции (АТС). Для этого в России есть только один способ: заказать на АТС так называемую "таксофонную линию" (такие линии используют для подключения телефонов-автоматов). Особенность такой линии в том, что в момент ответа удалённого абонента АТС меняет полярность напряжения, подаваемого в линию (происходит "переполюсовка"). Именно благодаря этой переполюсовке телефон-автомат узнаёт, что ему нужно "проглотить" жетон. Переполюсовку можно обнаруживать простенькой схемкой или, например, датчиком снятия трубки параллельного телефона, который есть в модемах IDC/VR+.
Любые другие методы определения момента ответа вызываемого абонента не являются абсолютно надёжными. Их можно разделить на три категории:
1. С помощью оператора (человека). Этим пользуются многие телефоны-автоматы: там предусматривается кнопка "Ответ абонента". Пока не нажмёшь, не сможешь разговаривать. В случае модема и программы такую кнопку можно предусмотреть в программе. Естественно, надёжность метода равна надёжности оператора
2. Средствами модема. Модем умеет определять момент ответа по сигналам КПВ (Контроль Посылки Вызова, обычно называемые "длинными гудками"). Если обнаружен один или несколько сигналов КПВ, и затем они пропадают - считаем, что удалённый абонент снял трубку. Эта функция реализована не во всех
модемах и мало в каких модемах работает, но IDC/VR+ такую функцию имеет и её использование даёт относительно неплохие результаты.
Вы можете более подробно прочитать об этом в документе 1131.PDF (посмотрите на www.inpro.com.ua), команды называются #VRN и #VRA.
3. Средствами программы. По окончанию набора номера модем переводится в голосовой режим. Производится анализ принимаемых сигналов на наличие в них КПВ, а также спектра, характерного для человеческого голоса. Таким методом пользуется, например, программа IDC Ventafax. Метод довольно надёжный (по сравнению с описанным в п. 2), но довольно сложен в реализации и отладке. _________________ Inpro
Technical Support |
|
Вернуться к началу |
|
|
Konst Junior member
Зарегистрирован: 21.08.2004 Сообщения: 5
|
Добавлено: Ср Авг 25, 2004 6:28 pm Заголовок сообщения: Определение поднятия трубки |
|
|
> Вы не сообщили модель Вашего модема. Поэтому будем считать, что > у Вас один из модемов серии IDC/VR+.
IDC-5614BXL/VR
> Вы можете более подробно прочитать об этом в документе 1131.PDF > (посмотрите на www.inpro.com.ua), команды называются #VRN и
> #VRA.
Спасибо, Вы дали мне направление куда копать. Однако ранее не сталкивавшись с программированием модемов, я наступил на те грабли что не могу понять какую команду мне использовать (или какой регистр читать) чтобы определить некий результат работы команд #VRN и #VRA ? В документации написано что по истечении периодов определяемых этими командами (цитата: If ringback is not
detected within this period, the modem assumes that the remote has picked up the line and switches to Online Voice
Command Mode). Но когда я набираю номер и еще не беру трубку я уже нахожусь в этом режиме (#cls дает то есть переключения что, не получается? Или как его отловить? Да и его ли ловить вообще?
Надеюсь на вашу дальнейшую помощь поскольку похоже более нигде ее найти не могу. |
|
Вернуться к началу |
|
|
Technical Support Expert
Зарегистрирован: 31.10.2002 Сообщения: 6330
|
Добавлено: Ср Авг 25, 2004 6:49 pm Заголовок сообщения: |
|
|
Цитата: |
Однако ранее не сталкивавшись с программированием модемов, я наступил на те грабли что не могу понять какую команду мне использовать (или какой регистр читать) чтобы определить некий результат работы команд #VRN и #VRA ?
|
Судя по сказанному, Вы предпочли 2-й путь из нашего списка. Заметим, что это - наименее надёжный вариант. По сути вопроса: команды #VRN и #VRA не выдают результатов, они задают параметры работы алгоритма обнаружения ответа удалённого абонента. Происходит это следующим образом:
at#cls=8
OK
(модем в голосовом режиме, параметры #VRN и #VRA установлены в "заводские" значения. При необходимости их можно подстроить командой at#vrn=x #vra=y).
at dp номер
(Вы попросили модем набрать номер)
После того, как модем наберёт номер и будет обнаружен ответ удалённого абонента, модем выдаст сообщение VCON. Теперь можно выдавать at#vtx и проигрывать голосовое сообщение.
А теперь о главном. Судя по характеру задаваемых вопросов, Вам ещё долго придётся разбираться с программированием голосовых функций модема. В такой ситуации стоит подумать о использовании готовых программ (той же Ventafax, там есть запуск программы из командной строки с параметрами) или готовых библиотек (посмотрите на www.phonecalllogger.com и www.softcab.com).
Если Вы всё-таки решите программировать всё с нуля самостоятельно, поглядите для начала на протокол работы других программ. Той же IDC Ventafax, например - найдёте ответы на большинство вопросов. _________________ Inpro
Technical Support |
|
Вернуться к началу |
|
|
Konst Junior member
Зарегистрирован: 21.08.2004 Сообщения: 5
|
Добавлено: Чт Авг 26, 2004 11:33 am Заголовок сообщения: Определение поднятия трубки |
|
|
> Судя по сказанному, Вы предпочли 2-й путь из нашего списка.
> Заметим, что это - наименее надёжный вариант
Согласен но по тестам он выглядит не плохо
> Судя по характеру задаваемых вопросов, Вам ещё долго придётся
> разбираться с программированием голосовых функций модема
Надеюсь не так уж долго. дело было в том что я использовал TAPI компонент для дозвона и передачи голоса а он дает ограниченный доступ функциям модема. Такие вещи конечно надо делать работая с модемом непосредственно.
В любом случае спасибо за помощь |
|
Вернуться к началу |
|
|
Technical Support Expert
Зарегистрирован: 31.10.2002 Сообщения: 6330
|
Добавлено: Чт Авг 26, 2004 2:17 pm Заголовок сообщения: |
|
|
>> Заметим, что это - наименее надёжный вариант
> Согласен но по тестам он выглядит не плохо
Алгоритм даёт неплохие результаты при соблюдении таких условий:
1. Трубку снимают после второго звонка, и не раньше или
2. Коммутация звонка (т.е. задержка между набором последней цифры номера и подачей "звонка" на телефон вызываемого абонента) происходит достаточно быстро.
К сожалению, эти условия редко соблюдаются в реальной обстановке. Поэтому, когда Вы приступите к коммерческой эксплуатации Вашей программы, выяснится, что программа начинает говорить либо слишком рано (если коммутация происходит долго, на линии тишина и срабатывает #VRN), либо слишком поздно (т.е. клиент снял трубку, там была тишина и он её бросил раньше, чем программа начала проигрывание сообщения).
> Такие вещи конечно надо делать работая с модемом непосредственно.
Безусловно. Обычно TAPI используется только на начальном этапе взаимодействия с модемом, чтобы не "держать" порт и дать другим приложениям возможность обращаться к модему. Затем работа идёт непосредственно с модемом, либо через TAPI pass-through mode, либо напрямую через последовательный порт. _________________ Inpro
Technical Support |
|
Вернуться к началу |
|
|
RoBinZon Junior member
Зарегистрирован: 05.05.2006 Сообщения: 1 Откуда: Россия Мичуринск
|
Добавлено: Пт Май 05, 2006 3:27 pm Заголовок сообщения: Я занимаюсь этой же темой... |
|
|
У меня появлялось много идей на протяжении всего времени разработки...Уже есть исходник на Visual Basic 6, только вот осталось сделать распознавание ответа абонента...Сейчас скачал один компонентик с сайта www.SoftCAB.com, называется он VTapi, весит тоже не так много.... Сейчас пойду попробую. Если будут какие-то наработки пишите...Меня эта тема сейчас конкретно интересует, просто уже довольно срочно нужно.
Буду рад ответить на возникающие вопросы, с ув. RoBinZon[/b] _________________ Если не знаешь что делать, делай что нибудь...
И кстати невозможно сложить лист пополам больше 7 раз... 7 закон Мерфи |
|
Вернуться к началу |
|
|
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
Powered by phpBB © 2001, 2005 phpBB Group
|