Softphone - Leitungen

MeisterM

Neuer User
Mitglied seit
10 Jun 2006
Beiträge
24
Punkte für Reaktionen
0
Punkte
0
Hey Leute,

ich bin derzeit an der Entwicklung eines Softphones (in meine Applikation).

Es soll die Funktionen darstellen, die früher z.B. in Leitstellen oder Sicherheitszentralen für normale Telefonleitungen abgebildet wurden.

Ich erklär's mal für die die das nicht kennen:

Die Oberfläche besteht aus mehreren "Buttons" dabei ist jeder Button eine Telefonleitung. Diese blinkt wenn ein Anruf reinkommt und JEDER Arbeitsplatz kann sich gleichberechtigt diesen Anruf holen. Danach verfärbt sich der Button und andere Arbeitsplätze können sich auf den Anruf aufschalten. (Konferenz)
Auch bei ausgehenden Gesprächen wird dann jeweils eine Leitung genommen und es stehen allen Arbeitsplätzen wieder diese Funktionen zur Verfügung.

Kann man soetwas mit VoIP abbilden?

Wie würdet Ihr das machen, dass jeder Arbeitsplatz auf die Gespräche der anderen zugreiffen kann?

Habe mir schon überlegt, man führt "virtuelle Leitungen" ein anhand der Zahl der möglichen gleichzeitigen Gesprächsanzahl. (Bei ISDN z.B. 2) Und legt das Gespräch dann auf eine dieser Leitungen. Allerdings müsste dann ein Serverprozess das ganze verwalten. Wäre soetwas evtl. über die Verwaltugnsschnittstelle von Asterisk möglich?

Gruß
Holger
 
Böff

Ist haarig. Musst Du die SIP-Signalisierung from the scratch entwickeln?

Mach Dich mal mit dem RFC3725 "Best Current Practices for Third Party Call Control (3pcc) in the Session Initiation Protocol (SIP)" vertraut,

lg
der_michl
 
Nein, ich wollte das eigentlich mit einer fertigen SDK machen, da mein Hauptproblem dabei nicht das eigentliche SIP Protokoll sondern die Sprachübertragung ist.

