Страница 2 из 2

Re: Смена DID в CEL

Добавлено: 24 дек 2020, 14:49
ded

Код: Выделить всё

[from-pstn-custom]
exten => 0007557777,1,Set(CALLERID(DNID)=88007557777)
exten => 0007557777,1,Set(__FROM_DID=88007557777)
exten => 0007557777,n,Goto(from-trunk,${EXTEN},1)
Для таой конструкции должен быть входящий маршрут с DID = 88007557777 в вэб-оболочке.

Всё остальное можно увидеть в консоли.

Re: Смена DID в CEL

Добавлено: 25 дек 2020, 17:39
skynetyar
Спасибо! С таким кодом происходит зацикливание

Код: Выделить всё

Goto (from-trunk,0007557777,1)
    -- Executing [0007557777@from-trunk:1] Set("SIP/88007550777-00004e84", "CALLERID(DNID)=88007557777") in new stack
    -- Executing [00075577773@from-trunk:2] Goto("SIP/88007550777-00004e84", "from-trunk,0007557777,1") in new stack
    -- Goto (from-trunk,0007557777,1)
    -- Executing [0007557777@from-trunk:1] Set("SIP/88007550777-00004e84", "CALLERID(DNID)=88007557777") in new stack
    -- Executing [0007557777@from-trunk:2] Goto("SIP/88007550777-00004e84", "from-trunk,0007557777,1") in new stack
    -- Goto (from-trunk,0007557777,1)
    -- Executing [0007557777@from-trunk:1] Set("SIP/88007550777-00004e84", "CALLERID(DNID)=88007557777") in new stack
    -- Executing [0007557777@from-trunk:2] Goto("SIP/88007550777-00004e84", "from-trunk,0007557777,1") in new stack
    -- Goto (from-trunk,0007557777,1)
Сделал так

Код: Выделить всё

exten => 0007557777,1,Set(CALLERID(DNID)=88007557777)
exten => 0007557777,1,Set(__FROM_DID=88007557777)
exten => 0007557777,n,Goto(from-trunk,${EXTEN},1)
Но ${EXTEN} все равно равен 0007557777, тогда сделал явное указание номера так

Код: Выделить всё

exten => 0007557777,1,Set(CALLERID(DNID)=88007557777)
exten => 0007557777,1,Set(__FROM_DID=88007557777)
exten => 0007557777,n,Goto(from-trunk,88007557777,1)
Все стало заруливаться туда куда нужно, но что самая беда ради которой все это делается в CEL пишеться все равно ${EXTEN} равный 0007557777

Re: Смена DID в CEL

Добавлено: 25 дек 2020, 18:03
ded
То что зацикливаетя можно было проверить по инклюдам, кто куда вкладывается:

Код: Выделить всё

CLI> dialplan show from-trunk
[ Context 'from-trunk' created by 'pbx_config' ]
  Include =>        'from-pstn'     
Не видя всего кода диал-плана, маршрутов, ориентируясь по кускам, которые вы публикуете - трудно что-либо предложить ещё.
У вас уже достаточно опыта, чтобы а) не писать это в раздел Вопросы новичков, и б) самостоятельно решить вопрос.

Re: Смена DID в CEL

Добавлено: 27 дек 2020, 21:39
murr
Как вариант.
DELIMITER $$
CREATE TRIGGER `cel_before_insert` BEFORE INSERT ON `cel` FOR EACH ROW BEGIN
IF (NEW.cid_dnid= '45633') THEN SET NEW.cid_dnid= '88008008800';
END IF;
END$$
delimiter ;

Re: Смена DID в CEL

Добавлено: 28 дек 2020, 13:30
BorisTheBlade
Вероятнее всего модуль берет event CHAN_START ->а этот ивент генерится еще до всяческих изменений, так что как правильно заметил murr лучше всего использовать триггер в БД.
Если же модуль статистики подключается по AMI, тогда это не поможет-> в этом случае или преписывать модуль или попробовать воркэраунд:

Код: Выделить всё

[from-pstn-custom]
exten => 0007759777,1,Dial(Local/88007759777@from-trunk/n)

Re: Смена DID в CEL

Добавлено: 28 дек 2020, 14:23
Zavr2008
Если это bx24asterisk то самое простое - перетрубации все с номерами делать на промежуточном астере, благо у всех на виртуалках всё в наше время и нарезать одну еще не проблема.
На основном где коннектор установлен уже подавать всё как им нужно.
В противном случае решение только одна - самому генерировать события CEL - либо CELGenUserEvent, либо прямо в соответствующую таблицу MySQL.

Re: Смена DID в CEL

Добавлено: 28 дек 2020, 17:32
skynetyar
Да,совершенно верно!
Он берет asteriskcdrdb из cel ,где eventtype первый CHAN_START и его значение exten
Как раз таки туда первее всех модификаций пишется этот exten , если на транках с регистрацией это можно обойти впсав в конце нужный номер и то не во всех случаях, то на транках без регистрации этого сделать не получиться..

Да, это модуль bx24asterisk, я считаю что все можно и нужно делать через их модуль с помощью кастомизаций, но раскрывать они этого не хотят, сказали что есть решение вопроса именно модифицировать транк на Asterisk , но естественно как это сделать не раскрывают...

По поводу тригера в бд очень хорошая мысль ,менять на нужное значение при наступлении события, но как заметил BorisTheBlade , модуль действительно используют AMI