Как настроить DU.ae SIP Trunk в FreePBX
Для памятки опишу как настроить SIP транк от оператора du.ae (Дубаи) в FreePBX.
Оператор DU.ae предоставляет SIP транк через кабель от провайдера со следующими данными по подключению SIP транка:
В общих настройках во вкладке General SIP Settings
убедимся что поле External Address
пустое.
Настройка FreePBX (Добавление SIP-транка)
Настраивать SIP транк будем через PJSIP.
На вкладке General
в поле Trunk Name
вводим произвольное, понятное название транка, в моем случае я использовал USERNAME
, остальное все оставляем по-умолчанию.
На вкладке pjsip Settings
во вкладке General
заполняем отмеченные поля, подставляем из таблицы с данные по подключению:
- Username — USERNAME
- SIP Server — DOMAIN
- SIP Server Port — PORT
Во вкладке Advanced
заполняем отмеченные поля все так же используя данные из таблицы:
- Outbound Proxy — sip:
SBC/HOSTNAME
:5060\;lr - Contact User —
USERNAME
- From Domain —
DOMAIN
- From User —
USERNAME
- Client URI — sip:
USERNAME
@DOMAIN
- Server URI — sip:
USERNAME
@DOMAIN
- AOR Contact — sip:
USERNAME
@DOMAIN
- Match (Permit) —
SBC/HOSTNAME;DOMAIN
- Trust RPID\PAI —
Yes
- Send RPID\PAI —
Send P-Asserted-Identity header
Сохраняем и применяем изменения. Результат подключения.
asterisk -rx "pjsip show endpoint 97148888700p"
Endpoint: <Endpoint/CID.....................................> <State.....> <Channels.>
I/OAuth: <AuthId/UserName...........................................................>
Aor: <Aor............................................> <MaxContact>
Contact: <Aor/ContactUri..........................> <Hash....> <Status> <RTT(ms)..>
Transport: <TransportId........> <Type> <cos> <tos> <BindAddress..................>
Identify: <Identify/Endpoint.........................................................>
Match: <criteria.........................>
Channel: <ChannelId......................................> <State.....> <Time.....>
Exten: <DialedExten...........> CLCID: <ConnectedLineCID.......>
==========================================================================================
Endpoint: 97148888700p Not in use 0 of inf
OutAuth: 97148888700p/97148888700p
Aor: 97148888700p 0
Contact: 97148888700p/sip:97148888700p@du.ae 76354d9fd5 Avail 141.307
Transport: 0.0.0.0-udp udp 3 96 0.0.0.0:5060
Identify: 97148888700p/97148888700p
Match: 10.59.108.25/32
asterisk -rx "pjsip show registration 97148888700p"
<Registration/ServerURI..............................> <Auth....................> <Status.......>
==========================================================================================
97148888700p/sip:97148888700p@du.ae 97148888700p Registered (exp. 248s)
Настройка FreePBX (Входящие вызовы)
Оператор DU.ae передает входящий номер как 048888788
от исходного 97148888700
, т.е. код страны 971
отметается, вместо него указывают 0
и дальше номер.
Настройка FreePBX (Исходящие вызовы)
Для настройки исходящих вызовов во вкладке Route Settings
указываем Trunk Sequence for Matched Routes
добавленный SIP транк.
Во вкладке Dial Patterns указываем маску шаблона для звонков на внешние номера.
В случае если вам провайдер предоставил диапазон номеров и вам необходимо реализовать так что какие то внутренние номера должны выходить во вне под определенными номерами, то нужно для внутреннго номера в поле Outbound CID
указать внешний номер который должен быть присвоен при звонке на внешние номера.
Далее нужно в SIP
заголовке P-Preferred-Identity
передать информацию провайдеру о CID. В FreePBX нужно модифицировать секцию func-apply-sipheaders
в dialplan.
В файле /etc/astersik/extensions_override_freepbx.conf прописываем следующее:
[func-apply-sipheaders]
exten => s,1,Noop(Modify func-apply-sipheaders in extensions_custom.conf for DU.AE)
exten => s,n,Set(USEROUTCID=${DB(AMPUSER/${CALLERIDNUMINTERNAL}/outboundcid)})
exten => s,n,GotoIf($["${USEROUTCID}" = ""]?defcid:outcid)
exten => s,n(outcid),Set(PJSIP_HEADER(add,P-Preferred-Identity)=<sip:${USEROUTCID}@du.ae>)
exten => s,n(defcid),Return
Сохраняем и применяем изменения во FreePBX. Проверяем работу.
Обсуждение
Нет комментариев.