Все привет. У меня есть выделенный сервер. И два ios устройства.
Хочу на сервере поднять SIP и звонить с одного устройства на другое.
Куда копать? как это все правильно настраивается? как добавить клиента ? как сервер понимает , что звонок надо адресовать именно определенному клиенту ? Протокол сам разберу, просто не могу понять как это работает.
Ios приложение делает запрос к sip серверу, а дальше как и что происходит ?
В дополнение, также в будущем хочется прикрутить возможность звонков на городские и мобильные номера, с чем здесь надо интегрироваться?
1. Asterisk
2. FreeSWITCH
3. YATE
4. OpenSer
Предпочтительным, как по мне, является FreeSWITCH.
Только вам этой забавы на много месяцев работы хватит - это всё весьма сложные продукты, каждый со своим "характером".
Это из пушки по воробьям получается.
Спасибо. Я понимаю что тут не на пару недель. Я пытаюсь определиться с алгоритмом, и с необходимыми технологиями. Минимальный план таков. Два приложения=>два iphone. Сервер с поднятым SIP. Позвонить с одного на другой. Потом разобраться как добавлять клиентов.
1. не ставим, а собираем и исходников - там компиляции по времени ... как сборка ядра Linux.
2. на сервере Linux (сами авторы проекта используют CentOS)
3. изучаем XML (в FreeSWITCH всё записывается в XML)
4. на XML описываем диалплан: кто, кого, как вызывает, что делает вызываемый.
5. для отработки всего этого вам вовсе не нужны железные iPhone - достаточно программных софт-фонов.
Олег Цилюрик: на XML описываем диалплан: кто, кого, как вызывает, что делает вызываемый. Так в итоге, как от сервера клиенту запрос то отдается? не могу понять, хоть убейте.
Читайте документацию ;-)
... очень-очень урощённо:
- вызывающий абонент вызывает SIP сервер по IP
- по запросу 123456@my.server.net сервер ищет в диалплане абонента 123456
- если такой есть, то сервер связывает его с вызывающим (согласовывая протоколы, скорости и т.д.)
- на этом работа протокола SIP заканчивается, и вся дальнейшая сигнальная свзь 2-х связанных абонентов осуществляется протоколом RTP.
(т.е. все действия: кого-то связать, кому-то музыку поиграть, кому-то голосовое меню ... - всё определяется тем, что записано в файле диалплана)
Олег Цилюрик: Смотрите, сервер должен соединить двух пользователей, это я понял. Дальше по протоколу RTP. Как вызываемый абонент понимает что ему INVITE пришел ? Опрашивает сервер постоянно? Ведь IP у него динамический, сервер ему пакет напрямую отправить не может, если правильно понял.