VIDEOCHAT  ::   FAQ  ::   Поиск  ::   Регистрация  ::   Вход

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

Проблемы Asterisk без вэб-оболочек и их решения

Модераторы: april22, Zavr2008

Ответить
Gib_adm
Сообщения: 9
Зарегистрирован: 01 фев 2014, 18:43

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

Сообщение 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
Gib_adm
Сообщения: 9
Зарегистрирован: 01 фев 2014, 18:43

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

Сообщение Gib_adm »

Написал решение:
ХХХХХХХ - не готовое правило, тут каждый пишет свое

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

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

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

* Прошу пометить как [РЕШЕНО]
Gib_adm
Сообщения: 9
Зарегистрирован: 01 фев 2014, 18:43

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

Сообщение Gib_adm »

Забыл добавить.
Всё делается в контексте [ext-did-custom] в файле extension_custom.conf
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение 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
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

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

Сообщение Zavr2008 »

Что мешает задать в пире транка оператора context=from-operator-custom?

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

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

[from-operator-custom]

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

Все меньше и меньше читают книги люди...
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
jlss
Сообщения: 4
Зарегистрирован: 24 май 2021, 14:18

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

Сообщение jlss »

Applications -> Set CallerID ?
Аватара пользователя
Zavr2008
Сообщения: 2211
Зарегистрирован: 27 янв 2011, 00:35
Контактная информация:

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

Сообщение Zavr2008 »

DID нормализовать нужно, а не CallerID.
Российские E1 шлюзы Alvis. Модернизация УПАТС с E1,Подключение к ИС "Антифрод" E1 PRI/SS#7 УВР Телестор, Грифин и др..
jlss
Сообщения: 4
Зарегистрирован: 24 май 2021, 14:18

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

Сообщение jlss »

ок, тогда Inbound Routes -> создать маршрут под новый did
и в маршруте под старый did:
Set Destination -> Inbound Routes -> новый did
ded
Сообщения: 15625
Зарегистрирован: 26 авг 2010, 19:00

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

Сообщение ded »

jlss писал(а):создать маршрут под новый did
ТС написал, что они операторы связи, им нужно целый пул номеров нормализовать, а не один-два DIDs
Поэтому простой ход - одна-две строки в принимающем контексте, с преобразованием в десяти- или одинадцатизнак.
Ответить
© 2008 — 2024 Asterisk.ru
Digium, Asterisk and AsteriskNOW are registered trademarks of Digium, Inc.
Design and development by PostMet-Netzwerk GmbH