Введение
 

Personal Internet Phone Equipment (PIPE) - это приложение, предназначенное для голосового общения в режиме реального времени при помощи двух компьютеров и IP сети. Т.е. эта программа позволит Вам разговаривать со своими друзьями, коллегами или родственниками через Интернет либо локальную сеть.

Создание PIPE преследовало две цели, которые были успешно достигнуты:

  • Проведение бесплатных междугородних и международных переговоров через компьютеры, подключенные к Интернету. При этом важно подчеркнуть, что речь идет о звонках НЕ на обычный телефон, а на другой компьютер, с запущеной программой PIPE.
  • Для использования в качестве офисного телефона в компаниях, имеющих локальную IP сеть.

В настоящее время в области интернет-телефонии существует несколько десятков программных продуктов, обладающих своими достоинствами и недостатками. Отметим несколько особенностей, отличающих PIPE от его аналогов:

  1. PIPE обеспечивает надежную и качественную передачу голоса по сети.
  2. PIPE позволяет устанавливать соединение через прокси сервера, поддерживающие Socks протоколы.
  3. PIPE содержит в себе настраиваемый механизм сканирования свободных UDP портов, через которые могут передаваться голосовые пакеты.
  4. Программа очень нетребовательна к системным ресурсам.
  5. По виду она напоминает сотовый телефон.

PIPE успешно работает на подавляющем большинстве компьютеров с операционной системой Windows 98/NT или старше. Искренне надеюсь, что мой телефончик Вам понравится.

Лицензионное соглашение
 

PIPE является программным продуктом с shareware лицензией. Если Вы пользуетесь программой в коммерческих или бизнес целях, пожалуйста, купите лицензию и зарегистрируйтесь. Нелицензионная копия программы имеет 3-х минутное ограничение на разговор, которое может быть разблокировано введением регистрационного кода.

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

Отсутствие гарантий. К сожалению невозможно гарантировать надежную работу программы на любом компьютере с заявленной ниже конфигурацией. Программный продукт и сопроводительная документация поставляется "как есть", включая возможные ошибки и недостатки.

Системные требования
 

Программа должна быть установлена на персональном компьютере, отвечающем нижеперечисленным минимальным требованиям.

Аппаратная платформа:

  • Пентиум, 75 МГц с мин. количеством оперативной памяти 8 Мб.
  • Кабельное или модемное подключение к IP сети.
  • Звуковая карта, желательно полнодуплексная.
  • Гарнитура или микрофон с наушниками/колонками.

Операционная система:

  • Windows 98/Me или Windows NT/2K/XP.
  • Установленный драйвер для звуковой карты.

Как видно, требования к системе очень скромные. Наиболее критичным ресурсом является качество связи в IP сети, поскольку при низкоскоростном подключении наблюдается массовое "выпадание" фрагментов передаваемой речи. Удовлетворительное качество связи наблюдается уже при скорости 19,2 Кбит в секунду при равномерной (!) отправке речевых пакетов.

Другое ограничение касается установления голосовой связи через Интернет - оба компьютера должны иметь реальный, с точки зрения Интернета, IP адрес (он всегда показывается в заголовке телефона). Это касается главным образом пользователей, подключенных к Интернету через локальную сеть - IP адрес не должен быть локальным. В противном случае нужно попросить администратора сети сделать следующее:

  • Назначить Вашему компьютеру определенный TCP и UDP порты.
  • Настроить прокси-сервер, через который осуществляется выход в Интернет так, чтобы он перенаправлял все входящие TCP и UDP пакеты, которые приходят на эти порты, на Ваш компьютер.
  • Внести назначенные порты в настройки программы.

Если прямое соединение между компьютерами блокируется фаерволом/прокси сервером, но компьютер имеет реальный IP адрес, существует возможность сделать исходящий звонок. Для этого должны быть выполнены следующие требования:

  • Прокси сервер должен поддерживать протокол Socks-4 или Socks-5.
  • IP адрес, порт прокси сервера и прочая информация для подключения должна быть известна.
  • Нужно знать или как минимум предполагать номера портов, открытых для приема и передачи UDP пакетов. Например, очень часто 4000-й порт, используемый ICQ, является открытым.

