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

dial и опции

0

У меня asterisk 11.6.0 и есть проблема со сбросом звонка. То есть я делаю исходящий звонок, кладу трубку до того, как вызываемый абонент её подымет и ожидаю что у меня продолжится выполнение макроса, но эта штука не происходит. Вот так я делаю dial: exten = s,n,Dial(${TRUNK}/${OUTPREFIX}${CALLNUMBER},,gTWFM(SetAnswerTime^${UNIQUEIDOUT})) Я уповал на опцию F, но как оказалось она влияет лишь на тот сценарий, когда вызываемый абонент кладёт трубку. Так например на asterisk 1.4.42 я делаю dial вот так: exten = s,n,Dial(${TRUNK}/${OUTPREFIX}${CALLNUMBER}${TRUNKOPTIONS},,gTWM(SetAnswerTime^${UNIQUEIDOUT})) и тут всё отрабатывает корректно. И там и там dialstatus я обрабатываю одинаково. А всё я это затеял ради cdr, так как в моей текущей реализации некорректно отрабатывает mixmonitor, соответсвенно такие звонки в базу не попадают .

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

спросил 2014-12-23 08:46:22 +0400

trooper23 Gravatar trooper23
1 2

Comments

Я и обрабатываю в h. Вот так

exten = h,1,NoOp(Drop calls. DialStatus is ${DIALSTATUS}) exten = h,n,GotoIf($[${DIALEND}="1"]?exit,1) exten = h,n,Set(CLIENTDROPCALL=1) exten = h,n,Set(DIALSTATUS=${IF($["${DIALSTATUS}"=""]?NOANSWER:${DIALSTATUS})}) exten = h,n,Goto(s,AfterDial)

Но он на этот обработчик не переходит, нашёл опцию e(Execute the h extension for peer after the call ends), по идеи она должна переводить его на h, но она не переводит, в чём может быть подвох?

trooper23 ( 2014-12-23 10:55:14 +0400 )редактировать

Экстеншн h должен находится в нужном контексте, а он может отличаться от контекста в котором находится Dial(). Чтобы определить точно, нужно видеть, что происходит в консоле.

eyt5297 ( 2014-12-23 14:23:41 +0400 )редактировать

может лучше пофиксить ваш монитор или сдр?

meral ( 2014-12-23 22:44:15 +0400 )редактировать

пока я не придумал как затолкать этот звонок в h сделал по другому. Включил родную сдр (сейчас у меня своя сдр) и сделал другую форму. Родная сдр начинает свою запись даже если звонок не дошёл до конца dialplan, а сейчас стоит задача всего лишь о выводе статистике(хотя предыдущая форма отчёта много совершеннее и не хочется от неё отказываться)

trooper23 ( 2014-12-24 12:10:31 +0400 )редактировать

вам надо в таблице cdr сделать поле monfile и ПЕРЕД dial делать CDR(monfile)=кто-звонилкудаnot_answered. потом вешаете скриптик который поверяет наличие новых cdr и переименовывает файл. все крайне просто и везде так делается.

meral ( 2014-12-24 20:32:19 +0400 )редактировать

meral, если Вы внимательно прочли макрос, то я cdr не использую как таковую. Я её включил только на тот момент, пока не работает то, что я хочу

trooper23 ( 2014-12-25 08:14:56 +0400 )редактировать

я вам написал как правильно с точки зрения архитектуры делать, кстати, cdr могут почти в любом формате и наборе полей получены. но вы можете дальше ловить грабли на своем велосипеде. ваша ссылка вообще не читается. а "атрибуты" очень просто и быстро запихиваются в стандартный cdr. если нехватает accountcode/amaflags/userfields, то добавляете поля по вкусу.

meral ( 2014-12-25 12:36:26 +0400 )редактировать

trooper23, выложить надо не макрос, а то что происходит в консоли

eyt5297 ( 2014-12-25 12:58:48 +0400 )редактировать

1 Ответ

0

Продолжить обработку звонка в диалплане с помощью опций в Dial() можно только в том случае, если хотя бы одна из сторон еще не разорвала соединение. Поэтому дальнейшую обработку звонка лучше делать в контексте через экстеншн h.

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

ответил 2014-12-23 09:55:45 +0400

eyt5297 Gravatar eyt5297
51 9 1 9
http://vk.com/asterisktom...

обновил 2014-12-23 13:58:21 +0400

Comments

не хотя бы одна, а тольк если А не разорвала. если А разорвет дальеш уже не пойдет.

meral ( 2014-12-23 22:38:42 +0400 )редактировать

meral, вы не правы, продолжить движение по диалплану можно если хотя бы одна из сторон не разорвала соединение. За это отвечают опции g и F.

eyt5297 ( 2014-12-25 12:56:44 +0400 )редактировать

а я всегда не прав. я ж не работаю с * совсем. опция F делает трансфер и начинает новый канал. о чем написано в хелпе. соответсвенно возникает много приколов с variables и именем канала.

meral ( 2014-12-25 13:36:28 +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 ленту новостей

Статистика

Задан: 2014-12-23 08:46:22 +0400

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

Обновлен: Dec 23 '14

Похожие вопросы:

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