Добрый день. Понял, что не корректно сформулировал вопрос в прошлый раз, по-этому решил попытаться вновь. Мне нужно добавить кастомные поля в таблицу cdr, в которые будут записываться IP человека, который позвонил и IP человека, который ответил. Делаю я это следующим образом:
sql> ALTER TABLE asterisk.cdr ADD COLUMN callerIP varchar(15);
sql> ALTER TABLE asterisk.cdr ADD COLUMN operatorIP varchar(15);
CLI> module reload cdr_adaptive_odbc.so
Далее. В extensions_custom.conf добавляю:
[from-pstn-custom]
exten => _X.,1,Answer
exten => _X.,n,Set(CDR(callerIP)=${SIPPEER(104,ip)})
exten => _X.,n,Set(CDR(operatorIP)=${SIPPEER(104,ip)})
CLI> asterisk -r
CLI> dialplan reload
При звонке корректно записывается IP 104-го sip'а в таблицу. Но как мне вместо хардкодного 104-го номера получать реальные IP? В прошлой теме получил рекомендацию смотреть в сторону ${SIPCHANINFO(peerip)} и ${CHANNEL(peerip)}, но
exten => _X.,n,Set(CDR(operatorIP)=${SIPCHANINFO(peerip)})
возвращает мне ip адрес транка, а не extension'а. В общем, надеюсь кто нибудь сможет мне помочь.
...
exten => _X.,n,Set(CDR(operatorIP)=${CHANNEL(recvip)})
...
И искомый IP у Вас в кармане.
Екстеншен у вас будет КУДА позвонили. соответвенно вместо 104 подставляете ${EXTEN}
вообще это очень все от диалплана зависит.
в случае с группами ситуация усложняется, надо использовать макросы по ответу екстеншена.
зы то что вам надо адреса говорит о неверной постановке задачи. вас не должны волновать адреса, только транки и екстеншены.
"то что вам надо адреса говорит о неверной постановке задачи." полностью поддерживаю :)
bandys ( 2013-11-26 10:14:05 +0400 )редактироватьЗадан: 2013-11-26 08:15:25 +0400
Просмотрен: 760 раз
Обновлен: Nov 27 '13
ip телефоны логинятся, нет звонков
Asterisk должен отвечать на двух IP адресах
Совместимость Gigaset A510 IP и Asterisk
подскажите IP телефон для ресепшена
"Внешний" IP в качестве адреса сервера у "внутреннего" клиента.
Частая смена IP у SIP-клиентов
Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании
Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией
GNU GPL.
meral спасибо за ответ. ${EXTEN} вместо 104 возвращает номер транка. Я использую эластикс. По звонку на номер, включается IVR после чего воодится номер оператора и устанавливается связь. У меня такое подозрение, что я просто не верный контекст использую.
Andrey ( 2013-11-26 08:36:00 +0400 )редактироватьИзвините за вопрос, а зачем вам это? Действительно интересно.
bandys ( 2013-11-26 10:14:32 +0400 )редактироватьМое начальство хочет максимально разгрузить call-центр. Для этого было предложено решение с html-страничкой и маленьким скриптом на ajax'е, который будет дергать специальный сервлет на сервере, который будет возвращать всю информацию о клиенте в момент установления связи с оператором. Иными словами, в тот момент, когда оператор скажет "алло", на его странице в браузере уже должна появиться вся необходимая информация. Такова поставленная передо мной задача.
Andrey ( 2013-11-26 10:56:34 +0400 )редактироватьну так из макроса по ответу всю информацию ложите. все равно непонятно чем оператору поможет АДРЕС ОПЕРАТОРА. он его не знает чтоли?
meral ( 2013-11-26 12:10:03 +0400 )редактироватькогда 104 исходящий номер показывает, обычно CALLERID(num) или CDR(src) показывает кто звонил. но в КЦ может быть что угодно. и мы вам тут сколько б не гадали не поможем. вот читайте и смотрите что у вас получается http://asterisk-support.ru/question/38386/kak-poniat-chto-proiskhodit-na-asteriske/
meral ( 2013-11-26 12:12:07 +0400 )редактироватьпрошу прощения за глупый вопрос, но что такое КЦ? За линк спасибо.
Andrey ( 2013-11-26 14:03:24 +0400 )редактироватьколлцентр,не?
meral ( 2013-11-26 14:33:03 +0400 )редактироватьиз того, что вы описали, и учитывая, что у вас софтфоны, открою вам тайну. В сипе можно передавать не только голос, но к примеру и URL. Кто ответил, тот URL и получил. "максимально разгрузить call-центр" это шедеврально :)
bandys ( 2013-11-26 16:47:02 +0400 )редактировать