Dein RFC klingt gut. Ich werd mich da mal einlesen. Allerdings müsste ich das SIP Protokoll dann wahrscheinlich selbst implementieren. :(

Gruß
Holger

Edit Nachtrag:
Ich hatte mir schon folgendes überlegt:
Ein Teil meiner Software ist eh ein Server, also hab ich mir das folgendermaßen überlegt:

Gesprächsannahme
- Serverprogramm stellt SIP Verbindung zum SIP gateway her (z.B. Asterisk)
- Kommt ein Gespräch rein, so "klingelt" es am Server
- Die Clients sind nicht registriert und einfach per IP über SIP erreichbar
- Das Gespräch wird an allen Clients signalisiert (TCP Verbindung zwischen Client und Server besteht zusätzlich eh schon)
- Ein Client nimmt das Gespräch an indem er dem Server einen Befehl schickt
- Der Server verbindet das Gespräch an die IP des Clients
- Der Server setzt für sich intern den Status der Leitung auf "Belegt"

Ausgehende Gespräche
- Da nur der Server registriert ist am Gateway müsste dieser das Gespräch initiieren und dann an den Client weitergeben. Könnte das funktionieren?

Konferenz
- Will sich ein anderer Client B an einem Gespräch beteiligen sendet der die Anfrage an den Server, der leitet die an den Client A weiter und dieser baut eine Konferenz zu der direkten IP von Client B auf

Das ganze wäre dann ein "Workaround" um SIP, aber Zweckmäßig, da die Clients und der Server bereits existieren.

Nur wie stelle ich dann eine "Leitung" dar? Ich müsste ja dann quasi für jeden SIP Account angeben, wieviele gleichzeitige Gespräche darüber geführt werden können?!?

Also sagen wir z.B. Asterisk Server mit ISDN Karte und interne Nebenstelle "10". Alle eingehenden Anrufe werden auf die 10 weitergeleitet auf die sich mein Server registriert hat. Wird jetzt ein Gespräch darüber geführt, müsste der Server eine Leitung als belegt markieren und nur noch maximal ein Gespräch darüber erlauben.

So müsste man dann in Asterisk für jede Leitung eine andere Nebenstelle einrichten und per Dialplan dann entsprechend das Weiterleiten, also ISDN liegt auf der Nebenstelle 10. Alle Anrufe die von ISDN kommen gehen auf die 10 alle Abgehenden Gespräche von der 10 werden über ISDN geführt.
Auf der Nebenstelle 11 liegt ein SIP Anbieter und alle Gespräche kommen auf die 11 und alle ausgehenden Gespräche von der 11 werden über den Anbieter gefahren?

So könnte es ja funktionieren, oder?
Seht ihr gerade irgendwelche Probleme die da noch auf mich zukommen könnten?
 
Zuletzt bearbeitet:
Für die Erstellung der SIP-Messages gibt's ja bereits genug Frameworks in verschiedenen Sprachen.
Die Signalisierungslogik ist das knifflige. Mit der musst Du Dich halt eben auseinandersetzen.
Kleiner Tipp: solange im Signalisierungs- und Medienpfad keine NAT-Komponente hast, ists machbar, wennst irgendwo nattest, dann wird es sehr zäh.

lg
der Michl
 
Würde ich so nicht machen (aber ich komme aus einem anderen Bereich des Telekommunikation)
Code:
UA\
   \
    \
UA---Kamailio----Asterisk(MGW)
    /
   /
UA/

Verwende einen OpenSER/Kamailio als Aplication Server, den Asterisk nur als Mediengateway und lass die Clients beim Kamailio registriert sein. Im Kamailio baust Du dann die Routing-Logik ein - der kann das ganz gut. Ob das ASterisk auch in der form kann, kann ich Dir leider aber nicht beantworten.

Zu dem Konferenzsystem brauchst Du zusätzlich einen Medien-Proxy, der den Medienstrom vervielfacht (beispielsweise http://mediaproxy.ag-projects.com/). Diese Aufgaben in den Client auszulagern ist problematisch, da das m.W. nicht in SIP definiert ist. Der Client müsste dann als UA-Client und als UA-Server agieren und die Medien zwsichen den beiden transferieren.
Unter http://www.tech-invite.com/Ti-ietf-conf.html findest Du aber ebenfalls sehr gute Anleitungen.

Das sind mal ein paar Denkanstösse aus dem bauch heraus, genauere Planung würde genauere Auseinandersetzung mit der Fragestellung bedeuten und das - wie das meiste im Leben - kostet Zeit und Geld ;)

Hoffe, ich konnte dennoch ein paar Ideen vermitteln,

Michl

PS: Du bist Dir aber bewußt, dass das ein _Haufen_ Planungs- und Entwicklungsarbeit kostet?
 
Zuletzt bearbeitet:
Schauen wir mal... Derzeit bin ich noch an der Integration der Funkübertragung. (Das System muss Telefon und Funk können)

Das habe ich mit der Teamspeak SDK gelöst.

Mal schauen wie das mit der Telefongeschichte wird. Ich schau mir das ganze mal an. Was kann der Kamailio jetzt genau anders? Und was an Routinglogik kann ich dem dafür verpassen?
 
mWas ich mir gerade überlege, ist es evtl. möglich über die Management Konsole von Asterisk die Funktionen abzubilden?

Muss mich mal schlau machen. Vielleicht gibts hier ja die Asterisk Experten, die das schon wissen.

Wäre so etwas mit Kamilio möglich?

Edit: Ich habe mal im Asterisk Forum darüber ein Thema eröffnet: http://www.ipphoneforum.eu/showthread.php?p=1530789 mit entsprechend Asterisk spezifischen Fragen.
 
Zuletzt bearbeitet:
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.