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

В какой переменной содержится номер попытки дозвона 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).

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

спросил 2012-09-07 10:36:22 +0400

Den1s0k Gravatar Den1s0k
11 5 4

обновил 2012-09-10 14:47:33 +0400

zzuz Gravatar zzuz flag of Russian Federation
6764 2 6 70
http://line24.ru/

Comments

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

meral ( 2012-09-10 12:40:47 +0400 )редактировать

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

meral ( 2012-09-10 13:21:57 +0400 )редактировать

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

zzuz ( 2012-09-10 14:48:03 +0400 )редактировать

3 Ответа

3

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

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

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

ответил 2012-09-07 12:02:17 +0400

komrad123 Gravatar komrad123
3780 5 3 42

Comments

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

zzuz ( 2012-09-07 12:15:47 +0400 )редактировать

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

komrad123 ( 2012-09-07 12:29:23 +0400 )редактировать

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

zzuz ( 2012-09-07 12:53:09 +0400 )редактировать

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

komrad123 ( 2012-09-07 13:12:15 +0400 )редактировать
1

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

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

ответил 2012-09-07 10:55:38 +0400

zzuz Gravatar zzuz flag of Russian Federation
6764 2 6 70
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 чтоб он эту попытку порписывал в переменную.

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

ответил 2012-09-08 10:28:10 +0400

meral Gravatar meral flag of Ukraine
21477 24 20 170
http://pro-sip.net/

обновил 2012-09-08 10:29:02 +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)!
[скрыть предварительный просмотр]

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

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

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

Статистика

Задан: 2012-09-07 10:36:22 +0400

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

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

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