2017-02-07 3 views
0

Ich versuche, einfach click-to-call app zu machen. Ich habe Asterisk-Server installiert und ich kann Anrufe mit kostenlos tätigen. Aber wenn ich etwas mit meiner App sende, bekomme ich keine Antwort.Asterisk antwortet nicht auf App-Anfragen über SIP

Ich habe nicht zuvor mit Sockets gearbeitet. So könnte es der Fall sein.

Hier ist mein Code:

string registerHeader = "REGISTER sip:asteriskip;transport=UDP SIP/2.0\r\n"; 
string toHeader = "To: <sip:[email protected];transport=UDP>\r\n"; 
string fromHeader = "From: <sip:[email protected];transport=UDP>\r\n"; 
string callId = "Call-ID: 1\r\n"; 
string CSeq = "CSeq: 1 REGISTER\r\n"; 
string expires = "Expires: 3600\r\n"; 
string via = "Via: SIP/2.0/UDP myip:myport;branch=z9hG4bK-1\r\n"; 
string maxF = "Max-Forwards: 70\r\n"; 
string UA = "User-Agent: MySoftphone\r\n"; 
string contact = "Contact: <sip:[email protected]:myport;transport=UDP>\r\n"; 
string contLength = "Content-Length: 0\r\n\r\n"; 

Socket cl = new Socket(SocketType.Dgram, ProtocolType.Udp); 
byte[] registerMsg = Encoding.ASCII.GetBytes(registerHeader + toHeader + 
    fromHeader + callId + CSeq + expires+via+maxF+UA+contact+contLength); 
IPEndPoint server = new IPEndPoint(IPAddress.Parse("asteriskip"), 5060); 
cl.Connect(server); 
cl.Send(registerMsg);//(registerMsg, registerMsg.Length); 
int bytesCount = 0; 
do 
{ 
    byte[] response = new byte[] { }; 
    cl.Receive(response);//(ref server); 
    bytesCount = response.Length; 
    string resp = Encoding.ASCII.GetString(response); 
    Console.WriteLine(resp); 
} 
while (bytesCount == 0); 
Console.ReadKey(); 

Diese Anfrage ist fast gleich wie softphone's, nahm es von wireshark. Aber bekommt Antwort und diese Anfrage nicht. Es sollte Register CSeq 2 sein, ich habe versucht, es zu senden - immer noch nichts, und wenn ich mich nicht irre, sollte ich etwas wie 401-Unauthorized nach dem 1. Teil des Registers erhalten.

Antwort

0

Nach einigen Recherchen fand ich, dass ich tag Parameter fehlte. Wenn tag nicht festgelegt ist, ignoriert der Server Anforderungen.