Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Callback не работает, почему? [закрыт]

0

Добрый день, Подскажите что нет так? Мучусь уже 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.call

mv /var/spool/asterisk/tmp/$NUMBER.call /var/spool/asterisk/outgoing/

спросил Jul 30 '12

fedorchuk Gravatar fedorchuk
309 18 3 11

обновил Aug 3 '12

Comments

Он почему то не создает файл

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

3 Ответа

0

дебажить так

asterisk -rx "core stop now"

asterisk
-vvvgc

проверяете(не выключая консоль). осторожно,все звонки будут выклчены ;)

ссылка удалить спам редактировать

ответил Jul 30 '12

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/
0

По поводу не создаёт файл,есть вероятность что он его создаёт просто asterisk успевает его обработать и удалить.

chmod o+x /etc/asterisk/scripts/callback

Вот это на случай если у астериска нет прав на выполнение

System(/etc/asterisk/scripts/callback ${CALLERID(num)} > /tmp/callbackerror 2>&1 &)

Вот это на случай ошибок в скрипте.

ссылка удалить спам редактировать

ответил Jul 30 '12

kasper Gravatar kasper
305 3 10

Comments

сделал как вы советовали но так и не понял есть ошбки в скрипте или нет....

fedorchuk (Aug 2 '12)edit

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

zzuz (Aug 2 '12)edit
0

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
ссылка удалить спам редактировать

ответил Aug 3 '12

Olpag Gravatar Olpag
2024 3 6 30

Comments

и уберите из своего вопроса совершенно не нужные логи SIP пакетов OPTIONS, REGISTER... лишний мусор.

Olpag (Aug 3 '12)edit

Закладки и информация

Добавить закладку
1 закладка

подписаться на rss ленту новостей

Статистика

Задан: Jul 30 '12

Просмотрен: 1,538 раз

Обновлен: Aug 04 '12

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.