Hallo @Markus,
das hat mir sehr weitergeholfen! Ich habe jetzt auf einem externen Server ein PHP Skript eingerichtet, was die Abfrage an die Datenbank durchführt. Das scheint auch so weit zu funktionieren, wenn ich der Ausgabe der Konsole glauben schenken darf:
– Executing [ext@sub_prefix-34:1] Gosub(“SIP/mdc_trunk_conf-7-00000146”, “phonebook_w4a,s,1”) in new stack
– Executing [s@phonebook_w4a:1] Set(“SIP/mdc_trunk_conf-7-00000146”, “CURL_CALLER_ID=Test W4A”) in new stack
– Executing [s@phonebook_w4a:2] ExecIf(“SIP/mdc_trunk_conf-7-00000146”, “$ “Test W4A” != “” ]?Verbose(1,“Test W4A””) in new stack
“Test W4A”
– Executing [s@phonebook_w4a:3] ExecIf(“SIP/mdc_trunk_conf-7-00000146”, “$ “Test W4A” != “” ]?Set(CALLERID(name)=Test W4A)”) in new stack
Als Inspiration habe ich das Skript verwendet und entsprechend angepasst:
exten => s,1,Set(CURL_CALLER_ID=${CURL(http://srvmssql01/pascom_w4a.php?callnum=${MDC_CALLER_NUM_INTERNAT})})
same => n,ExecIf($ “${CURL_CALLER_ID}” != “” ]?Verbose(1,“${CURL_CALLER_ID}”)
same => n,ExecIf($ “${CURL_CALLER_ID}” != “” ]?Set(CALLERID(name)=${CURL_CALLER_ID}))
same => n,Return()
Leider wird im Client aber nur die Rufnummern und nicht der Name angezeigt. Muss ich eventuell eine andere Variable überschreiben?
Des Weiteren würde ich das Skript gerne nur ausführen, wenn kein Name im Telefonbuch dazu gefunden wurde. Dafür wurde im verlinkten Skript folgender Befehl genutzt:
# perform search only if name is not set
exten => s,1,GotoIf($ “${CALLERID(name)}” != “” ] ?skip)
CALLERID(name) ist allerdings nie leer, da wenn CALLERID(name) leer ist es automatisch mit dem Wert von CALLERID(num) gefüllt wird. Kann man das eventuell irgendwie deaktivieren?
Vielen Dank im Voraus ![]()
Mit freundlichen Grüßen
Stefan