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.