First time here? Check out the FAQ!

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

Как получить номер телефона, ответившего на вызов?

0

Многоканальная линия, вызов падает на экстенш s, звонят сразу куча телефонов, в cdr получаю информацию о том, кто звонил (все верно - номер) и куда (s), хочу получить информацию о том, какой номер ответил на вызов.

спросил Apr 19 '13

thunderamur Gravatar thunderamur
444 70 12 39

4 Ответа

1

проверить ${DIALEDPEERNUMBER} для Dial или ${MEMBERINTERFACE} для Queue

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

ответил Apr 19 '13

komrad123 Gravatar komrad123
3810 5 3 44

Comments

К сожалению в переменной пусто.

thunderamur (Apr 22 '13)edit

Тебе тоже спасибо, за упоминание ${DIALEDPEERNUMBER}

thunderamur (Apr 24 '13)edit
0

Зависит от провайдера. Датагрупп, например, посылает оригинальный номер в SIP-заголовках, Sitel - по-другому раньше извращался. Пример:

Set(DNID=${SIP_HEADER(To):5});
Set(DNID=${CUT(DNID,@,1)});
goto mycontext,${DNID},1;

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

ответил Apr 19 '13

rad Gravatar rad flag of Ukraine
106 5
http://www.pearlpbx.com/

обновил Apr 19 '13

Comments

ему надо не DNID а extension который ответил. перечитайте.

meral (Apr 19 '13)edit

А я его понял, что он хочет узнать именно номер Б.

rad (Apr 20 '13)edit
0

используйте SIP-заголовки. У меня приблизительно так:

[dg]

exten => s,1,Noop(Fixing DID using information from SIP TO header)

exten => s,n,Set(pseudodid=${SIP_HEADER(To)})

exten => s,n,Set(pseudodid=${CUT(pseudodid,@,1)})

exten => s,n,Set(pseudodid=${CUT(pseudodid,:,2)})

exten => s,n,Set(dialednumber=${pseudodid:-7})

ну и в переменной ${dialednumber} находится номер на который реально позвонили. Думаю что в Вашем случае будет приблизительно так же.

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

ответил Apr 19 '13

artefackt Gravatar artefackt flag of Ukraine
1 3 5

Comments

Попробую :)

thunderamur (Apr 22 '13)edit

получаю номер куда звонят, т.е. внешний номер, а мне нужно получить внутрений номер, который ответил на вызов

thunderamur (Apr 23 '13)edit
0

дело в том, что там несколько каналов и несколько cdr. соответсвенно один на s а остальные на екстеншены. можно написать скрипт который будет искать соответвие отвеченого звонка по времени ответа и cid и апдейтить основную запись.

сложность средняя.

либо переписать диалплан, выставлять переменную во внешнем канале(сложность высокая)

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

ответил Apr 19 '13

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

Comments

2-й вариант вроде лучше, покажи куда читать про переменную во внешнем канале :)

thunderamur (Apr 23 '13)edit

функция MASTER_CHANNEL либо DB либо через AMI. надо пробывать,говорю сложность высокая.

meral (Apr 23 '13)edit

Сложность заключается в том, что информация о том, кто взял трубку поступает после отработки Dial(), а данные для CDR я выбираю и пишу до? AMI, эт да, не работал ещё напрямую.

Что думаешь про возможность загнать всех в очередь и попробовать ${MEMBERINTERFACE} Может сработать?

thunderamur (Apr 23 '13)edit
1

все правильо. вы должны выставить внешнюю переменную в макросе по ответу. но это неточно,надо пробывать. за вас попробывать?любой каприз за ваши деньги. MEMBERINTERFACE как и DIALLERPEER будет доступно после конца звонка. тоесть по h екстеншену. можно и так. но все равно пробывать надо.

meral (Apr 23 '13)edit

Ну зачем же так... Я же не просил пробовать за меня, я сделал предположение и спросил о его теоритической возможности, как у более опытного в этом деле коллеги.

В итоге, ты напомнил про h, что вылилось в решение проблемы

После Dial()

Добавляем

exten => h,1,Set(CDR(dialedpeernumber)=${DIALEDPEERNUMBER})

Все, имеем в базе инфу, о том, кто ответил на звонок. Решение низкой сложности.

Спасибо.

thunderamur (Apr 24 '13)edit

сложность средняя. надо помнить про h ;) и кстати не всегда почемуто отрабатывает.

meral (Apr 24 '13)edit

возможно оно не всегда отрабатывает там, где перед h, нет Hangup?

thunderamur (Apr 24 '13)edit

оно не всегда отрабатывает в некоторых странных случаях + не отрабатывает когда include вообще никогда.

meral (Apr 25 '13)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 ленту новостей

Статистика

Задан: Apr 19 '13

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

Обновлен: Apr 20 '13

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

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