Добрый день, Подскажите что нет так? Мучусь уже 2 день.
[internal]
exten => XXX,1,Dial(SIP/${EXTEN})
exten => XXX,n, Hangup
exten => _7925XXXXXXX,1,Dial(SIP/multifon/${EXTEN},120)
exten => _7925XXXXXXX,n,HangUp
[from-multifon]
exten => _x.,1,GotoIf($["${CALLERID(num)}" = "7925xxxxxxx"]?callback,s,1)
exten => _x.,n,Hangup
[callback]
exten => s,1,System(/etc/asterisk/scripts/callback ${CALLERID(num)} &)
exten => s,n,Hangup
[disa1]
exten => s,1,Answer
exten => s,n,Wait(2)
exten => s,n,Playback(please-enter-your)
exten => s,n,Background(telephone-number)
exten => s,n,Set(TIMEOUT(digit)=5)
exten => s,n,Set(TIMEOUT(response)=10)
exten => s,n,DISA(no-password,default)
exten => s,n,HangUp
Содержимое /etc/asterisk/scripts/callback#!/bin/sh
sleep 15
NUMBER=$1
echo "Channel: SIP/internal/$NUMBER
MaxRetries: 1
RetryTime: 10
WaitTime: 20
Context: disa1
Extension: 222
Priority: 1
AlwaysDelete: Yes" >/var/spool/asterisk/tmp/$NUMBER
mv /var/spool/asterisk/tmp/$NUMBER /var/spool/asterisk/outgoing/$NUMBER
Вот что получается== Using SIP RTP CoS mark 5
-- Executing [792yyyyyyy@from-multifon:1] GotoIf("SIP/multifon-0000001b", "1?callback,s,1") in new stack
-- Goto (callback,s,1)
-- Executing [s@callback:1] System("SIP/multifon-0000001b", "/etc/asterisk/scripts/callback 7925yyyyyyy &") in new stack
-- Executing [s@callback:2] Hangup("SIP/multifon-0000001b", "") in new stack
== Spawn extension (callback, s, 2) exited non-zero on 'SIP/multifon-0000001b'
Не поверите, до сих пор не смог победить колбек с дисой.
Ситуация такая колбек и disa работает (немного перемудрил с первичным диалпланом), но только в режиме подкладки call файла вручную.
Тескт файла
Channel: SIP/multifon/79251234567
MaxRetries: 3
RetryTime: 60
WaitTime: 30
Context: disa1
Extension: s
Archive: Yes
Но скрипт этот в сочетании с екстеншином exten => s,1,System(/etc/asterisk/scripts/callback ${CALLERID(num)} > /tmp/callbackerror 2>&1 &)
exten => s,n,Hangup
#!/bin/sh
sleep 20
echo "Channel: SIP/multifon/$NUMBER
MaxRetries: 3
RetryTime: 60
WaitTime: 30
Context: disa1
Extension: s
Archive: Yes" >/var/spool/asterisk/tmp/$NUMBER
mv /var/spool/asterisk/tmp/$NUMBER /var/spool/asterisk/outgoing/$NUMBER
Не дает мне нужного результата. Мозги кипят, что делать. У меня подозрение, что он не передает номер вызывающего абонента в call файл.<------------>
-- Executing [79261945604@from-multifon:1] GotoIf("SIP/multifon-00000002", "1?callback1,s,1") in new stack
-- Goto (callback1,s,1)
-- Executing [s@callback1:1] System("SIP/multifon-00000002", "/etc/asterisk/scripts/callback-1 &") in new stack
-- Executing [s@callback1:2] Hangup("SIP/multifon-00000002", "") in new stack== Spawn extension (callback1, s, 2) exited non-zero on 'SIP/multifon-00000002'
Scheduling destruction of SIP dialog '020231880581400000007914@SFESIP1-id1-ext' in 6400 ms (Method: INVITE)<--- Reliably Transmitting (NAT) to 193.201.229.35:5060 --->
SIP/2.0 603 Declined
Via: SIP/2.0/UDP 193.201.229.35:5060;branch=z9hG4bK5afuf01008v00p89r7s1.1;received=193.201.229.35;rport=5060
From: <sip:79251891044@10.190.35.17>;tag=95ffcd055e0f78f7d5d397020e89288d0725de9f
To: sip:79261945604-qr4vc4rvrgl30@10.190.35.4:5060;tag=as23833ad9
Call-ID: 020231880581400000007914@SFESIP1-id1-ext
CSeq: 1 INVITE
Server: Asterisk PBX 1.8.12.0
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Length: 0<------------>
<--- SIP read from UDP:193.201.229.35:5060 --->
ACK sip:79261945604@37.59.239.64:5060 SIP/2.0
Via: SIP/2.0/UDP 193.201.229.35:5060;branch=z9hG4bK5afuf01008v00p89r7s1.1
CSeq: 1 ACK
Max-Forwards: 19
From: <sip:79251891044@10.190.35.17>;tag=95ffcd055e0f78f7d5d397020e89288d0725de9f
To: <sip:79261945604-qr4vc4rvrgl30@10.190.35.4:5060>;tag=as23833ad9
Call-ID: 020231880581400000007914@SFESIP1-id1-ext
Content-Length: 0<------------->
--- (8 headers 0 lines) ---
Really destroying SIP dialog '79f7c47b0195ccf046b6a13007c96624@37.59.239.64' Method: REGISTER
Really destroying SIP dialog '020231880581400000007914@SFESIP1-id1-ext' Method: ACK
<--- SIP read from UDP:178.63.16.146:5060 --->
SIP/2.0 200 OK
CSeq: 164 REGISTER
Via: SIP/2.0/UDP 37.59.239.64:5060;branch=z9hG4bK0b8d5e22;rport
From: <sip:1000054983@soft.mob1.biz>;tag=as0e8a3418
Call-ID: 6db054283765f29f4619f6fb348ae9a8@37.59.239.64
To: <sip:1000054983@soft.mob1.biz>;tag=1150582588654835
Contact: <sip:1000054983@37.59.239.64:5060>;expires=40
Expires: 40
Content-Length: 0<------------->
--- (9 headers 0 lines) ---
Scheduling destruction of SIP dialog '6db054283765f29f4619f6fb348ae9a8@37.59.239.64' in 32000 ms (Method: REGISTER)
Reliably Transmitting (NAT) to 213.133.98.3:5060:
OPTIONS sip:222@213.133.98.3 SIP/2.0
Via: SIP/2.0/UDP 37.59.239.64:5060;branch=z9hG4bK04bde992;rport
Max-Forwards: 70
From: "asterisk" <sip:asterisk@37.59.239.64>;tag=as6a6d78f4
To: <sip:222@213.133.98.3>
Contact: <sip:asterisk@37.59.239.64:5060>
Call-ID: 1fc30bd141e953f40bc7ec3973f5f076@37.59.239.64:5060
CSeq: 102 OPTIONS
User-Agent: Asterisk PBX 1.8.12.0
Date: Fri, 03 Aug 2012 05:50:58 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Length: 0
<--- SIP read from UDP:213.133.98.3:5060 --->
SIP/2.0 481 Call/Transaction Does Not Exist
Via: SIP/2.0/UDP 37.59.239.64:5060;branch=z9hG4bK04bde992;received=37.59.239.64;rport=5060
From: "asterisk" <sip:asterisk@37.59.239.64>;tag=as6a6d78f4
To: <sip:222@213.133.98.3>
Call-ID: 1fc30bd141e953f40bc7ec3973f5f076@37.59.239.64:5060
CSeq: 102 OPTIONS
Content-Length: 0<------------->
--- (7 headers 0 lines) ---
Really destroying SIP dialog '1fc30bd141e953f40bc7ec3973f5f076@37.59.239.64:5060' Method: OPTIONS
Reliably Transmitting (NAT) to 193.201.229.35:5060:
OPTIONS sip:multifon.ru SIP/2.0
Via: SIP/2.0/UDP 37.59.239.64:5060;branch=z9hG4bK68689680;rport
Max-Forwards: 70
From: "asterisk" <sip:79261945604@37.59.239.64>;tag=as43eeadac
To: <sip:multifon.ru>
Contact: <sip:79261945604@37.59.239.64:5060>
Call-ID: 27d6278057fd06c8390048807e4db2a3@37.59.239.64:5060
CSeq: 102 OPTIONS
User-Agent: Asterisk PBX 1.8.12.0
Date: Fri, 03 Aug 2012 05:50:58 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Length: 0
<--- SIP read from UDP:193.201.229.35:5060 --->
SIP/2.0 403 Forbidden
Via: SIP/2.0/UDP 37.59.239.64:5060;received=37.59.239.64;branch=z9hG4bK68689680;rport=5060
From: "asterisk" <sip:79261945604@37.59.239.64>;tag=as43eeadac
To: <sip:multifon.ru>;tag=aprqngfrt-1n7qa230000c6
Call-ID: 27d6278057fd06c8390048807e4db2a3@37.59.239.64:5060
CSeq: 102 OPTIONS
Reason: Q.850;cause=55;text="Call Terminated"<------------->
--- (7 headers 0 lines) ---
Really destroying SIP dialog '27d6278057fd06c8390048807e4db2a3@37.59.239.64:5060' Method: OPTIONS
Really destroying SIP dialog '6db054283765f29f4619f6fb348ae9a8@37.59.239.64' Method: REGISTER
Really destroying SIP dialog '61cd176b77802aad0034aff938dab2fb@37.59.239.64' Method: REGISTER
i-peak*CLI>Проблема была в скрипте!
Вот рабочий вариант#!/bin/sh
sleep 5
NUMBER=$1
echo "Channel: SIP/multifon/$NUMBER
MaxRetries: 1
RetryTime: 30
WaitTime: 30
Context: disa1
Extension: s
Priority: 1
AlwaysDelete: Yes
" > /var/spool/asterisk/tmp/$NUMBER.callmv /var/spool/asterisk/tmp/$NUMBER.call /var/spool/asterisk/outgoing/
дебажить так
asterisk -rx "core stop now"
asterisk -vvvgc
проверяете(не выключая консоль). осторожно,все звонки будут выклчены ;)
По поводу не создаёт файл,есть вероятность что он его создаёт просто asterisk успевает его обработать и удалить.
chmod o+x /etc/asterisk/scripts/callback
Вот это на случай если у астериска нет прав на выполнение
System(/etc/asterisk/scripts/callback ${CALLERID(num)} > /tmp/callbackerror 2>&1 &)
Вот это на случай ошибок в скрипте.
1.
У меня подозрение, что он не передает номер вызывающего абонента в call файл.
У Вас же есть поле Archive: Yes. Ну так и проверьте содержимое call-файлов и их статус в каталоге outgoing_done. Если в каталоге пусто, то вставьте что-то типа такого
cp /var/spool/asterisk/tmp/$NUMBER /var/spool/asterisk/tmp/$NUMBER-log
перед строкой mv /var/spool/asterisk/tmp/$NUMBER и проверьте содержимое после звонка.
2. проверьте права и владельца скрипта. владелец должен быть астериск, должно быть право на исполнение.
3. если с первыми двумя пунктами все нормально, попробуйте использовать для вызова канал Local
Channel: Local/$NUMBER@internal/n
Задан: Jul 30 '12
Просмотрен: 1,538 раз
Обновлен: Aug 04 '12
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
Он почему то не создает файл
fedorchuk (Jul 30 '12)editЛог неполный.
zzuz (Jul 30 '12)editКакой смысл от дебага SIP пакетов , если Вы ждете выполнения скрипта? Какое отношение имеет скрипт к стеку SIP ?
zzuz (Aug 3 '12)editВот я и спрашиваю, что делать и где рыть?
fedorchuk (Aug 3 '12)editСмотреть лог звонка. Конкретно смотреть лог выполнения диаплана. Не мешало бы в скрипт запихать хоть какое-либо логгирование.
zzuz (Aug 3 '12)editк сожалению не знаю как это сделать
fedorchuk (Aug 3 '12)editмой ответ ниже смотрели?
Olpag (Aug 3 '12)edit