First time here? Check out the FAQ!

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

Как запикапить автоматически переключенный по тайм-ауту из IVR звонок? Asterisk 1.2 PickUp()

1

Есть Астериск 1.2, заменить его на свежий по ряду причин ну никак невозможно. Для пикапа звонков используется комбинация *8, завязанная на Application PickUp().

Вот диалплан:

[incoming]
exten
=> s,1,Set(TIMEOUT(digit)=5)
exten
=> s,n,Set(TIMEOUT(response)=10)
exten
=> s,n,Answer()
exten
=> s,n,Wait(2)
exten
=> s,n,Background(privetstvie)
exten
=> s,n,WaitExten(7)
exten
=> 0,1,GoTo(incoming,s,1)
exten
=> t,1,Dial(SIP/100,60,tT)
exten
=> _1XX,1,Dial(SIP/${EXTEN},60,tT)
exten
=> 1234567,1,GoTo(incoming,s,1)

[internal]
include
=> outgoing
exten
=> _*8X.,1,PickUp(${EXTEN:2}@incoming)
exten
=> _1XX,1,Dial(SIP/${EXTEN},60,tT)
exten
=> _7XX,1,Dial(SIP/${EXTEN},60,tT)

Проблема следующая: звоним с города на номер 1234567, попадаем на IVR, где пользователю предлагают или ввести внутренний номер или подождать, после чего во втором случае он автоматически переадресуется на 100; так вот пикап безотказно работает, если пользователь руками набрал 100 (набираем *8100), но если его перекинуло по тайм-ауту ожидания ввода внутреннего номера, то забрать звонок никак не получается.

Контексты проверял, и в том и в том случае звонок находится в incoming.

Вот лог ошибочного пикапа.

    -- Executing Goto("SIP/1.2.2.1-081c66f0", "incoming|s|1") in new stack
   
-- Goto (incoming,s,1)
   
-- Executing Set("SIP/1.2.2.1-081c66f0", "TIMEOUT(digit)=5") in new stack
   
-- Digit timeout set to 5
   
-- Executing Set("SIP/1.2.2.1-081c66f0", "TIMEOUT(response)=10") in new stack
   
-- Response timeout set to 10
   
-- Executing Answer("SIP/1.2.2.1-081c66f0", "") in new stack
   
-- Executing Wait("SIP/1.2.2.1-081c66f0", "2") in new stack
   
-- Executing BackGround("SIP/1.2.2.1-081c66f0", "privetstvie") in new stack
   
-- Playing 'privetstvie' (language 'en')
   
-- Executing WaitExten("SIP/1.2.2.1-081c66f0", "7") in new stack
   
-- Timeout on SIP/1.2.2.1-081c66f0, going to 't'
   
-- Executing Dial("SIP/1.2.2.1-081c66f0", "SIP/100|60|tT") in new stack
   
-- Called 100
   
-- SIP/100-081bbee8 is ringing
   
-- Executing Pickup("SIP/790-081b2eb8", "100@incoming") in new stack
 
== Spawn extension (internal, *8100, 1) exited non-zero on 'SIP/790-081b2eb8'

спросил Jan 24 '11

Nubie Gravatar Nubie
46 1 1 4

обновил Jan 24 '11

2 Ответа

2

вариант

  1. поднимать через (звездочку)8 или pickup без параметров(надо чтоб вы в одной группе были).
  2. написать вот так exten => t,1,goto(100,1)
  3. или вот так exten => _*8000,1,PickUp(t@incoming)

суть проблемы в том, что по таймауту делаеться неявный гото на t. после чего пикапить надо extension t, а не 100.

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

ответил Jan 25 '11

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

обновил Jan 25 '11

Comments

И придется добавить 100,1,Dial(SIP/100,60,tT), т. к. правило маршрутизации _1XX,1,Dial(SIP/${EXTEN},60,tT) уже не не подойдет при GoTo(100,1), верно? Nubie (Jan 25 '11)edit
неверно. подойдет. в чем проблема то? будет рабоатть так же как если бы клиент набрал 100. когда клиент набирает 100 WaitExten делает неявный goto на oncoming,100,1. а 1xx это просто регексп в диалплане, чтоб не писать 100-199 отдельно. meral (Jan 25 '11)edit
Спасибо за исчерпывающие ответы. Почему-то был уверен, что для GoTo() необходимо точное совпадение с элементом и что регулярки не парсятся в этом случае. Nubie (Jan 25 '11)edit
это было бы сильно круто. вобоще неявный гото это самый используемый оператор ;) meral (Jan 26 '11)edit
0

[incoming] exten => s,1,Set(TIMEOUT(digit)=5) exten => s,n,Set(TIMEOUT(response)=10) exten => s,n,Answer()exten => s,n,Wait(2) exten => s,n,Background(privetstvie) exten => s,n,WaitExten(7) exten => s,n,Dial(SIP/100,60,tT) exten => s,n,HengUp exten => _1XX,1,Dial(SIP/${EXTEN},60,tT) exten => 1234567,1,GoTo(incoming,s,1)

Сделай вот так и всё заработает....

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

ответил Jan 24 '11

amonra Gravatar amonra flag of Ukraine
2301 26 13 65
http://lantec.ua/

обновил Jan 24 '11

Comments

Идею понял, не отправлять на timeout extension, попробую. А про суть проблемы не поясните? Nubie (Jan 24 '11)edit

Ваш ответ

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 ленту новостей

Статистика

Задан: Jan 24 '11

Просмотрен: 803 раз

Обновлен: Jan 25 '11

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