Следует упомянуть о такой особенности компьютерной телефонии как задержка (до 5-7 секунд при плохом качестве канала) между вопросом и ответом с другого конца "телефонной линии". Она обусловлена неизбежной потерей времени при захвате очередной порции звука, компрессии, передачи сжатых голосовых пакетов через n-ное количество хостов, декомпрессии и восстановлении непрерывного звучания. Каждый такой этап вносит свой вклад в общую задержку.

Как пользоваться программой
 
Программа PIPE проста в использовании, и в этой главе подробно описано, как с ней работать. Легко увидеть, что пользовательский интерфейс состоит из следующих элементов: строки с IP адресом компьютера, на котором запущена программа, дисплейчика и кнопок.
Дисплей телефона предназначен для показа следующей информации: служебных меню, контекстной подсказки и всевозможных сообщений. Он также используется для ввода и редактирования текстовой информации, например IP адресов, портов, имен и т.д.
Кнопки телефона делятся на две категории по их функциональному назначению: это переключатели режимов и кнопки управления. Первый тип предназначен для переключения между разными режимами работы программы: телефонным звонком, редактированием адресной книги, системными операциями и информационной поддержкой. Назначение каждой из управляющих кнопок находится в контекстной зависимости от того, какой режим выбран.

Телефонные кнопки

Вид Название Описание Горячая клавиша
Звонок Переключиться в режим звонка "Alt-C"
Редактор Редактирование записей в адресной книге "Alt-E"
Операции Системные операции, настройка телефона "Alt-S"
Справка Получение справочной информации о программе и регистрация "Alt-I"
Стрелка вверх Скроллинг для выбора пунктов меню. Изменение уровня громкости во время разговора. Стрелки на клавиатуре или колесо мыши
Стрелка вниз
Подтверждение Зависимая от режима кнопка подтверждения действия "Enter" или двойной щелчек левой кнопки мыши в меню
Отмена Зависимая от режима кнопка отмены или удаления "Esc" или "-"
Дополнение Зависимая от режима дополнительная кнопка "Alt-Space" или "+"

Запуск приложения

Для запуска приложения достаточно просто щелкнуть мышкой на исполняемом файле Phone.exe. Если необходимо, чтобы при старте не показывалось окно телефона (например, при добавлении в автостарт), следует запустить программу с параметром m, т.е. так: Phone.exe m .

Существует черыре основных режима работы программы, между которыми пользователь может переключаться при помощи кнопок. Рассмотрим подробно каждый из них.

Режим звонка

Данный режим предназначен для совершения звонков через IP сети. Чтобы в него переключиться, достаточно нажать кнопку Звонок. Чтобы позвонить, следует выполнить следующие действия:

  1. С помощью стрелок выбрать из адресной книги нужного абонента. Если необходимая запись в книге отсутствует, можно указать IP адрес и порт непосредственно в адресной строке телефона. Воспользуйтесь кн. Дополнение для переключения между вводом адреса и порта.
  2. Нажать на кнопку Подтверждение.
  3. Начнется процесс соединения с удаленным компьютером, информация об этапах которого будет отображаться на дисплее.
  4. Если эта процедура прошла успешно, пользователь слышит длинные гудки в наушниках/колонках.
  5. В противном случае, если PIPE не смог создать голосовое соединение, на дисплее телефона появится сообщение об ошибке.
  6. Если на другом конце линии абонент "поднял трубку" длинные гудки прекращаются, и Вы можете говорить.
  7. Уровень звука в наушниках можно настроить при помощи кнопок со стрелками.
  8. Чтобы завершить разговор воспользуйтесь кнопкой Отмена.
  9. Если нужно перезвонить абоненту (например Вы забыли что-то сказать) нажмите кн. Подтверждение.

Звонок на IP адрес "127.0.0.1" позволяет пользователю позвонить самому себе для проверки нормальной работы программы и оборудования. Рекомендуется при первом запуске программы выполнить такую самопроверку.

О входящем звонке пользователь будет уведомлен звуковым сигналом "телефонный звонок" и сообщением на дисплее. В этом случае пользователю нужно:

  1. Переключиться в режим звонка кнопкой Звонок
  2. Да дисплее будет отображен IP адрес или имя звонящего.
  3. Нажать кнопку Подтверждение, чтобы принять звонок и "снять трубку", или же кнопку Отмена чтобы отклонить звонок.

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

