При исходящем внешнем звонке с использованием SIP-клиента Bria. Телефон отображает наш идентификатор вызывающего абонента как имя вызывающего абонента. Просматривая журнал, видно, что он произошел из этой строки
-- Executing [s@macro-dialout-trunk:21] ExecIf("SIP/100-0000004a", "1?Set(CONNECTEDLINE(name,i)=CID:2120000000)”) in new stack
Как мы можем настроить нашу систему так, чтобы она запрашивала CNAM или внутренние базы данных, чтобы отображать фактическое имя компании или человека, которому мы звоним?
Любая помощь будет оценена.
Вы можете это сделать, но, как я вижу, это потребует некоторых навыков написания сценариев звездочки и, конечно же, базы данных CNAM.
Вы можете переопределить исходный macro-dialout-trunk и изменить его так, чтобы он запрашивал CNAM или внутренние базы данных. Чтобы переопределить существующий контекст диалплана, вам нужно поместить свой код в /etc/asterisk/extensions_override_freepbx.conf. Вам нужно будет скопировать весь измененный [macro-dialout-trunk] контекст в этот файл.
Пример:
...
exten => s,n(gocall),Macro(dialout-trunk-predial-hook,)
exten => s,n,GotoIf($["${PREDIAL_HOOK_RET}" = "BYPASS"]?bypass,1)
exten => s,n,ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(num,i)=${DIAL_NUMBER}))
;;; This is the line that puts caller ID as the name of the calling party
exten => s,n,ExecIf($[$["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""] & $["${CALLERID(name)}"!="hidden"]]?Set(CONNECTEDLINE(name,i)=CID:${CALLERID(number)}))
exten => s,n,ExecIf($[$["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""] & $["${CALLERID(name)}"="hidden"]]?Set(CONNECTEDLINE(name,i)=CID:(Hidden)${CALLERID(number)}))
exten => s,n,GotoIf($["${custom}" = "AMP"]?customtrunk)
exten => s,n,Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM}${OUT_${DIAL_TRUNK}_SUFFIX},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS})
...
Вы можете добавить или изменить строки в [macro-dialout-trunk] для запроса нужной базы данных, примерно так:
...
exten => s,n,AGI(iWantTheNameOfThisCompany.agi,${OUTNUM})
exten => s,n,Set(CONNECTEDLINE(name,i)=${awesomeCompanyName})
...
Asterisk запустит AGI-сценарий iWantTheNameOfThisCompany.agi, передав набранный номер в качестве аргумента. Затем сценарий может установить переменную $ {awesomeCompanyName} user в функции CONNECTEDLINE. Вы можете использовать Perl, PHP, C, Pascal, Bourne Shell - для вашего AGI скрипта запроса. это твой выбор, правда.