2016-05-09 6 views
0

Я пытаюсь реализовать SIP UA, и для этого я изучил консоль Asterisk в режиме отладки для SIP. Я попытался вызвать одно расширение (A) из другого расширения (B).Хотите упростить потоки сообщений Asterisk SIP

Исходное сообщение вытекает до сообщения RINGING, которое я понял, включая часть проверки подлинности дайджеста. К ним относятся:

(B) >--->INVITE-----[Asterisk] 

Вслед за серией назад и вперед сообщений:

401 Unauthorized with NONCE 
    ACK 
    INVITE with correct Digest 
    TRYING 
    TRYING 
    RINGING 

После звона телефона (A) подобран, я вижу следующий обмен сообщения:

(A) >----> OK >-----> [Asterisk] 

    (A) <----< ACK<-----< [Asterisk] 

         [Asterisk] >----- OK ------> (B) 

    (A) >---(re)INVITE--> [Asterisk] 

         [Asterisk] <-----ACK-------< (B) 

         [Asterisk] >---(re)INVITE--> (B) 

    (A) >---TRYING -----> [Asterisk] 

         [Asterisk] <-----OK--------< (B) 

    (A) >-----OK--------> [Asterisk] 

    (A) <----ACK--------< [Asterisk] 

Я пишу часть UA на (B) стороны и знать SDP для а заранее и может генерировать СДП для B, который находится в моем контроле. Мой поток вызовов всегда будет от B до A. Я могу управлять всем сообщением, исходящим от (B). Как уменьшить приведенный поток сообщений? Кроме того, я не полностью понимаю потребность в стольких сообщениях после обмена первоначальными SDP до RINGING. Или они?

ответ

1

Звездочка будет действовать, как описано в стандарте SIP (rfc).

Вы не можете удалить приглашения. Только то, что вы можете сделать, это отключить ранние носители и включить компонент directmedia/ignore sdp.

+0

Правда. Отключение directmedia сохраняет много сообщений, и в моем случае я бы хотел, чтобы Asterisk оставался в цикле, поэтому опция имеет смысл. Я не знаю, как отключить ранние СМИ, я буду читать по этому поводу. Что касается игнорирования SDP, я не знаю, что это значит ... Как конечные точки знают о возможностях мультимедиа, порту и т. Д.? – Sam

+0

Если вы выполняете полную совместимость UA, вы должны поддерживать все сообщения, описанные в RFC. Это гораздо больше, чем вы показываете. Если вы хотите «сжатый» UA, вы можете работать с одним кодеком, фиксированным портом, игнорировать SDP – arheops

+0

. Все, что мне нужно, это механизм, чтобы сделать SIP-вызовы Asterisk через сервер приложений узла с UDP в качестве транспорта. Поэтому просто нужно поддерживать базовое INVITE для начала. Как только я получу эту работу, я могу добавить еще несколько вариантов для INVITE. Не намереваясь построить полноценный SIP UA. JS-библиотеки таких sip, js, jssip, sipml5 все используют websockets как транспорт. Кроме того, они слишком раздуты для ограниченной задачи, которую я имею под рукой. – Sam

Смежные вопросы