Abfrage Anrufername aus CRM / MSSQL-Datenbank

Hier nochmal eine Zusammenfassung, was ich eingestellt habe damit eingehende und ausgehende Anrufe mit meiner CRM-Datenbank abgeglichen werden:

Als erstes habe ich folgende 2 Skripte in der pascom unter Erweitert > Skripte erstellt:

Skript 1

Bezeichnung: phonebook_in
Kontext: phonebook_in
Einbinden: NEIN
Skriptinhalt:

exten => s,1,Verbose(phonebook_in)
# perform search only if name is not set
same => n,GotoIf($[ "${CALLERID(name)}" != "${CALLERID(num):1}" ]?skip)
# invoke CURL
same => n,Set(CURL_CALLER_ID=${CURL(http://server/pascom_crm.php?callnum=${MDC_CALLER_NUM_INTERNAT})})
# set variable CURL_CALLER_ID if matching result is found
same => n,ExecIf($[ "${CURL_CALLER_ID}" != "" ]?Verbose(1,"${CURL_CALLER_ID}")
same => n,ExecIf($[ "${CURL_CALLER_ID}" != "" ]?Set(MDC_RESOLVENAME_HITS=1))
same => n,ExecIf($[ "${CURL_CALLER_ID}" != "" ]?Set(__MDC_DIALCALLERNAME=${CURL_CALLER_ID}))
same => n,ExecIf($[ "${CURL_CALLER_ID}" != "" ]?Set(CALLERID(name)=${CURL_CALLER_ID}))
same => n,Return()
same => n(skip),Return()

Skript 2

Bezeichnung: phonebook_out
Kontext: sub_pre-main
Einbinden: AUSGEHEND
Skriptinhalt:

exten => s,1,Verbose(phonebook_out)
# invoke CURL
same => n,Set(CURL_CALLEE_ID=${CURL(http://server/pascom_crm.php?callnum=${MDC_CALLEE_NUM:1})})
# set variable CURL_CALLEE_ID if matching result is found
same => n,ExecIf($[ "${CURL_CALLEE_ID}" != "" ]?Verbose(1,"${CURL_CALLEE_ID}")
same => n,ExecIf($[ "${CURL_CALLEE_ID}" != "" ]?Set(MDC_RESOLVENAME_HITS=1))
same => n,ExecIf($[ "${CURL_CALLEE_ID}" != "" ]?Set(MDC_DIALCALLEENAME=${CURL_CALLEE_ID}))
same => n,Return()

Skript 1 habe ich dann jedem Benutzer unter Extern/Vorher zugeordnet.

Hier noch ein Beispiel für ein PHP-Skript um eine MSSQL-Datenbank abzufragen:
pascom_crm.php (966 Bytes)

Das Skript führe ich auf einem Ubuntu 16.04 Server aus.
Für den Zugriff auf die MSSQL-Datenbank unter PHP muss noch das Paket php-sybase installiert werden.

Abschließend muss noch in der /etc/freetds/freetds.conf ein Eintrag für den MSSQL-Server hinterlegt werden.
Folgende Einstellungen habe ich benutzt:

[mssqlLocal]
host = localhost
port = 1433
tds version = 7.2
client charset = UTF-8

@Stefan would you keep that configuration or is there a better solution?
If I put both scripts in sub_pre-main then script 2 isn’t working anymore. I thought it would work if I change the field integrate for script 1 to BEFORE and for script 2 to OUTGOING but it doesn’t matter. It would be nice if I didn’t have to assign the script phonebook_in to every user and it would be executed automatically when an incoming call is received.

Edit 19.01.2018 15:58: pascom_crm.php aktualisiert
Edit 01.03.2018 11:27: Formatierung angepasst

2 Likes