First time here? Check out the FAQ!

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

отслеживания дозвона из call файла

1

Всем привет, есть один вопрос который думаю как решить. Задача: создается call файл из скрипта, call файл вида

Channel: Local/$number@from-internal
Callerid: 222222
MaxRetries: 2
RetryTime: 40
Context: work
Extension: s
Set: __sp=custom/menu/123
Set: __td=nz
Archive: Yes

если после 2 звонков до абонента дозвониться не получилось то в запускался бы shel скрипт. У меня есть пару идей но они больно сложно ватые, ожет подскажите как это проще реализовать? контекст work выглядит вот так:

exten => s,1,Answer ; отвечаем
exten
=> s,n,noop(${sp})
exten
=> s,n,noop(${td})
exten
=> s,n,System(/var/spool/asterisk/tmp/tdpz ${td})
exten
=> s,n,Set(TIMEOUT(response)=30)
exten
=> s,n(naberite),Background(${sp})
exten
=> s,n,WaitExten(10)
exten
=> s,n,GotoIf($[${numTries} = 2]?s,ha)
exten
=> 1,1,Set(numTries=$[${numTries}+1])
exten
=> 1,2,Goto(s,naberite)
exten
=> 2,1,Queue(300,t,,,210)
exten
=> 3,1,System(/var/spool/asterisk/tmp/tdcz ${td})
exten
=> 3,2,Playback(/var/lib/asterisk/sounds/custom/menu/otkaz)

exten
=> i,1,GotoIf($[${numTries1} = 2]?s,ha)
exten
=> i,n,Playback(pbx-invalid)
exten
=> i,n,Set(numTries1=$[${numTries1}+1])
exten
=> i,n,Goto(s,naberite)

спросил Oct 4 '11

romariosar Gravatar romariosar flag of Russian Federation
588 93 11 44
http://www.webunix.ru/

2 Ответа

1

можно так:

  • в callfile добавляете переменную id звонка (или DST использовать в качестве ID)
  • встраиваете в контекст from-internal свою логику после команды Dial(), которая делает следующее:
  • при каждом вызове инкрементируете счетчик в базе астериска ключ типа dialout/id функцией DB(), или используя коннектор к mysql или другой базе.
  • далее в диалплане читаете этот ключ и если он равен двум, командой System запускаете нужный вам шел-скрипт.
ссылка удалить спам редактировать

ответил Oct 4 '11

asteriskguru Gravatar asteriskguru
1160 4 5 21
http://www.asteriskguru.r...

обновил Oct 4 '11

0

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

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

ответил Oct 4 '11

um2010 Gravatar um2010
2056 70 13 55

Comments

это я уже продумал но на существующей сисеме это сделать достаточно геморно, так что думаю можт есть какие нибудь другие варианты. romariosar (Oct 4 '11)edit
Использовать БД астериска и создать счетчик - многа ума не надо. В вашем случае реализовывйте его в контексте from-internal zzuz (Oct 4 '11)edit
а как я его туда пропишу, если звонок не пройдет то звонок не перейдет в нужный контекст и там нечего не случится. romariosar (Oct 4 '11)edit
ключевой момент - это прошедшие звонки помечать как отвеченные, остальные - остались без ответа. Всё, что без ответа в кроне (к примеру) скрипт отработает um2010 (Oct 4 '11)edit
звонок сначала звонит по from-internal , при ответе переходит в work. тут и так ясно , что контролировать и учитывать звонки надо в from-internal . zzuz (Oct 4 '11)edit
написал логику на bash, вроде все работает. romariosar (Oct 5 '11)edit
Нормальный подход. zzuz (Oct 5 '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 ленту новостей

Статистика

Задан: Oct 4 '11

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

Обновлен: Oct 04 '11

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