Редактирование адресной книги

Меню редактирования позволяет вносить изменения в адресную книгу, т.е. создавать новые записи и модифицировать, сортировать и удалять старые. Чтобы выбрать необходимую операцию следует:

  1. Нажать на кнопку Редактор.
  2. Стрелками выбрать желаемое действие.
  3. Активировать выбор при помощи кнопки Подтверждение.

Чтобы создать новую запись следует:

  1. Выбрать пункт меню "Создать запись".
  2. Ввести имя абонента и нажать на кнопку Подтверждение.
  3. Ввести цифры IP адреса или имя компьютера (опознаваемое службой DNS при звонках через Интернет), затем нажать на кнопку Подтверждение.
  4. Если необходимо, указать номер порта, который будет использован при исходящих звонках для данного абонента (по умолчанию 2075), и снова нажать на кнопку Подтверждение.
  5. Стрелками указать позицию, куда следует поместить новую запись, и опять нажать на кнопку Подтверждение. Если же запись следует добавить в конец списка абонентов, то нужно нажать на кн. Дополнение.

Для изменения существующей записи нужно:

  1. Выбрать пункт меню "Изменить".
  2. Стрелками выбрать запись, подлежащую изменению, и нажать на кнопку Подтверждение.
  3. Изменить имя абонента (если это необходимо) и снова нажать на кн. Подтверждение.
  4. Отредактировать IP адрес или имя компьютера затем нажать на кн. Подтверждение.
  5. Сменить номер порта, после чего подтвердить действие кнопкой Подтверждение.

Чтобы удалить запись:

  1. Выбрать пункт меню "Удалить".
  2. Стрелками выбрать запись, подлежащую удалению и нажать на кнопку Подтверждение.
  3. Для подтверждения выбора снова нажать на кн. Подтверждение.
  4. Для отмены операции нажать на кн. Отмена.

Для изменения порядка следования записей:

  1. Выбрать пункт меню "Переместить".
  2. Стрелками выбрать запись, подлежащую перемещению.
  3. Зафиксировать ее нажатием на кнопку Дополнение, после чего запись станет красного цвета.
  4. Передвинуть запись в нужную позицию при помощи стрелок или мышки.
  5. Отпустить запись кнопкой Подтверждение.

Системное меню

Системное меню предназначено для выполнения таких действий как выход из программы, сворачивания окна приложения, настройки программы и просмотра списка входящих звонков. Для выполнения первых двух операций:

  1. Нажмите на кнопку Операции.
  2. Стрелками выберите нужное действие.
  3. Нажмите на кнопку Подтверждение.

Третий пункт данного меню служит для входа в подменю Настройка, с помощью которого можно изменить ряд опций, например язык пользовательского интерфейса, звуковые настройки, и многое другое. Рассмотрим каждую опцию более подробно.

Пункт меню Выбор языка определяет, на каком языке пользователю будут выводиться текстовые сообщения.

Опция Звуковой режим задает интерфейс Windows, который будет использован при выводе звука: Direct Sound или Waveform Audio. Как правило выбор Direct Sound более предпочтителен, однако для некоторых звуковых карт второй вариант подходит лучше. Какой интерфейс выбрать в каждом конкретном случае можно определить самотестированием, т.е. звонком на IP адрес 127.0.0.1

Пункт меню Задержка управляет размером звуковых буферов в программе. Чем меньше значение этого параметра, тем меньше будет задержка при воспроизведении голоса. Однако следует помнить, что некоторые звуковые карты могут некорректно работать с короткими буферами - появляется "дрожание" голоса.

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

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

  1. синяя подсветка записи в меню звонка означает, что абонент доступен
  2. розовый цвет сообщает о том, что он занят
  3. коричневый обозначает, что абонент в данный момент отсутствует.
  4. серый цвет - статус неопределен.

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

LINK порты. При старте программа создает TCP/UDP сервер на каждый занесенный в список порт для "прослушивания" попыток входящих соединений. Другими словами эти порты используются для приёма входящих звонков. Оптимальное количество портов в данном списке: 2-5. Внимание: изменения в списке LINK портов вступают в силу только после перезапуска программы.

