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

Смена DID от оператора в сторону клиентов

Добавлено: 24 май 2021, 21:46
Gib_adm
Доброго, Коллеги.

Debian = 6.0.5
FreePBX = 2.9.0.14
Asterisk = 1.6.2.9

Мы являемся транзитным оператором связи, имеем канал по SIP куда он передает все номера, оператор отдает DID в формате ХХХХХХХ в 7 значном формате.
А нам надо передать клиентам номер в 11 значном виде. В интернетах пока не нашел ничего вменяемого по этому вопросу.
Коллеги, прошу обратить внимание я коворю не про CALLERID, а именно про DID.

Вот пример лога:

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

    -- Executing [XXXXXXX@from-trunk:1] Set("SIP/Operator-trunk-00012bf0", "__FROM_DID=XXXXXXX") in new stack
    -- Executing [XXXXXXX@from-trunk:2] ExecIf("SIP/Operator-trunk-00012bf0", "1 ?Set(CALLERID(num)=79267248709)") in new stack
    -- Executing [XXXXXXX@from-trunk:3] Set("SIP/Operator-trunk-00012bf0", "__CALLINGPRES_SV=allowed_not_screened") in new stack
    -- Executing [XXXXXXX@from-trunk:4] Set("SIP/Operator-trunk-00012bf0", "CALLERPRES()=allowed_not_screened") in new stack
    -- Executing [XXXXXXX@from-trunk:5] Goto("SIP/Operator-trunk-00012bf0", "ext-trunk,27,1") in new stack
    -- Goto (ext-trunk,27,1)
    -- Executing [27@ext-trunk:1] Set("SIP/Operator-trunk-00012bf0", "TDIAL_STRING=SIP/Client-trunk1") in new stack
    -- Executing [27@ext-trunk:2] Set("SIP/Operator-trunk-00012bf0", "DIAL_TRUNK=27") in new stack
    -- Executing [27@ext-trunk:3] Goto("SIP/Operator-trunk-00012bf0", "ext-trunk,tdial,1") in new stack
    -- Goto (ext-trunk,tdial,1)
    -- Executing [tdial@ext-trunk:1] Set("SIP/Operator-trunk-00012bf0", "OUTBOUND_GROUP=OUT_27") in new stack
    -- Executing [tdial@ext-trunk:2] GotoIf("SIP/Operator-trunk-00012bf0", "0?nomax") in new stack
    -- Executing [tdial@ext-trunk:3] GotoIf("SIP/Operator-trunk-00012bf0", "0?hangit") in new stack
    -- Executing [tdial@ext-trunk:4] ExecIf("SIP/Operator-trunk-00012bf0", "1?Set(CALLERPRES()=allowed_not_screened)") in new stack
    -- Executing [tdial@ext-trunk:5] Set("SIP/Operator-trunk-00012bf0", "DIAL_NUMBER=XXXXXXX") in new stack
    -- Executing [tdial@ext-trunk:6] GosubIf("SIP/Operator-trunk-00012bf0", "1?sub-flp-27,s,1") in new stack
    -- Executing [s@sub-flp-27:1] ExecIf("SIP/Operator-trunk-00012bf0", "0?Set(TARGET_FLP_27=7040)") in new stack
    -- Executing [s@sub-flp-27:2] GotoIf("SIP/Operator-trunk-00012bf0", "0?match") in new stack
    -- Executing [s@sub-flp-27:3] Return("SIP/Operator-trunk-00012bf0", "") in new stack
    -- Executing [tdial@ext-trunk:7] Set("SIP/Operator-trunk-00012bf0", "OUTNUM=XXXXXXX") in new stack
    -- Executing [tdial@ext-trunk:8] Dial("SIP/Operator-trunk-00012bf0", "SIP/Client-trunk1/XXXXXXX,300,") in new stack
Как видно в строке

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

-- Executing [tdial@ext-trunk:8] Dial("SIP/Operator-trunk-00012bf0", "SIP/Client-trunk1/XXXXXXX,300,") in new stack
после "SIP/Client-trunk1/ отдается DID в формате XXXXXXX, а надо отдавать в ХХХХXXXXXXX

Re: Смена DID от оператора в сторону клиентов

Добавлено: 24 май 2021, 22:08
Gib_adm
Написал решение:
ХХХХХХХ - не готовое правило, тут каждый пишет свое

ХХХХХХХ - Присылаемый DID от оператора
ХХХХХХХХХХХ - Меняем на то как отправить клиенту

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

exten => ХХХХХХХ,2,Set(__FROM_DID=ХХХХХХХХХХХ)
exten => ХХХХХХХ,3,NoOp(${__FROM_DID})
Далее идет по диалплану

* Прошу пометить как [РЕШЕНО]

Re: Смена DID от оператора в сторону клиентов

Добавлено: 24 май 2021, 23:55
Gib_adm
Забыл добавить.
Всё делается в контексте [ext-did-custom] в файле extension_custom.conf

Re: Смена DID от оператора в сторону клиентов

Добавлено: 25 май 2021, 00:20
ded

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

[from-local-operator]
exten => _ZХХХХХХ,1,Set(__FROM_DID=8495${EXTEN})  ; для всех входящих семизначных, не начинающихся с нуля, добавляется код 8495
Asterisk, в виду обширных ДВО - конечное решение, не транзитное.
Для транзитных операторов лучше Kamailio, Freeswitch. Opensips.
thttps://www.kamailio.org
https://freeswitch.com
https://opensips.org

Re: Смена DID от оператора в сторону клиентов

Добавлено: 25 май 2021, 12:02
Zavr2008
Что мешает задать в пире транка оператора context=from-operator-custom?

Ну и сделать далее элементарное:

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

[from-operator-custom]

  exten=>_XXXXXXX,1,Goto(from-trunk,8495${EXTEN},1)

Все меньше и меньше читают книги люди...

Re: Смена DID от оператора в сторону клиентов

Добавлено: 25 май 2021, 16:56
jlss
Applications -> Set CallerID ?

Re: Смена DID от оператора в сторону клиентов

Добавлено: 26 май 2021, 08:39
Zavr2008
DID нормализовать нужно, а не CallerID.

Re: Смена DID от оператора в сторону клиентов

Добавлено: 26 май 2021, 12:29
jlss
ок, тогда Inbound Routes -> создать маршрут под новый did
и в маршруте под старый did:
Set Destination -> Inbound Routes -> новый did

Re: Смена DID от оператора в сторону клиентов

Добавлено: 26 май 2021, 15:47
ded
jlss писал(а):создать маршрут под новый did
ТС написал, что они операторы связи, им нужно целый пул номеров нормализовать, а не один-два DIDs
Поэтому простой ход - одна-две строки в принимающем контексте, с преобразованием в десяти- или одинадцатизнак.