AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

Звонки между двумя Asterisk по SIP

Newbies/FAQ Forum 2 сообщений 23.12.2010 14:57 - 24.12.2010 11:59
#1 23.12.2010 14:57

Звонки между двумя Asterisk по SIP


Коллеги, приветствую.

Имеется следующая схема:
IP-телефоны -> Asterisk1(192.168.2.40) -> SIP -> Asterisk2(192.168.2.103)

Логика работы следующая.
IP-телефоны зарегистрированы на Asterisk1. С телефона идет звонок на номер 6858, который с Asterisk1 с помощью Dial(SIP/asttest2/6858) переводится на Asterisk2. Там отрабатывает некое голосовое приложение, результатом работы которого является звонок на какой-то другой IP-телефон, зарегистрированнный на Asterisk1: Dial(SIP/asttest3/6500).
И вот этот обратный звонок не проходит. Звонки с аккаунтов, зарегистрированных на Asterisk2 аккаунтам зарегистрированным на Asterisk1 ходят без проблем. А вот такая петля не работает. Подскажите, пожалуйста, где затык?

Астериски друг на друге зарегистрированы, пиры заданы. Вот записи с Asterisk2:
register => asttest2:secret2@192.168.2.40
register => asttest3:secret3@192.168.2.40

[asttest2]
type=friend
username=asttest2
secret=secret2
host=192.168.2.40
disallow=all
allow=ulaw
allow=alaw

[asttest3]
type=friend
username=asttest3
secret=secret3
host=192.168.2.40
disallow=all
allow=ulaw
allow=alaw

Два канала между ними зарегистрировал на всякий случай, если звонить в тот же канал asttest2, через который пришел звонок, происходит тоже самое.
Логичным решение является использование Transfer вместо Dial, но он не позволяет обрабатывать диал-статусы и возвращать управление голосовому приложению на Asterisk2.

При включенном sip debug при обратном звонке в логах имеем:


--- (10 headers 0 lines) ---
-- Executing [ModeChoice@default:2] Dial("SIP/asttest2-00000020", "SIP/asttest3/6500") in new stack
== Using SIP RTP CoS mark 5
Audio is at 192.168.2.103 port 14124
Adding codec 0x4 (ulaw) to SDP
Adding codec 0x8 (alaw) to SDP
Adding non-codec 0x1 (telephone-event) to SDP
Reliably Transmitting (no NAT) to 192.168.2.40:5060:
INVITE sip:6500@192.168.2.40 SIP/2.0
Via: SIP/2.0/UDP 192.168.2.103:5060;branch=z9hG4bK0774dda7;rport
Max-Forwards: 70
From: "Softphone" ;tag=as459180db
To:
Contact:
Call-ID: 58741a1e75539edf2534c5305acb11ce@192.168.2.103
CSeq: 102 INVITE
User-Agent: Asterisk PBX 1.6.2.13
Date: Wed, 22 Dec 2010 14:02:18 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 290

v=0
o=root 1297343692 1297343692 IN IP4 192.168.2.103
s=Asterisk PBX 1.6.2.13
c=IN IP4 192.168.2.103
t=0 0
m=audio 14124 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

---
-- Called asttest3/6500


SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/UDP 192.168.2.103:5060;branch=z9hG4bK0774dda7;received=192.168.2.103;rport=5060
From: "Softphone" ;tag=as459180db
To: ;tag=as32a22793
Call-ID: 58741a1e75539edf2534c5305acb11ce@192.168.2.103
CSeq: 102 INVITE
User-Agent: PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Proxy-Authenticate: Digest algorithm=MD5, realm="asterisk", nonce="458d3b60"
Content-Length: 0



--- (10 headers 0 lines) ---
Transmitting (no NAT) to 192.168.2.40:5060:
ACK sip:6500@192.168.2.40 SIP/2.0
Via: SIP/2.0/UDP 192.168.2.103:5060;branch=z9hG4bK0774dda7;rport
Max-Forwards: 70
From: "Softphone" ;tag=as459180db
To: ;tag=as32a22793
Contact:
Call-ID: 58741a1e75539edf2534c5305acb11ce@192.168.2.103
CSeq: 102 ACK
User-Agent: Asterisk PBX 1.6.2.13
Content-Length: 0


---
Audio is at 192.168.2.103 port 14124
Adding codec 0x4 (ulaw) to SDP
Adding codec 0x8 (alaw) to SDP
Adding non-codec 0x1 (telephone-event) to SDP
Reliably Transmitting (no NAT) to 192.168.2.40:5060:
INVITE sip:6500@192.168.2.40 SIP/2.0
Via: SIP/2.0/UDP 192.168.2.103:5060;branch=z9hG4bK46a535ec;rport
Max-Forwards: 70
From: "Softphone" ;tag=as459180db
To:
Contact:
Call-ID: 58741a1e75539edf2534c5305acb11ce@192.168.2.103
CSeq: 103 INVITE
User-Agent: Asterisk PBX 1.6.2.13
Proxy-Authorization: Digest username="asttest3", realm="asterisk", algorithm=MD5, uri="sip:6500@192.168.2.40", nonce="458d3b60", response="02a1033219de8965f6fd4b494f67c7f6"
Date: Wed, 22 Dec 2010 14:02:18 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 290

v=0
o=root 1297343692 1297343693 IN IP4 192.168.2.103
s=Asterisk PBX 1.6.2.13
c=IN IP4 192.168.2.103
t=0 0
m=audio 14124 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=silenceSupp:off - - - -
a=ptime:20
a=sendrecv

---


SIP/2.0 403 Forbidden
Via: SIP/2.0/UDP 192.168.2.103:5060;branch=z9hG4bK46a535ec;received=192.168.2.103;rport=5060
From: "Softphone" ;tag=as459180db
To: ;tag=as32a22793
Call-ID: 58741a1e75539edf2534c5305acb11ce@192.168.2.103
CSeq: 103 INVITE
User-Agent: PBX
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY
Content-Length: 0



--- (9 headers 0 lines) ---
Transmitting (no NAT) to 192.168.2.40:5060:
ACK sip:6500@192.168.2.40 SIP/2.0
Via: SIP/2.0/UDP 192.168.2.103:5060;branch=z9hG4bK46a535ec;rport
Max-Forwards: 70
From: "Softphone" ;tag=as459180db
To: ;tag=as32a22793
Contact:
Call-ID: 58741a1e75539edf2534c5305acb11ce@192.168.2.103
CSeq: 103 ACK
User-Agent: Asterisk PBX 1.6.2.13
Content-Length: 0


---
[Dec 22 17:02:18] WARNING[31301]: chan_sip.c:17929 handle_response_invite: Received response: "Forbidden" from '"Softphone" ;tag=as459180db'
-- SIP/asttest3-00000021 is circuit-busy
== Everyone is busy/congested at this time (1:0/1/0)


Насколько я понимаю, когда звонок идет обратно на Asterisk1 он не проходит авторизацию. Но вот почему это происходит?
И еще смущает в инвайте
From: "Softphone" ;tag=as459180db
ведь по идее вызывающий абонент это 6755@192.168.2.40
#2 24.12.2010 11:59

Блин, неужто никто не знает или я как-то криво описал?
Попробую сформулировать иначе.
Звонок с телефона через Астериск пришел на второй Астериск, который подключен к первому в роли SIP-клиента. Можно ли этот звонок перевести другому абоненту данного сервера, но так, чтобы можно было обработать диал-статусы.
При использовании Transfer в данной схеме, всегда возвращается диал-статус Answered.