Jump to content

CSTA auf Snom One


H.Peters

Recommended Posts

Hallo,

 

ich habe folgendes Problem:

 

ich versuche schon seit einiger Zeit CSTA-Kommandos an die SnomOne PBX zu senden. Dazu benutze ich folgendes VB-Programm, wie es hier von Matt Landis als Beispiel codiert ist:

 

Imports System.Text
Imports System.Net
Imports System.Net.Sockets

Public Class Form1

Public Sub CSTAPost()
Try
Dim PBX_Port As Int32 = 80
Dim PBX_IPAddress As IPAddress = IPAddress.Parse("192.168.1.119")
Dim TCP_Client As New TcpClient()
Dim TCP_Encoder As New UTF8Encoding
TCP_Client.Connect(PBX_IPAddress, PBX_Port)
Dim TCP_Stream As NetworkStream = TCP_Client.GetStream
Dim bytes(TCP_Client.ReceiveBufferSize) As Byte
Dim responseData As String
Dim message As String = "<?xml version=""1.0"" encoding=""UTF-8""?> <StartApplicationSession xmlns=""http://www.ecma-international.org/standards/ecma-354/appl_session/"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""><applicationInfo><applicationID>MyApp</applicationID><applicationSpecificInfo><tns:SessionLoginInfo xmlns:tns=""http://www.pbxnsip.com/schemas/csta/login""><tns:userName>42</tns:userName><tns:password>passwort</tns:password><tns:domain>pbx.company.com</tns:domain><tns:sessionCleanupDelay>60</tns:sessionCleanupDelay></tns:SessionLoginInfo></applicationSpecificInfo></applicationInfo><requestedProtocolVersions><protocolVersion>http://www.ecma-international.org/standards/ecma-323/csta/ed3</protocolVersion><protocolVersion>http://www.ecma-international.org/standards/ecma-323/csta/ed4</protocolVersion><protocolVersion>http://www.ecma-international.org/standards/ecma-323/csta/ed5</protocolVersion></requestedProtocolVersions><requestedSessionDuration>180</requestedSessionDuration></StartApplicationSession>"

Dim data As Byte() = TCP_Encoder.GetBytes(message)

TCP_Stream.Write(data, 0, data.Length)
TCP_Stream.Read(bytes, 0, CInt(TCP_Client.ReceiveBufferSize))

' Output the data received from the host to the console.
responseData = Encoding.ASCII.GetString(bytes)
CSTAResponseData.Text = responseData
CSTAResponseData.Text = Mid(responseData, InStr(responseData, "<sessionID>"), 45)

' Close everything.
TCP_Stream.Close()
TCP_Client.Close()

Catch e1 As ArgumentNullException
'Console.WriteLine("ArgumentNullException: {0}", e)
MsgBox("argument null " & e1.ToString)
Catch e1 As SocketException
' Console.WriteLine("SocketException: {0}", e)
MsgBox("socket exp" & e1.ToString)
End Try
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Call CSTAPost()
End Sub
End Class

aber ich bekomme keinerlei Antwort.

 

Die PBX-Software läuft z.Zt. in einer virtuellen Umgebung, Version ist 5.1.2 (CentOS64). Das Webinterface ist auch erreichbar und konfigurierbar. CSTA Testlizenz ist auch aktiviert, und noch ein paar Tage gültig.

Als Basic-Version für den Test habe ich vb-Express 2010 unter Win7 64bit verwendet.

 

Ich habe es auch mit Usernamen und Passwort des Administrators der PBX versucht, und als Damäne versuchsweise die Windows-Domäne, aber es geht einfach nicht. Probeweise auch sämtliche Firewalls außer Bertrieb genommen, auch kein Ergebnis.

In der PBX habe ich der IP des aufrufenden PC SOAP-Zugriff gewährt, und in der IP-Zugriffskontrolle den Zugang ebenfalls erlaubt.

Aber meine Zugriffsversuche tauchen auch nicht in irgendeinem Log auf.

 

Muss ich in der PBX nocht irgendwas freischalten, wenn ja, wo? Oder muss CSTA noch installiert werden? Werde da aus den Beschreibungen nicht so ganz schlau, da englisch nicht unbedingt meine Sprache ist. Abgesehen davon, dass diese ganze Materie auch Neuland für mich ist.

 

Und noch eine Frage: ist mit dem Passwort im XML-String das SIP-Passwort oder das Web-Passwort des Users gemeint?

 

Sinn und Zweck der Übung soll werden, die Nummer des Anrufenden und die Dauer des Anrufs zeitnah zu ermitteln, und für Abrechnungszwecke zu verwenden.

 

Gruß

 

Hans

 

Link to comment
Share on other sites

Ok. Vermutlich ist CSTA eh das falsche Ansatz um an Daten für Abrechnungszwecke zu kommen. CSTA ist auch nicht gerade trivial. Da würde ich mir stattdessen einfach mal das CDR-Kapitel ansehen, http://www.snomone.com/documentation/cdr ist erst neulich auf den neuesten Stand gebracht worden. JSON wird mittlerweile von praktisch allen Frameworks unterstützt und dort werden alle "legs" berichtet.

 

P.S. Da fällt mir am Rande eine interessante Übung für den nächsten Hotelaufenthalt ein: Eine externe Nummer anrufen, den Hörer neben das Telefon legen, Auschecken und sehen ob das Gespräch es noch irgendwie auf die Rechnung schafft!

Link to comment
Share on other sites

  • 2 weeks later...

Hallo,

 

CDR ist wohl schon mal von einem Kollegen versucht worden, und als nicht ausreichend verworfen worden.

Ich hab dann weiterhin versucht, mit CSTA weiterzukommen, aber immer noch ergebnislos.

Was ich dank PCAP-Trace mitlerweile weiß, dass die Pakete zumindest bei der PBX ankommen, und auch quittiert werden, aber mehr passiert nicht.

Weiß jetzt nicht weiter.

Ist es der falsche Port? Existiert da ein Fehler in der PBX, der den XML-String falsch interpretiert, oder ist der XML-String doch fehlerhaft?

Sollte die PBX nicht wenigstens eine irgendeine Meldung zurückgeben?

 

ratlose Grüße

 

 

Hans

Link to comment
Share on other sites

CSTA ist nicht trivial. Die XML Pakete müssen in einen speziellen binären Header verpackt werden, sonst tut sich nichts auf der PBX. Ausserdem muss sich der CSTA-Client anmelden und eine Subscrion registrieren. Man kann das alles schön beim CSTA-Browser beobachten, Wireshark sollte auch in der Lage sein, dass sauber darzustellen. Aber wie gesagt glaube ich wäre es 100 x einfacher CDR einfach über ActionURL rauszuschieben.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...