Как завершить sip-звонок с фиксированным временем

Я написал сервис для обработки sip-вызовов. Я хочу сделать некоторую дополнительную функцию, чтобы ограничить время вызова, настроив время исправления или обработав значение времени вызова, отправив его с некоторым параметром. Как только вызов sip будет установлен, как правило, он будет завершен с ответом конечных пользователей как CANCEL или BYE, но до этого, если я хочу ограничить его определенным фиксированным временем, возможно ли это? Как только sip-вызов установлен, если я установил время на 5 минут, поэтому, даже если конечный пользователь не хочет завершать вызов, вызов должен быть автоматически завершен через 5 минут. Я просмотрел заголовок expires, который, похоже, не помогает в этом.


person abhisek    schedule 04.02.2016    source источник


Ответы (2)


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

Другой вариант - сделать на стороне сервера, где сервер делает то же самое.

person Anantha Krishnan    schedule 04.02.2016
comment
привет Кришнан, не могли бы вы подробнее рассказать о настраиваемом таймере на стороне клиента? у меня нет доступа к серверу, поэтому при получении ответа от сервера в каком ответе я могу отправить какой параметр, который будет обрабатывать таймер? - person abhisek; 04.02.2016
comment
@abhisek Вы можете установить таймер t в пакете SDP. Вы можете узнать больше об этом в RFC4566. - person r2_d2; 19.02.2016

Да, это возможно. Обычно это лучше делать на стороне сервера, так как обычно это связано с зарядкой. Например, если у пользователя закончились деньги, прекратите вызов.

Вам нужно, чтобы ваш вызов прошел через приложение Back to Back User Agent, которое справится с этим. B2BUA, который запустит таймер, который после истечения срока его действия будет отвечать за отправку BYE на обе ноги для завершения вызова. Вы можете сделать это на SIP-сервлетах Restcomm, есть пример B2BUA по адресу https://github.com/RestComm/sip-servlets/tree/master/sip-servlets-examples/call-forwarding.

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

person jeand    schedule 05.02.2016