Добрый день!
Пытаюсь реализовать следующую схемe, 1 головной астериск объединен с десятками других клиентских астерисков (freepbx).
на клиентском астериске, создается iax extension, с сервера на каждый клиентский поднят транк с данными iax extension, При звонке на клиентском астериске на внутренний iax extension, на серверном настроено с помощью set caller id (модуль freepbx), добавление названия клиент, а также префикс, для возможности прозрачного перезвона с серверного.
Распределение с различных клиентских на разные set caller id instance думал сделать через inbound route, но такие звонки "no did no cid", при добавлении в строку регистрации login:pass@host/did регистрация (все на iax2) не проходит, считая did как часть хоста.
После чего решил, распределить через контекст
в транке:
peer details
username=login
type=peer
secret=pass
qualify=yes
host=ip.addresse.com
user context from-client1
user details
type=user
context=from-client1
register string
login:pass@ip.addresse.com
добавляю extensions_custom.conf
[from-client1]
exten => s,1,Set(__FROM_DID=${EXTEN})
exten => s,n,Gosub(app-blacklist-check,s,1())
exten => s,n,Set(CDR(did)=${FROM_DID})
exten => s,n,ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)}))
exten => s,n,Set(CHANNEL(musicclass)=default)
exten => s,n,Set(__MOHCLASS=default)
exten => s,n,Set(__CALLINGPRES_SV=${CALLERPRES()})
exten => s,n,Set(CALLERPRES()=allowed_not_screened)
exten => s,n(dest-ext),Goto(app-setcid,1,1)
где app-setcid,1,1 app-setcid,2,1 app-setcid,2,1 разные инстансты для разных контекстов.
при 1 клиенте схема работает, при добавлении трех транков до клиентских, соответственно трех разных контекстов, звонки приходят, кажется по принципу "кто первый встал, того и тапки". то есть звонки от клиента1 и клиента 2 и клиента3 попадают в контекст from-client2 или наоборот.
Ошибка похожа на детскую, в отсутствии базовых знаний работы с контекстами. Поможете?