Только частично
Все таки проблема была решена так:
| Код: |
| [outsip] exten => 2288888,1,Wait(2) exten => 2288888,2,Record(/home/sip.wav) exten => 2288888,3,Wait(2) exten => 2288888,4,Playback(/home/sip.wav) exten => 2288888,3,Wait(2) exten => 2288888,5,Hangup |
Вот только Playback не получается. Он мне вот чего пишет
| Код: |
| [Aug 4 07:04:56] DEBUG[20996] pbx.c: Launching 'Wait' [Aug 4 07:04:56] VERBOSE[20996] logger.c: -- Executing [2288888@outsip:3] Wait("SIP/2288888@10.0.1.250-081e9050", "2") in new stack [Aug 4 07:04:58] DEBUG[20996] pbx.c: Launching 'Playback' [Aug 4 07:04:58] VERBOSE[20996] logger.c: -- Executing [2288888@outsip:4] Playback("SIP/2288888@10.0.1.250-081e9050", "/home/sip.wav") in new stack [Aug 4 07:04:58] WARNING[20996] file.c: File /home/sip.wav does not exist in any format [Aug 4 07:04:58] WARNING[20996] file.c: Unable to open /home/sip.wav (format 0x8 (alaw)): No such file or directory [Aug 4 07:04:58] WARNING[20996] app_playback.c: ast_streamfile failed on SIP/2288888@10.0.1.250-081e9050 for /home/sip.wav [Aug 4 07:04:58] DEBUG[20996] pbx.c: Launching 'Hangup' |
Эта строчка меня вообще просто убила:
| Код: |
| /home/sip.wav does not exist in any format |
Может быть есть какие-то идеи?
Только я еще не доконца разобрался как это работает!
Хотел бы прояснить некоторые моменты связанные с алгоритмом рабоыт Астериска.
Допустим мой случай и в sip.conf прописано%
| Код: |
| [user] .... fromuser=2288888 ... |
если я звоню с гор. телефона на 2288888, то как я понял из доков, Астериск ищет строку fromuser. Потом он ищет в найденом канале context=outsip. И потом находит в extension.conf екстеншн с именем [outsip] ну и дальше начинает выполнять описанные в нем действия. Это правильно?
А какой алгоритм при звонке с астериска? Те как позвонить с него из консоли и проиграть файл?
Сейчас еще в доках покапаюсь.
| nklvch писал(а): |
| Я просил бы в дальнейшем не флудить |
Не понятно что Вас убило, если сказано было - звуковые файлы держать в /var/lib/asterisk/sounds/ а не там, где Вам хочется (/home/sip.wav) и без всяких расширений.
| nklvch писал(а): |
| если я звоню с гор. телефона на 2288888, то как я понял из доков, Астериск ищет строку fromuser. Потом он ищет в найденом канале context=outsip. И потом находит в extension.conf екстеншн с именем [outsip] ну и дальше начинает выполнять описанные в нем действия. Это правильно? |
Столкнулся с другой трудностью. Теперь мне не проиграть звуковой файл на внешний телефон.
Записал 1.call файл
| Код: |
| Channel:SIP/2335522@10.0.1.250 CallerID:2288888 MaxRetries:2 RetryTime:120 WaitTime:30 Context:outboundmsg1 Extension:s Priority:1 |
Кидаю в /var/spool/asterisk/outgoing
В extensions.conf пишу
| Код: |
| [outboundmsg1] exten => s,1,Answer exten => s,2,Wait(2) exten => s,3,Playback(outboundmsgs/msg0) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup |
Здесь, ниже вроде бы все правильно консоль выдает?
| Код: |
| -- Attempting call on SIP/335522@10.0.1.250 for s@outboundmsg1:1 (Retry 1) [Aug 12 11:15:55] DEBUG[23064]: chan_sip.c:15963 sip_request_call: Asked to create a SIP channel with formats: 0x40 (slin) [Aug 12 11:15:55] DEBUG[23064]: chan_sip.c:4548 sip_alloc: Allocating new SIP dialog for (No Call-ID) - INVITE (With RTP) [Aug 12 11:15:55] DEBUG[23064]: chan_sip.c:3018 sip_call: Outgoing Call for 335522 |
А вот дальше чего-то не то происходит.
| Код: |
| [Aug 12 11:15:55] NOTICE[23028]: chan_sip.c:12253 handle_response_invite: Failed to authenticate on INVITE to '"2288888" ;tag=as5b0176fc' > Channel SIP/10.0.1.250-081e9548 was never answered. [Aug 12 11:15:55] DEBUG[23064]: channel.c:1483 ast_hangup: Hanging up channel 'SIP/10.0.1.250-081e9548' [Aug 12 11:15:55] DEBUG[23064]: chan_sip.c:3517 sip_hangup: Hangup call SIP/10.0.1.250-081e9548, SIP callid 18fc538570e9ee747e97031d4a2334df@192.168.3.2) [Aug 12 11:15:55] NOTICE[23064]: pbx_spool.c:341 attempt_thread: Call failed to go through, reason (8) Congestion (circuits busy) Really destroying SIP dialog '18fc538570e9ee747e97031d4a2334df@192.168.3.2' Method: INVITE [Aug 12 11:16:46] NOTICE[23028]: chan_sip.c:7462 sip_reregister: -- Re-registration for 2288888@10.0.1.250 [Aug 12 11:16:46] DEBUG[23028]: chan_sip.c:4548 sip_alloc: Allocating new SIP dialog for 73f17809363c2bd433ce199f145b78bd@127.0.1.1 - REGISTER (No RTP) [Aug 12 11:16:46] DEBUG[23028]: chan_sip.c:7623 transmit_register: Scheduled a registration timeout for 10.0.1.250 id #39 [Aug 12 11:16:46] DEBUG[23028]: chan_sip.c:7681 transmit_register: >>> Re-using Auth data for 2288888@10.0.1.250 |
Чего-то я не могу разобраться почему он
| Код: |
| chan_sip.c:12253 handle_response_invite: Failed to authenticate on INVITE to '"2288888" ;tag=as5b0176fc' |
пишет.
| Цитата: |
| Коды ответа при ошибке авторизации - 401 или 407? Если прокси сервер, проверяющий авторизацию, не может принять авторизационные данные, переданные в запросе, то он ДОЛЖЕН ответить сообщением с кодом 407 (Proxy Authentication Required). Ответ ДОЛЖЕН включать в себя заголовочное поле: "Proxy-Authenticate", содержащее, как минимум одну (и по возможности, заново сгенерированную) строку для проведения авторизации на прокси сервере, пригодную к использованию запрашивающим клиентом. |
| Код: |
| SIP/2.0 407 Proxy Authentication Required Via: SIP/2.0/UDP 192.168.3.2:5060;branch=z9hG4bK22d5132f;rport From: "2288888" ;tag=as7a5c7d22 To: ;tag=22E90C7A Call-ID: 6405a89f41abdcd91ef1ff7c0c55ba08@192.168.3.2 CSeq: 102 INVITE User-Agent: ELCOM SIP server Proxy-Authenticate: Digest algorithm=MD5, realm="elcom@10.0.1.250", nonce="bc5bbdc529810" Content-Length: 0 |
строку для проведения авторизации на прокси сервере, пригодную к использованию запрашивающим клиентом
необходимо следущую Proxy-Authenticate: Digest algorithm=MD5, realm="elcom@10.0.1.250", nonce="bc5bbdc529810".
Куда копать? помогите пожалуйста.
Added after 16 minutes:
Хммм...
*CLI> sip show registry
Host Username Refresh State Reg.Time
10.0.1.250:5060 2288888 105 Registered Wed, 13 Aug 2008 11:14:57
Все зарегистрировано вроде.
Почему не получается исходящий вызов с помощью .call файла?
Added after 2 hours 7 minutes:
Вот еще что интересного пишет консоль.
| Код: |
| [Aug 13 13:20:30] DEBUG[25807]: chan_sip.c:3018 sip_call: Outgoing Call for 2335128 Audio is at 192.168.3.2 port 17710 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 10.0.1.250:5060: INVITE sip:2335128@10.0.1.250 SIP/2.0 Via: SIP/2.0/UDP 192.168.3.2:5060;branch=z9hG4bK7ee0c274;rport From: "2288888" ;tag=as78ffd82f To: Contact: Call-ID: 6f052fd871f898fe7e41641911aac2b9@192.168.3.2 CSeq: 102 INVITE User-Agent: Asterisk PBX Max-Forwards: 70 Date: Wed, 13 Aug 2008 17:20:30 GMT Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces Content-Type: application/sdp Content-Length: 262 v=0 o=root 25392 25392 IN IP4 192.168.3.2 s=session c=IN IP4 192.168.3.2 t=0 0 m=audio 17710 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 |
Что бы это значило?
А чем связан этот кусок кода который пытается направить ртп?
| Цитата: |
| Call failed to go through, reason ( |
У много кого такой вопрос, но толком никто не ответил на него.
Курим.
Added after 32 minutes:
Все получилось!
В итоге были добавлены две строчки
в sip.conf
| Код: |
| [2288888] ... canreinvite = yes qualyfiy = yes ... |
может кто-нибудь мне чуточку как какую функциональность они добавляют в систему?
Я прочитал в доках но немножко не понл.[/quote]
canreinvite=yes - позволить RTP/медиа потоку ходить напрямую между устройствами, минуя Asterisk, который будет через себя гонять только сигнализацию.
qualyfiy=yes - периодически опрашивать устройство на наличие признаков жизни и целостности канала. Смахивает на Keep-alive и позволяет поддерживать постоянно открытой сессию NAT.
_________________
Я вернулся.