Anruflisten synchronisieren in Asterisk 1.8

cohama

Neuer User
Mitglied seit
25 Aug 2011
Beiträge
9
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

da ich mich noch nicht tief genug auskenne, habe ich mir gedacht, frag doch einfach mal in die Runde.
Es geht mir um das folgende Szenario. Mal angenommen, ich nutze zwei SIP-Phones in Kombination mit Asterisk 1.8.x. Nun möchte ich, dass die Anrufliste sowie die Anruferliste auf beiden Geräten stets synchron sind.
Beide Geräte werden in einer Parallelschaltung genutzt.
Ist das möglich? Wenn ja, wie lautet der Ansatz um dieses Ziel zu erreichen? :o

Bye und Vielen Dank soweit, dass ihr es gelesen habt.
 
Wir setzen eine zentrale Anrufliste in einer MySQL-Datenbank ein. Diese wird im Dialplan entsprechend gefüllt und auf den Snom IP-Telefonen auf Knopfdruck angezeigt. Die interne Anrufliste des Telefons nutzen wir nicht.
 
Hallo Snuff,

vielen Dank für den schnellen Hinweis. Ist es eventuell auch möglich die Synchronisation der Anruf bzw. Anruferliste mit "Bordmitteln" von Asterisk 1.8x zu lösen?:p

Bye
 
@Snuff, hättest du mal ein paar Zeilen zu dieser mysql-Lösung? Wie baust du die Abfrage in den Dialplan ein? Ich spiele gerade ein wenig mit sogo herum, eine Asteirsk-Anbindung inkl. snom 370 wäre eine nette Ergänzung. Danke und Gruß!
 
@rmh: wenn ich morgen früh im Büro bin, suche ich dir den Code mal raus und poste ihn hier


[Beitrag 2:]

@cohama: Welche SIP-Telefon setzt ihr denn ein?
 
Zuletzt bearbeitet von einem Moderator:
Ich prüfe bei jedem ein- und ausgehenden Anruf mit einem Macro ob die anrufende oder angerufene Rufnummer schon bekannt ist und schaue im Negativfall im Örtlichen Telefonbuch nach, daher habe ich die Anruflistenfunktion direkt in diesem Macro mit implementiert. In der MySQL-Datenbank habe ich jeweils eine Telefonbuchtabelle (phonebook) und noch eine Anruflistentabelle (callhistroy).
Code:
[macro-revdblookup]
exten => s,1,Macro(snomclear))
exten => s,n,MYSQL(Connect connid localhost user password asterisk)
exten => s,n,GotoIf($[${connid} = ""]?end)
exten => s,n,MYSQL(Query resultid ${connid} SELECT callername, category, subcategory FROM phonebook where callerid='${ARG1}')
exten => s,n,MYSQL(Fetch fetchid ${resultid} CALLERNAME CATEGORY SUBCATEGORY)
exten => s,n,GotoIf($["${fetchid}" = "0"]?revl)
exten => s,n,Set(GLOBAL(CATEGORY)=${CATEGORY})
exten => s,n,Set(GLOBAL(RLNAME)=${CALLERNAME})
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,MYSQL(Query resultid ${connid} INSERT INTO callhistory (callerid, msn, direction, uniqueid) VALUES ('${ARG1}','${ARG2}','${ARG3}','${ARG4}'))
exten => s,n,MYSQL(Query resultid ${connid} UPDATE phonebook SET count  = count+1 WHERE callerid='${ARG1}')
exten => s,n,MYSQL(Query resultid ${connid} UPDATE phonebook SET lastchange  = now() WHERE callerid='${ARG1}')
exten => s,n,Goto(enddb)
exten => s,n(revl),AGI(ast_revers.agi,${ARG1})
exten => s,n,GotoIf($["${LONGNAME}" = "kein Eintrag"]?kein)
exten => s,n(end),Set(GLOBAL(RLNAME)=${LONGNAME})
exten => s,n,Noop(Status: ${RLSTATUS})
exten => s,n,GotoIf($["${RLSTATUS}" = "ERROR"]?enddb)
exten => s,n,MYSQL(Query resultid ${connid} INSERT INTO phonebook (callerid, callername) VALUES ('${ARG1}','${LONGNAME}'))
exten => s,n,MYSQL(Query resultid ${connid} INSERT INTO callhistory (callerid, msn, direction) VALUES ('${ARG1}','${ARG2}','${ARG3}'))
exten => s,n,MYSQL(Query resultid ${connid} UPDATE phonebook SET count  = count+1 WHERE callerid='${ARG1}')
exten => s,n,MYSQL(Query resultid ${connid} UPDATE phonebook SET lastchange  = now() WHERE callerid='${ARG1}')
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,Set(GLOBAL(RLNAME)=${LONGNAME})
exten => s,n,Goto(enddb)
exten => s,n(kein),MYSQL(Query resultid ${connid} INSERT INTO phonebook (callerid, callername) VALUES ('${ARG1}','${ARG1}'))
exten => s,n,MYSQL(Query resultid ${connid} INSERT INTO callhistory (callerid, msn, direction) VALUES ('${ARG1}','${ARG2}','${ARG3}'))
exten => s,n,MYSQL(Query resultid ${connid} UPDATE phonebook SET count  = count+1 WHERE callerid='${ARG1}')
exten => s,n,MYSQL(Query resultid ${connid} UPDATE phonebook SET lastchange  = now() WHERE callerid='${ARG1}')
exten => s,n,MYSQL(Clear ${resultid})
exten => s,n,Set(GLOBAL(RLNAME)=${ARG1})
exten => s,n(enddb),MYSQL(Disconnect ${connid})
exten => s,n,Set(GLOBAL(RLNUM)=${ARG1})

Der Aufruf im Dialplan erfolgt dann wie folgt:
Code:
exten => XXXX,n,Macro(revdblookup,${CALLERID(num)},MSN,DIRECTION,${CDR(uniqueid)})

Kleine Erklärung: Dem Macro übergebe ich 4 Parameter: Die anrufende bzw. angerufene Rufnummer, die eigene Rufnummer, die Anrufrichtung (ob ein- oder ausgehend) und die ID des Asterisk internen CDR, da ich in einer Webanwendung meine Anrufliste mit dem CDR zusammenführe, damit ich Anruflänge usw noch ermitteln kann.

Hoffe das hilft dir weiter :)

Gruß Patrick
 
Kostenlos!

Statistik des Forums

Themen
248,155
Beiträge
2,281,969
Mitglieder
377,335
Neuestes Mitglied
georgejeffrey