SCAN порты. Передача голоса в программе осуществляется через UDP протокол. Если при звонке на один из LINK портов удалось установить соединение не по UDP, а по TCP протоколу, программа производит сканирование свободных UDP портов путём последовательной "прозвонки" значений, указанных в SCAN-списке. Один из найденных портов далее будет задействован для передачи голоса. Какой конкретно порт будет выбран, зависит от результатов сканирования. SCAN-список может содержать до 50 значений.

Пользователь может просматривать списки портов, добавлять новые или удалять уже существующие.

Чтобы добавить порт:.

  1. Выберите нужный список и нажмите кн. Подтверждение.
  2. Нажмите кнопку Дополнение.
  3. Введите новый порт.
  4. Снова нажмите кн. Подтверждение.

Для удаления порта:

  1. Выберите нужный список портов и нажмите кн. Подтверждение.
  2. Выберите порт, подлежащий удалению.
  3. Нажмите на кнопку Отмена , чтобы удалить выбранный порт.
  4. Подтвердите удаление нажатием кн. Подтверждение.

Фаервол. Настройка этой опции зависит от того, имеется ли в сети прокси сервер для фильтрации IP пакетов. Если прямой доступ в Интернет ограничен, но прокси сервер поддерживает протоколы Socks-4 или Socks-5, пользователь должен указать здесь тип выбранного протокола. Далее, нужно выбрать следующий пункт меню Стрелкой вниз, затем указать адрес прокси сервера и его рабочий порт (обычно 1080). Если в системе используется Socks-5, то необходимо ввести дополнительную информацию: нужен ли прокси logon, имя пользователя и пароль доступа.

К сожалению, через Socks-4 прокси можно делать только исходящие звонки. Также важно напомнить, что для Socks-4 как минимум один UDP порт на прокси сервере должен быть открытым на вход и на выход.

Информационное меню

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

Для того, чтобы снять 3-х минутное ограничение на разговор, нужно:

  1. Выбрать пункт меню "Регистрация" и нажать на кн. Подтверждение.
  2. Ввести корректный регистрационный код.
  3. Подтвердить код нажатием кн. Подтверждение.
  4. Ввести имя, под которым Вы желаете зарегистрироваться.
  5. Снова нажать на кн. Подтверждение.

Tray интерфейс

Помимо главного окна, в программе есть простой tray интерфейс. С его помощью можно:

  1. Показать или спрятать главное окно, щелкнув на пиктограмме телефона левой кнопкой мыши.
  2. Вызывать всплывающее меню нажатием правой кнопки мыши.

Выплывающее меню также позволяет показать или спрятать окно телефона. Кроме того, оно дает возможность быстро выйти из программы.

Горячие кнопки

Чтобы ускорить работу с телефоном, кроме уже упомянутых горячих клавиш, в программу было добавлено несколько дополнительных комбинаций:

  • "Alt-Shift-P" показать окно телефона
  • "Alt-H" спрятать телефон
  • "Alt-X" завершить работу с приложением.
Часто задаваемые вопросы
 

Вопрос. Я использую модемное подключение к Интернету, как мне определить IP адрес моего компьютера ?
Ответ. Чтобы определить локальный IP нужно:

  • подключиться к Интернету
  • запустить программу
Белые цифры над дисплейчиком телефона это и есть IP адрес, назначенный Вашему компьютеру интернет-провайдером.

Вопрос. Мой IP адрес меняется при каждом подключении к Интернету. Почему и что мне с этим делать ?
Ответ. IP адреса бывают двух типов: статические (фиксированные) и динамические. Каждый раз при входе в сеть провайдер назначает компьютеру IP адрес, который в последнем случае может меняться. Что конечно же весьма неудобно для входящих звонков. Я могу посоветовать в этой ситуации завести уникальное имя компьютера, распознаваемое DNS серверами (например mycomputer.redirectme.com), и использовать его вместо IP адреса. Сделать это можно например здесь: http://www.no-ip.com. Если есть возможность попробуйте установить на одном из компьютеров абонентский сервер PIPE Meeting.
В самом простом случае можно поступить следующим образом:

  • подключиться к Интернету и запустить программу
  • сообщить человеку, с которым Вы желаете пообщаться, текущий IP адрес через альтернативный канал связи: электронную почту, sms и т.д.
  • не отключаясь от Интернета ждать входящего звонка.
