[INFO] SNOM Telefonbuch von MS-SQL Server holen lassen

ArnimS

Neuer User
Mitglied seit
31 Okt 2007
Beiträge
2
Punkte für Reaktionen
0
Punkte
0
Hallo erstmal an alle im Forum und ein Dankeschön an alle, die sich hier so hilfreich beteiligen.
Ich habe seit einigen Tagen ein SNOM 370 zum testen an einer Asterisk 1.4 und war auf der Suche nach einer Möglichkeit, das Telefonbuch aus einer ERP Anwendung zu füttern, die auf MSSQL 2000 basiert.
Hier meine Lösung:

1. Belegung der Telefonbuchtaste des SNOM:
ACTION URL: http://sql/erp/template/snomtel.xml

2. Konfiguration der XML Unterstützung für SQL Server:
Anlegen eines virtuellen Verzeichnisses für den HTTP Zugriff auf den SQL Server. (bei mir: /erp)
Konfiguration der Datenquelle.
Konfiguration des "Virtuellen Name" template zum Templateverzeichnis.

3. Erstellt eine Datei snomtel.xml im Templateverzeichnis mit folgenden Inhalt:
-------------SNIP--------------------
<SnomIPPhoneDirectory xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<Title>iITsys Telefonbuch</Title>
<Prompt>Prompt</Prompt>
<sql:query>
Select
1 as Tag,
0 as Parent,
CustomerName as [DirectoryEntry!1!Name!element],
Telephone1 as [DirectoryEntry!1!Telephone!element]
FROM Customers
FOR XML explicit
</sql:query>
</SnomIPPhoneDirectory>
-----------SNAP-----------------------

Dabei ist Customers Eure Tabelle, CustomerName und Telephone1 die Spalten in der Tabelle.

Ergebnis:
Beim Druck der Telefonbuchtaste holt sich das SNOM die gewünschten Namen und Telefonnummern (bei mir ca. 700 Einträge in ca. 1,5 Sec.).

Viel Spass beim ausprobieren!;)
 
Danke für den Tipp - ich habe angeregt dadurch das selbe für MySQL gemacht, da meine Kundendatenbank auf einem MySQL Server vorliegt.

Wenn es jetzt noch eine Möglichkeit gäbe, dass eingehende Anrufe ebenfalls gegen die Tabelle verifiziert und dann der Name am Display angezeigt würde, wär ich überglücklich.
 
Danke für den Tipp - ich habe angeregt dadurch das selbe für MySQL gemacht, da meine Kundendatenbank auf einem MySQL Server vorliegt.
Hast Du das ebenfalls nur mit XML gemacht oder mit PHP, das Dir eine XML-Seite generiert? Oder anders gefragt: Gibt's für MySQL auch so eine "XML Unterstützung"?
Wenn es jetzt noch eine Möglichkeit gäbe, dass eingehende Anrufe ebenfalls gegen die Tabelle verifiziert und dann der Name am Display angezeigt würde, wär ich überglücklich.
In FreePBX gibt's die Möglichkeit, eine "CallerID Lookup Source" zu definieren, die direkt eine Abfrage auf die MySQL-Datenbank macht. (Oder einen PHP-Skript, der noch viel wildere Sachen macht!)
Müsste sich mit etwas Hack-Aufwand auch in einem FreePBX-freien Asterisk implementieren lassen, der Code ist ja offen!
 

Anhänge

  • CID-Lookup_MySQL.png
    CID-Lookup_MySQL.png
    174.1 KB · Aufrufe: 141
Ich habs jetzt auch mit Boardmitteln geschafft (und muss sagen, dass das jetzt echt cool rüberkommt).

1) Man schreibt sich ein Skript in der Sprache seiner Wahl, dass anhand einer per GET übergebenen Variable die Personendaten zu einer Nummer aus einer Datenquelle rauskramt und das ganze dann als SnomIPPhoneText ausgibt (siehe http://wiki.snom.com/Minibrowser#SnomIPPhoneText)

2) Man trägt dieses Skript in den Action-URLS bei eingehenden Anrufen ein.
 
Asterisk Addons

Hallo
ich habe das Ganze im Dialplan realisiert:

Asterisk AddOn's installieren und man kann mit dem Befehl MYSQL ein beliebiges Query absetzen, z.B.

Code:
SELECT name from telefontabelle where Nummer=${CALLERID(num)}

Die Antwort ist der Name des Anrufers. Diesen mit
Code:
Set(CALLERID(name) = ${name})
Und schon funktioniert das mit allen Telefonen, nicht nur mit SNOM.
 
Hi ArnimS,

ich blick das noch nicht ganz.

Kannst du nochmal detailierter beschreiben, wie du den SQL-Server für XML und http konfigurierst?

Wäre tight.

Danke
 
Hallo,

würde auch gerne erfahren, was und wo man genau beim MS-SQL Server konfigurieren muss, um so einfach auf die Datenbank über das SNOM zugreifen zu können.

Grüße,
DomRoc
 
*refresh* sorry :)

Hi ArnimS,

ich blick das noch nicht ganz.

Kannst du nochmal detailierter beschreiben, wie du den SQL-Server für XML und http konfigurierst?

Wäre tight.

Danke
 
Hi,

wollte mich jetzt auch mal mit diesem Thema auseinandersetzen.
Mit ist aber noch nicht ganz klar, wie ich die Nummer suchen soll, also wie ich das query formulieren soll.

1. In welchem Nummernformat erscheinen eingehende Anrufe (+49-vorwahl-nummer, 0049-vorwahl-nummer, vorwahl-nummer, nummer) ?

2.In meinen SQL-Datenbanken liegen die Telefonnummern im kanonischen Format (also +49 (vorwahl ohne 0) Rufnummer) als string.

Mir ist jetzt nicht ganz klar wie ich da vernünftig suchen soll, möglichst auch noch so intelligent, dass wenn eine Nummer ungefähr passt diese auch erkannt wird (z.B. bis auf die letzten beiden Ziffern)
 
Sehr interessantes Thema! Gibts irgendwo noch mehr dazu zu lesen?
 
Hi,

wollte mich jetzt auch mal mit diesem Thema auseinandersetzen.
Mit ist aber noch nicht ganz klar, wie ich die Nummer suchen soll, also wie ich das query formulieren soll.

1. In welchem Nummernformat erscheinen eingehende Anrufe (+49-vorwahl-nummer, 0049-vorwahl-nummer, vorwahl-nummer, nummer) ?

2.In meinen SQL-Datenbanken liegen die Telefonnummern im kanonischen Format (also +49 (vorwahl ohne 0) Rufnummer) als string.

Mir ist jetzt nicht ganz klar wie ich da vernünftig suchen soll, möglichst auch noch so intelligent, dass wenn eine Nummer ungefähr passt diese auch erkannt wird (z.B. bis auf die letzten beiden Ziffern)
Dieses Thema ist zwar etwas älter, dennoch gibt es für Dein Problem eine einfache Lösung:
Im SQL wird die Nummer wie folgt abgefragt.

Code:
SELECT name from telefontabelle where Nummer=%${CALLERID(num)}% LIMIT 1;
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.