smorod
Goto Top

CSharp Anrufbefehl an Linksys SPA962 via UDP

Hallo Community,

ich wollte mir ein Tool basteln, mit dem ich Telefonnummern am PC eingeben (kopieren/einfügen) kann, daraus dann ein UDP Paket zusammengestellt wird und dieses an das Linksys SPA962 geschickt wird, um den Wahlvorgang einzuleiten.

Jetzt habe ich mir schon mehrere Beiträge im Internet durchgelesen, aber keiner dieser Beiträge hat meine Problematik behandelt.


Die ersten wichtigen Punkte die ich gefunden habe waren folgende:

Im Webinterface vom SPA962 müssen die Optionen "CTI Enable:" und "Linksys Key System:" auf "yes" gestellt werden.

Dies wurde auch gemacht.

Da ich nicht sicher bin, wo der Fehler liegt, schreibe ich euch mal den ausgeführten Code hier hin:


Definition der Variablen:

string proxy = "xx.xxx.xxx.xxx"; SIP Server
int extension = 70;
die Druchwahl von meinem SPA 962
string myHost = "192.168.1.20"; Mein Rechner
string myHostName = System.Environment.MachineName;
Mein Hostname
string phoneIPAddress = "192.168.1.83"; IP Adresse von meinem SPA962
int port = 5060;
SIP Port


Code:
private void btnCall_Click(object sender, RoutedEventArgs e)
        {
            // Prüfung ob eine Telefonnummer eingegeben wurde
            if (tbCallTo.Text == "")  
            {
                MessageBox.Show("Bitte eine Telefonnummer eintragen!");  
            }
            else
            {
                contactPhone = 0 + tbCallTo.Text;
                string packetPrep0 = @"NOTIFY sip:" + extension + "@" + phoneIPAddress + ":" + port + " SIP/2.0\r\n" +  
                    "Via: SIP/2.0/UDP " + myHost +"\r\n" +  
                    "Max-Forwards: 70\r\n" +  
                    "From: <sip:" + myHostName + "@" + myHost + ">\r\n" +  
                    "To: <sip:"+ extension  + "@" + phoneIPAddress + ">\r\n" +  
                    "Call-ID: 70\r\n" +  
                    "CSeq: 1 NOTIFY\r\n" +  
                    "Contact: <sip:" + extension + "@" + proxy + ":" + port + ">\r\n" +  
                    "Content-Type: application/x-spa-control\r\n" +   
                    "Content-Length: 75\r\n" +  
                    "Event: x-spa-cti\r\n\r\n" +  
                    "<spa-control>\r\n"+  
                    "<newcall uri=\"" + contactPhone + "@"+ proxy +"\" call=\"1\" />\r\n"+  
                    "</spa-control>";  


                byte packetData0 = System.Text.ASCIIEncoding.ASCII.GetBytes(packetPrep0);
                IPEndPoint ep = new IPEndPoint(IPAddress.Parse(phoneIPAddress), port);

                Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
                client.SendTo(packetData0, ep);


                MessageBox.Show("Anruf an Telefon gesendet!");  
            }
        }

Um zu prüfen was genau geschickt wird, hab ich mir einen kleine UDP Empfänger geschrieben bei dem folgendes Ankommt:

NOTIFY sip:70@192.168.1.83:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.20
Max-Forwards: 70
From: <sip:GALAXY@192.168.1.20>
To: <sip:70@192.168.1.83>
Call-ID: 70
CSeq: 1 NOTIFY
Contact: <sip:70@xx.xxx.xxx.xxx:5060>
Content-Type: application/x-spa-control
Content-Length: 75
Event: x-spa-cti

<spa-control>
<newcall uri="012345678@xx.xxx.xxx.xxx" call="1" />
</spa-control>


Vom Telefon erhalte ich dann folgende Antwort:


SIP/2.0 404 Not Found
To: <sip:70@192.168.1.83>;tag=4ba06ef99966d84i0
From: <sip:GALAXY@192.168.1.20>
Call-ID: 70
CSeq: 1 NOTIFY
Via: SIP/2.0/UDP 192.168.1.20
Server: Linksys/SPA962-6.1.5(a)
Content-Length: 0


Das Telefon selbst zeigt dabei keine Reaktion...
Ich konnte leider nicht heraus finden, auf was genau diese 404 Meldung verweist.
Kann mir hier vielleicht jemand auf die Sprünge helfen?

Vielen Dank und lieben Gruß
Smorod

Content-Key: 228532

Url: https://administrator.de/contentid/228532

Printed on: April 25, 2024 at 22:04 o'clock