Назад | Перейти на главную страницу

Определите, какой пользователь инициировал вызов в Asterisk

У меня был следующий код в моем extensions.conf файл:

[local]
exten => _NXXNXXXXXX,1,Set(CALLERID(name)=${OUTGOING_NAME})
exten => _NXXNXXXXXX,n,Set(CALLERID(num)=${OUTGOING_NUMBER})

Теперь я хочу изменить этот код, чтобы установить CallerID и номер в зависимости от пользователя / добавочного номера, который выполняет вызов. Фактически у меня четыре (4) пользователя / расширения в моем sip.conf и только один из них (тот, который я использую для бизнеса) должен отправлять другой идентификатор / номер вызывающего абонента.

Все находится в одном контексте (для простоты), поскольку все линии должны иметь возможность принимать входящий вызов. Единственная разница в том, когда line1 необходимо позвонить, он должен отправить другой идентификатор / номер вызывающего абонента и использовать другого поставщика.

Вот что у меня есть на данный момент:

[local]
exten => _NXXNXXXXXX,1,Set(line=${SIP_HEADER(From)})
exten => _NXXNXXXXXX,n,Verbose(line variable is <${line}>)
exten => _NXXNXXXXXX,n,Set(CALLERID(name)=${IF($[ ${line} = line1 ]?${COMPANY_NAME}:${FAMILY_NAME})})
exten => _NXXNXXXXXX,n,Set(CALLERID(num)=${IF($[ ${line} = line1 ]?${COMPANY_NUMBER}:${FAMILY_NUMBER})})
exten => _NXXNXXXXXX,n,Dial(${IF($[ ${line} = line1]?SIP/${EXTEN}@${COMPANY_PROVIDER}:SIP/${EXTEN}@${FAMILY_PROVIDER})})

Я действительно не знаю, правильно ли это и Я боюсь зафиксировать эти изменения в моем extensions.conf перед проверкой.

Любая помощь будет оценена.

В соответствии с Информация о VoIP вики вы можете указать информацию о вызывающем абоненте на расширениях SIP для каждого расширения следующим образом:

callerid="Tuomas Tammisalo" <1000>

ОБНОВИТЬ: Вы можете получить доступ к Переменные CDR по звонку начался. "$ {CDR (src)}" предоставит вам добавочный номер источника вызова.

После некоторого расследования я обнаружил, что могу получить необходимую информацию из ${CALLERID(num)}.

Итак, вот что я сделал:

[local]
exten => _NXXNXXXXXX,1,Set(line=${CALLERID(num)})
same => n,Verbose(line variable is <${line}>)
same => n,GotoIf($["${line}" = "line1"]?business-out,${EXTEN},1:family-out,${EXTEN},1)

[business-out]
...

[family-out]
...

Надеюсь, это кому-то поможет