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

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/

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

спросил 2012-07-30 15:24:13 +0400

fedorchuk Gravatar fedorchuk
283 13 2 11

обновил 2012-08-04 00:43:19 +0400

Comments

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

fedorchuk ( 2012-07-30 15:25:25 +0400 )редактировать

Лог неполный.

zzuz ( 2012-07-30 17:14:21 +0400 )редактировать

Какой смысл от дебага SIP пакетов , если Вы ждете выполнения скрипта? Какое отношение имеет скрипт к стеку SIP ?

zzuz ( 2012-08-03 10:47:19 +0400 )редактировать

Вот я и спрашиваю, что делать и где рыть?

fedorchuk ( 2012-08-03 15:55:41 +0400 )редактировать

Смотреть лог звонка. Конкретно смотреть лог выполнения диаплана. Не мешало бы в скрипт запихать хоть какое-либо логгирование.

zzuz ( 2012-08-03 17:33:03 +0400 )редактировать

к сожалению не знаю как это сделать

fedorchuk ( 2012-08-03 19:34:50 +0400 )редактировать

мой ответ ниже смотрели?

Olpag ( 2012-08-04 00:22:12 +0400 )редактировать

3 Ответа

0

дебажить так

asterisk -rx "core stop now"

asterisk -vvvgc

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

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

ответил 2012-07-30 18:17:10 +0400

meral Gravatar meral flag of Ukraine
21228 23 18 169
http://pro-sip.net/
0

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

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

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

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

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

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

ответил 2012-07-30 19:36:55 +0400

kasper Gravatar kasper
305 3 10

Comments

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

fedorchuk ( 2012-08-03 00:35:56 +0400 )редактировать

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

zzuz ( 2012-08-03 00:39:37 +0400 )редактировать
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
ссылка удалить спам редактировать

ответил 2012-08-03 18:16:00 +0400

Olpag Gravatar Olpag
1884 3 4 29

Comments

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

Olpag ( 2012-08-03 18:19:48 +0400 )редактировать

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

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

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

Статистика

Задан: 2012-07-30 15:24:13 +0400

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

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

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