Вы можете совершать звонки без настройки сервера, как правило, но что-то требует настройки. Как указывает mattjgalloway в комментариях под вашим вопросом, самое надежное решение - это червяк, включающий ICE , который обеспечивает своего рода «зонтичный» протокол для таких вещей, как STUN.
В прошлый раз, когда я коснулся этой проблемы , у меня было требование, чтобы я не мог использовать интернет-SIP-серверы, чтобы помочь. Я придумал идею своего рода реестра: ваш клиент может определить группу «адресных пространств» с конкретными требованиями к маршрутизации. Для SIP URI в вашей локальной сети вы не определяете маршрутизацию; для URI в сети вашей компании с VPN-доступом вы определяете маршрут, проходящий через ваше VPN-соединение; для всего остального вы определяете маршрут через интернет-роутер.
Под «определением маршрута» я подразумеваю, что, когда вы размещаете вызов URI в каком-то конкретном адресном пространстве, вы сохраняете, какой IP будет входить в заголовок контакта, какие заголовки маршрутов вам могут понадобиться и т. 1011 *
Таким образом, процесс совершения звонка становится:
- Поиск совпадений в наборе адресных пространств.
- Запросить в этом адресном пространстве подходящие биты, необходимые для создания работоспособного ПРИГЛАШЕНИЯ (соответствующие данные заголовка контакта, заголовки маршрута и т. Д.)
- Создайте обычное ПРИГЛАШЕНИЕ, мутировав по мере необходимости для предыдущего шага.
- Отправьте ПРИГЛАШЕНИЕ как обычно.
Это, по сути, воспроизводит половину того, что ICE даст вам, в форме, управляемой вручную. «Половина», потому что это гарантирует, что один агент SIP может выполнять вызовы так, чтобы все SIP-маршрутизация работала. Недостающая половина - вам все еще нужен какой-то регистратор, и каждый агент в вашем списке контактов должен иметь необходимую настройку для приема входящих звонков. (Если агент находится за интернет-маршрутизатором NATting, маршрутизатору потребуется либо запустить прокси-сервер SIP, либо перенаправить порты 5060, 5061 на конкретный компьютер (который может быть агентом или прокси-сервером, обслуживающим агентов локальной сети).
Это действительно большая банка червей.