Você pode fazer isso, mas a maneira como eu vejo isso exigirá algumas habilidades de script asterisco, e o banco de dados CNAM é claro.
Você pode substituir o macro-dialout-trunk original e modificá-lo para que ele consulte o CNAM ou os bancos de dados internos. Para substituir um contexto de plano de discagem existente, você precisa colocar seu código em /etc/asterisk/extensions_override_freepbx.conf . Você precisará copiar todo o contexto [macro-dialout-trunk] modificado neste arquivo.
Exemplo:
...
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})
...
Você pode adicionar ou modificar as linhas ao [macro-dialout-trunk] para consultar o banco de dados desejado, algo assim:
...
exten => s,n,AGI(iWantTheNameOfThisCompany.agi,${OUTNUM})
exten => s,n,Set(CONNECTEDLINE(name,i)=${awesomeCompanyName})
...
O Asterisk executará o script iWantTheNameOfThisCompany.agi AGI, passando o número discado como argumento. O script poderia definir o usuário da variável $ {awesomeCompanyName} na função CONNECTEDLINE. Você pode usar Perl, PHP, C, Pascal, Bourne Shell - para sua consulta AGI script. a escolha é sua, realmente.