Asterisk - Telefonanlagenproblem

  • VB.NET
  • .NET (FX) 4.0

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Linkai.

    Asterisk - Telefonanlagenproblem

    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.

    VB.NET-Quellcode

    1. Imports AsterNET.Manager
    2. Imports AsterNET
    3. Imports AsterNET.IO
    4. Imports AsterNET.Manager.Event
    5. Imports AsterNET.Manager.Response
    6. Module Module1
    7. Public WithEvents astcon As ManagerConnection
    8. Private config As New Dictionary(Of String, String) ' Dafür gibts ne funktion, nicht wundern
    9. Sub Main()
    10. astcon = New ManagerConnection(config("asterisk_host"), config("asterisk_port"), config("asterisk_user"), config("asterisk_password"))
    11. try
    12. astcon.Login()
    13. catch ex as Exception
    14. console.writeline(ex.message)
    15. end try
    16. end sub
    17. 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.
    Dateien
    • AsterNET.dll

      (195,07 kB, 99 mal heruntergeladen, zuletzt: )
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Linkai“ ()

    Er möchte den Sprachkanal der eingehenden Verbindung (des Anrufers) mit dem Sprachkanal zum Agenten in der Callcenter-Liste verknüpfen.

    Gehen tut das auf jeden Fall, weil ich das schon mal gemacht habe, wenn auch nicht mit vb.net sondern mit PHP.. Welche Werte bekommst du sonst noch im Event zurückgegeben?
    Also mein problem ist wie folgt. Wenn jemand anruft, werden mehrere events geworfen mit fast identischen werten.

    ich habe mich nun auf einen algorythmus einigen können, welcher bestimmte daten erst bei beatimmten events miteinander verknüpft.

    mein problem liegt grad beim transfer der telefonate.
    wenn ich mein firmentelefon mit durchwahl direkt anrufe werden 2 channel erstellt. Einer von der telefonanlage und winer zu meinem telefon.
    beide haben ne unterschiedliche id- logisch.
    beim sip channel der anlage steht bei callerid nun meie handynummer.
    beim channel zu meinem telefon is die callerid aber weder die sip anlage noch der anrufer sondern das telefon selbst...

    bei ner weiterleitung werden jetzt 2 neue channel erstellt. Ein nuee channel von meinem telefon(callerid=interne id)und einer beim telefon des partners (callerid=interne id).
    nun wird das transfer event geworfen. Ich erhalte eine source und ne target id.) bei der source is nun die id des events das als 2. erstellt wurde als der anruf rein kam.

    als targed die id die id welche erzeugt wurde als mein neuer channel erstellt wirde.
    leg ich nun auf, wird das hangupevent fürr das erste gespräch ausgeworfen. Sowohl sip als auch fürs telefon.

    nachdem der partner aufgelegt hat, wird das hangup events für die channel geworfen welche beim anrufen des partners vor dem transfer erstellt wurden.

    was ich erreichen will ist:
    wie lange wurde insgesammt mit dem kunden telefoniert?
    ich kann die beiden gespräch momentan in keiner sinnvollen verbindung miteinander verknüpfen.
    Viele Frauen kamen, viele sind gegangen, eine ist geblieben 12.5.12 <3 ich liebe dich Schatz :love: :love: