Создайте программу на C++, которая обрабатывает входящие звонки на телефонную линию (стационарную).

В течение некоторого времени я обдумывал то, что мне кажется отличной идеей: я хочу написать, по сути, телефонный сервер на C++ для обработки всех моих входящих звонков на стационарные телефоны. У меня будет белый список (никогда больше не придется беспокоиться о телемаркетерах!), черный список, и я смогу получить доступ к своему телефону с помощью игровой гарнитуры, что позволит мне совершать/ответить на звонки, пока я игры или что-то еще. В будущем я также хотел бы подключить его к графическому интерфейсу и добавить всплывающие окна и другие интересные функции.

Проблема в том, что я понятия не имею, с чего начать. Я достаточно знаком с С++, но понятия не имею, как что-то делать с телефонной линией. Я могу подключить телефонную линию к своему компьютеру, но понятия не имею, как заставить мою программу использовать это соединение. Есть WinSock2 для использования моего Ethernet-соединения, есть ли что-то подобное, что я мог бы использовать для использования телефонной линии? Поскольку он использует тот же разъем Ethernet, интересно, можно ли вообще использовать WinSock2 для использования телефонной линии?

Я видел этот пост, который не был особенно полезен: ссылка stackoverflow , которая указывает на двухтональную многочастотную сигнализацию. Я наткнулся на этот сайт: ссылка, но на самом деле это не поможет мне начать работу.

Поэтому мне было интересно, есть ли какая-то библиотека, которая позволила бы мне подключиться к телефонной линии, подключенной к моему компьютеру? Есть ли где-нибудь стандарт относительно телефонных линий и что означают различные комбинации тонов? Может ли кто-нибудь здесь помочь мне начать? Я понимаю, что это довольно большое предприятие, поэтому любой толчок в правильном направлении будет принят с благодарностью. Спасибо.

[Обновление:] Я нашел этот вопрос, который является шагом в правильном направлении, но я пока не уверен, поможет ли мне это (мне нужно лечь спать, а утром посмотрю). Однако я видел упоминание об API Microsoft Telephony, завтра я попытаюсь провести больше исследований по этому вопросу.


person leetNightshade    schedule 26.05.2011    source источник
comment
Это будет сложно, потому что большинство модемов в настоящее время не поставляются с оборудованием для декодирования голоса; только с оборудованием передачи данных. Если у вас есть голосовой модем, продолжайте, но я думаю, что это маловероятно.   -  person Billy ONeal    schedule 26.05.2011
comment
Вы уверены, что телефонная линия [использует] тот же разъем Ethernet, что и ваше сетевое соединение? Я не знаю, где вы живете, но мои телефоны — RJ11, а Ethernet — RJ45. См. вики.   -  person Sedate Alien    schedule 26.05.2011
comment
@Sedate Alien Я просто говорю о порте на моем компьютере, я знаю, что это разные линии.   -  person leetNightshade    schedule 26.05.2011
comment
Что вы имеете в виду под портом? Физический домкрат (то есть отверстие) или что-то еще? Физические разъемы на (старых) ноутбуках в моем доме разные.   -  person Sedate Alien    schedule 26.05.2011
comment
@Sedate Alien Не на моем рабочем столе; Я использую материнскую плату Gigabyte EX58 UD5, и телефонная линия, и мой кабель Ethernet подключены к одному и тому же разъему (физический разъем, что угодно! Я говорю на клингонском или что-то в этом роде? ;P). Так что я думаю, что на других компьютерах я не могу ожидать того же, так что они определенно обрабатываются по-другому.   -  person leetNightshade    schedule 26.05.2011
comment
Я использовал внешний серийный номер старого зум-модема, но с поддержкой голоса; передает и получает необработанные данные - несколько кодеков, все зависит от конфигурации с помощью AT-команд. Полагаю, проще простого написать небольшой скрипт или использовать существующее программное обеспечение, такое как vgetty или mgetty, с модемом. См. также linuxtoys.org/answer/answering_machine.html.   -  person Andrew Siplas    schedule 01.09.2018


Ответы (2)


Если работа с продуктами MS не является абсолютной необходимостью, вы также можете рассмотреть возможность использования Asterisk. Это АТС с открытым исходным кодом (в программном обеспечении), которая позволяет разрабатывать на Linux, Windows (эмулируется) и Mac. В компании, где я работаю, мы используем его для реализации небольших обменов, около 100 строк или около того. Он также хорошо взаимодействует с VoIP и поддерживает целый ряд протоколов. Я разработал сценарии и программы на C++, которые работают с голосовыми пакетами в режиме реального времени, и до сих пор мой опыт был положительным. Что касается вашего заявленного варианта использования блокировки телемаркетеров и т. Д., Это было бы очень хорошо. Подробнее см. здесь.

person Sriram    schedule 26.05.2011

Проведя дополнительные исследования, убедившись, что одна ссылка ведет к другой ссылке, и придумав новые условия поиска, я наткнулся на этот сайт, который, похоже, мог выбить меня из колеи, используя Windows Telephony API на C++: ссылка. Эта ссылка включает образцы С++ с открытым исходным кодом, показывающие, как выполнять основы того, что задает этот вопрос, мне просто нужно проверить, действительно ли они все еще работают.

Это только начало моего исследования, поэтому я буду держать вас в курсе любых других находок. Если кто-то еще хорошо разбирается в этой области, пожалуйста, не стесняйтесь давать мне информацию о том, чего я хочу достичь.

person leetNightshade    schedule 26.05.2011