Проверьте на INVITE после РЕГИСТРАЦИИ в SIP - PullRequest
0 голосов
/ 27 апреля 2020

Я разрабатывал C# приложение Xamarin с PJSIP , и я столкнулся с небольшим (или большим) препятствием. Система, которую я сейчас настроил, состоит в том, что пользователь получает уведомление о входящем звонке, что позволяет ему щелкнуть уведомление и открыть приложение. Затем приложение зарегистрируется на SIP-сервере с использованием учетных данных SIP и в идеале получит сообщение INVITE, позволяющее им ответить на входящий вызов. Однако это совсем не так, как работает. Если приложение зарегистрировано на SIP-сервере до отправки сообщения INVITE, звонок принимается нормально. Однако, если приложение зарегистрировано после , сообщение INVITE отправлено, оно никогда не будет получено или распознано клиентом. Есть ли способ вручную проверить сообщение INVITE, используя SIP, или эта функция просто не существует?

Ответы [ 2 ]

0 голосов
/ 28 апреля 2020

Когда SIP-сервер получает входящий вызов (сообщение INVITE), ему необходимо знать, куда его переадресовать. Вот почему ваше приложение должно зарегистрироваться на сервере: это создает сопоставление между SIP URI (пользователь) и его контактным адресом (IP). Когда SIP-сервер получает сообщение INVITE, он проверяет, существует ли сопоставление для Request-URI сообщения, и, если это так, пересылает сообщение на соответствующий контактный адрес.

Если сопоставление не существует в то время, когда SIP-сервер получает Сообщение INVITE SIP-сервер просто завершает транзакцию INVITE, возвращая окончательный ответ, например 404 Not Found. Ваш клиент не будет уведомлен о входящем сообщении INVITE.

Если у вас есть доступ к SIP-серверу, вы можете создать отображение stati c на SIP-сервере между URI вашего приложения и его контактным адресом. Это означает, что ваше приложение больше не будет регистрироваться. Это не очень гибко, но это поможет вам в этом случае. Однако помните, что при использовании сопоставления stati c сервер SIP, вероятно, всегда будет пересылать входящие сообщения INVITE. Даже когда ваше приложение не работает.

0 голосов
/ 28 апреля 2020

Проблема заключается в том, как работает метод SIP REGISTER,

Цель метода SIP REGISTER состоит в том, чтобы сервер SIP знал, где связаться с этим пользователем - по какому IP-адресу и порту он должен отправить SIP ПРИГЛАСИТЬ на.

Если вы еще не зарегистрировались, ваш SIP-сервер не будет знать, какой IP-адрес в целом inte rnet отправлять SIP INVITE для вызова, когда он хочет позвонить.

Хотя вы можете настроить свое приложение на прослушивание входящих SIP-ПРИГЛАШЕНИЙ, и это будет работать нормально, серверу все равно нужно знать, на какой IP-адрес и порт отправлять его, поэтому вам потребуется другой механизм, чтобы сообщить этот SIP-сервер, которому IP-адрес и порт для отправки SIP-ПРИГЛАШЕНИЙ, но это проблема, которую SIP REGISTER настроил для решения, так что, вероятно, проще всего использовать функцию SIP REGISTER.

Я написал блог пост, как вам интересно узнать, как работает функция SIP REGISTRAR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...