First time here? Check out the FAQ!

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

В какой переменной содержится номер попытки дозвона callback'а?

0
<u>Asterisk 1.6
Создаю call file:
Channel: LOCAL/123456@context/n
MaxRetries: 10
RetryTime: 10
WaitTime: 30
Context: callback
Extension: 123
Priority: 1

После начала дозвона туда дописывается следущее:

StartRetry: 2862 1 (1346937346)
DelayedRetry: 2862 0 (1346937356)
DelayedRetry: 2862 0 (1346937366)
EndRetry: 2862 1 (1346937367)
StartRetry: 2862 2 (1346937387)
EndRetry: 2862 2 (1346937388)
StartRetry: 2862 3 (1346937408)
DelayedRetry: 2862 2 (1346937418)

В "StartRetry: 2862 3 (1346937408)" число 3 - номер попытки дозвона. Вопрос - как этот номер получить из asterisk'a?

Ну и просто интересно: а что это за загадочное число: 2862, и что означает второе число в DelayedRetry?

Всем спасибо за ответы. Свое решение:
Ввел 2 переменные: кол-во неудачных попыток, имя файла.
Далее в диалплане:

exten => failed,n,Set(Retry_NUM=${MATH(${Retry_NUM}+1)})<br>
exten
=> failed,n,System(echo "Set: Retry_NUM=${Retry_NUM}" >>  /var/spool/asterisk/outgoing/${Call_File})

Команда System дописывает переменную в конец файла. А астериск смотрит посл. добавленную переменную. ${Retry_NUM} всегда отображает верную информацию.

Время файла - важная характеристика колл файла, т.к. именно в нем находиться время следущей попытки дозвона. Но! В данном способе изменение времени - не проблема, т.к. оно моментально меняется астериском после завершение контекста failed (EndRetry).

спросил Sep 7 '12

Den1s0k Gravatar Den1s0k
11 5 5

обновил Sep 10 '12

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

Comments

замечательное решение.правда есть проблемка. это изменяет время изменения файла и + создает интерпретатор каждый раз. но вам это не важно видимо.

meral (Sep 10 '12)edit

конечно не проблема. это как разрезать руку человеку каждый раз когда вам надо его пометить и говорить что это не пробелма. оно ж заживает до ледуюещего раза. короче, рабоатет - радуйтесь. перестанет работать - не пишите нам вопросы,ок? астериск счиатет что эти файлы НЕ меняются в процессе работы. если вы его разачаровываете - то это ваши пробелмы.

meral (Sep 10 '12)edit

Автор из людей , которые трусы через голову одевают )

zzuz (Sep 10 '12)edit

3 Ответа

3

нет такой переменной в диалплане.

как посоветовали ранее считать надо в диалплане, только самому (agi/odbc/astdb по вкусу), отлавливая неудачи в exten fail.

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

ответил Sep 7 '12

komrad123 Gravatar komrad123
3810 5 3 44

Comments

Не путайте переменные в диаплане и переменные в канале вызова.

zzuz (Sep 7 '12)edit

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

komrad123 (Sep 7 '12)edit

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

zzuz (Sep 7 '12)edit

а нет там еще 'другого' канала. fail возникает при создании первого и единственного на тот момент канала. И подход с подсчетом попыток в fail вполне себе рабочий.

komrad123 (Sep 7 '12)edit
1

Считать количество дозвонов лучше в контексте context через функции диаплана любым из множества способов. Выявить все переменные канала поможет утилита DumpChan().

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

ответил Sep 7 '12

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/
0

первое число - случайное.

второе число - номер попытки.

delayed - значит попытка еще идет. соответвенно номер попытки 0.

третье число - время в фомрате unixtimestamp.

самый простой способ посмотреть текущую попытку такой

1) в файл добавляем

Set: filename=123456.call

(соответсвенно именуем файл)

в астериске смотрим

   cat /var/spool/asterisk/${filename}|grep Start|tail -n 1|cut -f 3

например в аги скрипте или делаем скрипт который ложит это в файл а потом readfile.

но правильно делается не так. если вам важно попытки - ставьте retry=1 и делайте внешний скрипт который создает попытки самостоятельно(и выставляет переменные).

ну или вы всегда можете дописать spool чтоб он эту попытку порписывал в переменную.

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

ответил Sep 8 '12

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

обновил Sep 8 '12

Ваш ответ

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)!
[скрыть предварительный просмотр]

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

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

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

Статистика

Задан: Sep 7 '12

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

Обновлен: Sep 10 '12

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