Liebe Community,
ich hoffe aus tiefster Seele dass einer von euch da draußen sich mit Asternet (Einer Lib welche zum Zugriff auf eine Asterisk Telefonanlage via Asterisk Manager Interface verwendet wird) und Asterisk (Einer Telefonanlagensoftware) auskennt.
Es geht darum dass wir in der Firma über eine Asterisk-Telefonanlage verfügen. Nun wollen wir, um Kunden besser abrechnen zu können, einige Daten sammeln.
Dafür verwende ich die Asternet-Lib welche via Telnet ins "AMI" (Asterik Manager Interface) geht und die Events der Anlage abfangen kann.
Nun hat diese Lib unendlich viele Events, welche geworfen werden.
Bei einem einkommenden Anruf erfolgt nun folgendes:
Die Telefonanlage nimmt den Anruf entgegen und generiert einen neuen SIP-Channel.
Dieser bekommt eine Eindeutige-ID (UID).
anschließend werden von der Telefonanlage die Telefone in dem Verteiler angerufen. (Es müssten jetzt 4 stück sein).
für jeden Channel wird eine neue UID erzeugt. Nimmt einer Ab, wird bei den 3 anderen Telefonen der Channel geschlossen und das Hangup() Event für diese wird geworfen.
nachdem derjenige Telefoniert hat, wird das gespräch mit der Telefonanlage gekappt und diese kappt die Verbindung zum anrufer. Bei beiden wird auch hier das Hangup-Event geworfen.
Ich habe an der Stelle jetz allerdings einen Logikfehler, da ich einfach keine Ahnung habe, wie ich das verknüpfen soll.
Am ende möchte mein Chef pro anruf genau eine Spalte haben (ausnahme: er wird intern weitergeleitet, dafür gibts ne spalte für die neue UID des neu erzeugten anrufes. Auch hier wird erst die Telefonanlage angerufen, welche dann wieder einen Channel zum neuen Telefon erstellt, welches den Anrufer entgegennehmen soll).
Wir sehen es ist alles extrem verschachtelt und ich steige da seit round about ner woche nicht mehr durch.
Ich häng die Lib einfach mal an.
Hier mal ein Codebeispiel wie man sich mit der Anlage verbindet.
Ich hoffe dass mir einer von euch einen Denkanstoß geben könnte.
# ich habe vergessen zu erwähnen, dass das Transfer -Event (welches geworfen wird, wenn gespräche intern weitergeleitet werden), nicht geworfen wird, wenn die Telefonanlage die Anrufe weiterleitet.
ich hoffe aus tiefster Seele dass einer von euch da draußen sich mit Asternet (Einer Lib welche zum Zugriff auf eine Asterisk Telefonanlage via Asterisk Manager Interface verwendet wird) und Asterisk (Einer Telefonanlagensoftware) auskennt.
Es geht darum dass wir in der Firma über eine Asterisk-Telefonanlage verfügen. Nun wollen wir, um Kunden besser abrechnen zu können, einige Daten sammeln.
Dafür verwende ich die Asternet-Lib welche via Telnet ins "AMI" (Asterik Manager Interface) geht und die Events der Anlage abfangen kann.
Nun hat diese Lib unendlich viele Events, welche geworfen werden.
Bei einem einkommenden Anruf erfolgt nun folgendes:
Die Telefonanlage nimmt den Anruf entgegen und generiert einen neuen SIP-Channel.
Dieser bekommt eine Eindeutige-ID (UID).
anschließend werden von der Telefonanlage die Telefone in dem Verteiler angerufen. (Es müssten jetzt 4 stück sein).
für jeden Channel wird eine neue UID erzeugt. Nimmt einer Ab, wird bei den 3 anderen Telefonen der Channel geschlossen und das Hangup() Event für diese wird geworfen.
nachdem derjenige Telefoniert hat, wird das gespräch mit der Telefonanlage gekappt und diese kappt die Verbindung zum anrufer. Bei beiden wird auch hier das Hangup-Event geworfen.
Ich habe an der Stelle jetz allerdings einen Logikfehler, da ich einfach keine Ahnung habe, wie ich das verknüpfen soll.
Am ende möchte mein Chef pro anruf genau eine Spalte haben (ausnahme: er wird intern weitergeleitet, dafür gibts ne spalte für die neue UID des neu erzeugten anrufes. Auch hier wird erst die Telefonanlage angerufen, welche dann wieder einen Channel zum neuen Telefon erstellt, welches den Anrufer entgegennehmen soll).
Wir sehen es ist alles extrem verschachtelt und ich steige da seit round about ner woche nicht mehr durch.
Ich häng die Lib einfach mal an.
Hier mal ein Codebeispiel wie man sich mit der Anlage verbindet.
VB.NET-Quellcode
- Imports AsterNET.Manager
- Imports AsterNET
- Imports AsterNET.IO
- Imports AsterNET.Manager.Event
- Imports AsterNET.Manager.Response
- Module Module1
- Public WithEvents astcon As ManagerConnection
- Private config As New Dictionary(Of String, String) ' Dafür gibts ne funktion, nicht wundern
- Sub Main()
- astcon = New ManagerConnection(config("asterisk_host"), config("asterisk_port"), config("asterisk_user"), config("asterisk_password"))
- try
- astcon.Login()
- catch ex as Exception
- console.writeline(ex.message)
- end try
- end sub
- end Module
Ich hoffe dass mir einer von euch einen Denkanstoß geben könnte.
# ich habe vergessen zu erwähnen, dass das Transfer -Event (welches geworfen wird, wenn gespräche intern weitergeleitet werden), nicht geworfen wird, wenn die Telefonanlage die Anrufe weiterleitet.
Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 ich liebe dich Schatz
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Linkai“ ()