Возможно также еще одно решение проблемы входящих звонков: PIPE интегрируется с ICQ клиентом версии не старше 2000b (в более поздних версиях разработчиками была отключена поддержка внешних модулей). Серверы ICQ выполняют функцию абонентских серверов, которые при вхождении в Интернет регистрируют IP адрес каждого уникального пользователя. PIPE может получить этот IP адрес с помощью ICQ клиента, а затем использовать его для звонка. Чтобы связать PIPE и ICQ нужно выполнить следующие действия:
  • установить на компьютере ICQ клиент (его можно взять здесь - ICQ2000b)
  • после этого инсталлировать PIPE.
Запрос на голосовое соединение можно послать если ICQ находится в Advanced mode последовательным выбором в контекстном меню пунктов "Other IP Phones/Voice Chat" и "Personal Internet Phone Equipment", далее нажав на кнопку "Send".

Вопрос. При разговоре идет звук плохого качества, как его улучшить ?
Ответ. Попробуйте поменять в настройках опцию Звуковой режим с Direct Sound на Waveform Audio или наоборот. Возможно также имеет смысл увеличить значение параметра Задержка.

Вопрос. Я пытаюсь позвонить себе на 127.0.0.1 но сам себя не слышу.
Ответ. Первое что нужно проверить, это механическое подключение микрофона ко входу звуковой карты. Далее следует микшером разрешить запись с микрофонного входа, для этого нужно:

  • вызвать микшер двойным щелчком мышки на иконке индикатора громкости
  • в микшере в меню "Параметры" выбрать пункт "Свойства"
  • в разделе "Настройка громкости" выбрать "Запись", при этом регулятор уровня записи для микрофона должен быть активирован
  • разрешить запись с микрофона и выставить уровень записи на максимум.

Вопрос. Я программист и хочу доработать телефон под свои нужды, как мне это сделать ?
Ответ. При инсталляции программы укажите вариант установки Optional, затем выберите пункт Copy C++ code examples. В каталог программы будут помещены примеры того, как можно использовать бинарные компоненты телефона.

Вопрос. Поддерживается ли в программе конференц связь с несколькими абонентами ?
Ответ. Начиная с версии 2.7 такая возможность появилась. Реализована эта функциональность правда не как часть самого телефона, а в виде отдельного серверного компонента - NT сервиса. Он выполняет роль микшера, который смешивает звуковые потоки и рассылает их обратно всем участникам конференции. Компонент будет установлен на вашем компьютере, если при инсталляции выбрать вариант Optional и поставить галочку напротив PIPE vox chat service. Далее нужно:

  • активировать сервис командным файлом start.bat
  • всем участникам конференции добавить "координаты" сервиса (т.е. хост и порт) в адресную книгу. Запущенный сервис должен подсвечиваться в списке PIPE-абонентов зелёным цветом.
  • просто позвонить к нему, и начать говорить.
Следует подчеркнуть, что в сети достаточно установить только один такой конференц-сервер.

Благодарность
 

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

  • Дмитрию Карпову - за полезные консультации по работе с Win32 GDI.
  • Илье Позднову - за консультации по речевым кодекам, а также за предоставленные wav файлы со стандартными тональными сигналами.
  • Алексею Толмачеву и Олегу Сигиде - за пре- и альфа тестирование.
  • Антону Викторову - за существенные замечания, касающиеся пользовательского интерфейса.
  • Дмитрию Вальдману - за тех. консультации по пакетной передаче голоса при помощи ip сетей.
  • Андрею Гуменюку - за немецкий перевод сопроводительной документации, пользовательского интерфейса, а также за бета тестирование.
  • Андрею Лебедеву - за перевод документа в формат HTML.
  • Алексею Шинкину, Сергею Волвенко, Максиму Фалько - за бета тестирование.
Контактная информация
 
Ваши вопросы, предложения и замечания отправляйте по адресу
E-mail telephone@fromru.com
PIPE Meeting meeting.redirectme.net : 6970