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

dialplan вываливается с ошибкой

0
[TestUNISTIM]
exten => _X.,1,Dial(SIP/SVD/${EXTEN})

[AMITest]
exten => 111,1,Answer
same => n,Playback(/var/lib/asterisk/1)
same => n,Festival('${zad}')
same => n,Playback(/var/lib/asterisk/2)
same => n,NoOp(${EXTEN} ${DIALSTATUS} ${CDR(duration)} ${ANSWEREDTIME})
exten => h,1,NoOp( ${CDR(duration)} )
exten => h,2,GotoIf($["${CDR(duration)}" = "10"]?4,3)
exten => h,3,Goto(TestUNISTIM,${numzhopa},1)


-- Executing [89047665033@TestUNISTIM:1] Dial("Local/89047665033@TestUNISTIM-2af2;2", "SIP/SVD/89047665033") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/SVD/89047665033
-- SIP/SVD-0000001b is ringing
-- SIP/SVD-0000001b answered Local/89047665033@TestUNISTIM-2af2;2
   > Channel Local/89047665033@TestUNISTIM-2af2;1 was answered.
-- Executing [111@AMITest:1] Answer("Local/89047665033@TestUNISTIM-2af2;1", "") in new stack
-- Executing [111@AMITest:2] Playback("Local/89047665033@TestUNISTIM-2af2;1", "/var/lib/asterisk/1") in new stack
-- <Local/89047665033@TestUNISTIM-2af2;1> Playing '/var/lib/asterisk/1.slin' (language 'en')
== Spawn extension (TestUNISTIM, 89047665033, 1) exited non-zero on 'Local/89047665033@TestUNISTIM-2af2;2'
== Spawn extension (AMITest, 111, 2) exited non-zero on 'SIP/SVD-0000001b'
-- Executing [h@AMITest:1] NoOp("SIP/SVD-0000001b", " 4 ") in new stack
-- Executing [h@AMITest:2] GotoIf("SIP/SVD-0000001b", "0?4,3") in new stack
-- Executing [h@AMITest:3] Goto("SIP/SVD-0000001b", "TestUNISTIM,89047665033,1") in new stack
-- Goto (TestUNISTIM,89047665033,1)
-- Executing [89047665033@TestUNISTIM:1] Dial("SIP/SVD-0000001b", "SIP/SVD/89047665033") in new stack
== Using SIP RTP TOS bits 184
== Using SIP RTP CoS mark 5
-- Called SIP/SVD/89047665033
== Spawn extension (TestUNISTIM, 89047665033, 1) exited non-zero on 'SIP/SVD-0000001b'

Ошибка == Spawn extension (TestUNISTIM, 89047665033, 1) exited non-zero on 'SIP/SVD-0000001b. Все вроде правильно передалось?

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

спросил 2013-02-04 17:04:42 +0400

ruslan.zabirov Gravatar ruslan.zabirov flag of Russian Federation
304 8 8

2 Ответа

2

Нельзя звонить , когда канал завершается. В данном случае Вы обрабатываете вызов в экстеншене завершения канала, что недопустимо для команды Dial. Если вам нужно инициализировать вызов по завершению другого , то воспользуйтесь Originate схемой через AMI или через call файлы.

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

ответил 2013-02-04 17:25:46 +0400

zzuz Gravatar zzuz flag of Russian Federation
6744 2 6 69
http://line24.ru/

Comments

1

вернее звонить можно если успеете в две секунды, только через две секунду он все равно упадет. делайте вот так http://www.voip-info.org/wiki/view/Asterisk+auto-dial+out

meral ( 2013-02-04 18:07:38 +0400 )редактировать
1

2 секунды не получится , потому как класс звонка уже вызвал деструктор. Он просто не запустится . Можно запустить вызов при хенгапе только если кладется не основной канал , а тот который был порожден позже. Тогда дуструктор вторичного канала отработает отдав переадресованный вызов основному каналу без запуска деструтора.

zzuz ( 2013-02-04 20:31:18 +0400 )редактировать

спасибо. очень помогло ваше разъяснение.

ruslan.zabirov ( 2013-02-04 21:36:45 +0400 )редактировать

>>потому как класс звонка уже вызвал деструктор

эээ... если мне не изменяет мой склероз, в астериске нет никаких классов в коде ибо написан он на C...

switch ( 2013-02-04 21:40:17 +0400 )редактировать

zzuz, вызов то по завершении идет, п.с(по списку через AMI Originate), необходимо заставить абонента взять трубку и услышать первые 5 секунд записи, но перезванивать не больше 5 раз, пробывал gotoif, while, но что то не получилось проверить условие, больше 2х раз, потом как говорят завершится канал

ruslan.zabirov ( 2013-02-04 21:52:31 +0400 )редактировать

все там работает пару секунд. ну чисто на практике. но вообще лучше конечно только евент делат и внешним скриптом обрабатывать.

meral ( 2013-02-04 22:02:04 +0400 )редактировать
1

что мешает сделать так?

[AMITest]
exten => 111,1,Answer
same => n,Playback(/var/lib/asterisk/1)
same => n,Festival('${zad}')
same => n,Playback(/var/lib/asterisk/2)
same => n,NoOp(${EXTEN} ${DIALSTATUS} ${CDR(duration)} ${ANSWEREDTIME})
same => n,NoOp( ${CDR(duration)} )
same => n,GotoIf($["${CDR(duration)}" = "10"]?4,3)
same => n,Goto(TestUNISTIM,${numzhopa},1)
ссылка удалить спам редактировать

ответил 2013-02-04 17:23:37 +0400

switch Gravatar switch
8334 11 7 91
http://lynks.ru/

обновил 2013-02-04 21:59:13 +0400

Comments

спасибо большое.

ruslan.zabirov ( 2013-02-04 21:37:20 +0400 )редактировать

== Spawn extension (TestUNISTIM, 89047665033, 1) exited non-zero on 'Local/89047665033@TestUNISTIM-3e99;2' == Spawn extension (AMITest, 111, 2) exited non-zero on 'SIP/SVD-00000022'

ruslan.zabirov ( 2013-02-04 22:13:47 +0400 )редактировать

проверяйте контекст TestUNISTIM, там dial вообще проходит?

switch ( 2013-02-04 22:16:32 +0400 )редактировать

Да. дозванивается беру трубку, переходит на другой контекст и когда в этом же экстейшене пытаюсь отловить длительность не получается. потому что когда человек сбрасывает то дальше обработка экстеншена не проходит.

ruslan.zabirov ( 2013-02-04 22:18:50 +0400 )редактировать
1

изучайте опции команды DIAL: g: Proceed with dialplan execution at the next priority in the current extension if the destination channel hangs up.

switch ( 2013-02-04 22:21:45 +0400 )редактировать
1

Потому что отлавливаете длительность через функцию CDR, а она будет иметь нужные параметры ТОЛЬКО после завершения звонка. Читайте хотя бы встроенную в астериск документацию по командам:

   ${DIALEDTIME}: This is the time from dialing a channel until when it is disconnected.
   ${ANSWEREDTIME}: This is the amount of time for actual call.
switch ( 2013-02-04 22:24:39 +0400 )редактировать

извините пожалуйста. спасибо, убежал читать, низкий поклон и + ко всему

ruslan.zabirov ( 2013-02-04 22:34:49 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

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

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

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

Статистика

Задан: 2013-02-04 17:04:42 +0400

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

Обновлен: Feb 04 '13

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