Как передать голос через sip?
Я пользуюсь библиотекой Independentsoft.Sip Пишу на XAMARIN.FORMS делаю под андроид В следующем коде я установил соединение с сервером
private static Logger logger;
private static SipClient client;
public CallViewModel()
{
client = new SipClient("192.168.0.105", "1001", "1234");
logger = new Logger();
logger.WriteLog += new WriteLogEventHandler(OnWriteLog);
client.Logger = logger;
client.ReceiveRequest += new ReceiveRequestEventHandler(OnReceiveRequest);
client.ReceiveResponse += new ReceiveResponseEventHandler(OnReceiveResponse);
client.Connect();
client.Register("sip:192.168.0.105", "sip:[email protected]", "sip:1001@" +
client.LocalIPEndPoint.ToString());
Call();
}
после соединения я звоню на другой телефон вот код
public void Call()
{
string hostName = Dns.GetHostName(); // Retrive the Name of HOST
string myIP = Dns.GetHostByName(hostName).AddressList[0].ToString();
SessionDescription session = new SessionDescription();
session.Version = 0;
Owner owner = new Owner();
owner.Username = "1001";
owner.SessionID = 16264;
owner.Version = 18299;
owner.Address = myIP;
session.Owner = owner;
session.Name = "SIP Call";
Connection connection = new Connection();
connection.Address = myIP;
session.Connection = connection;
Time time = new Time(0, 0);
session.Time.Add(time);
Media media1 = new Media();
media1.Type = "audio";
media1.Port = 25282;
media1.TransportProtocol = "RTP/AVP";
media1.MediaFormats.Add("0");
media1.MediaFormats.Add("101");
media1.Attributes.Add("rtpmap", "0 pcmu/8000");
media1.Attributes.Add("rtpmap", "101 telephone-event/8000");
media1.Attributes.Add("fmtp", "101 0-11");
session.Media.Add(media1);
RequestResponse inviteRequestResponse = client.Invite("sip:[email protected]", "sip:[email protected]", "sip:1001@" + client.LocalIPEndPoint.ToString(), session);
client.Ack(inviteRequestResponse);
}
в методе Call я устанавливаю сессию , в которой пытаюсь передать объект Media , Time ,Connection если я правильно понял Media отвечает как раз за передачу голосового общения во время звонка, однако звонок не проходит , если убрать параметр session из метода Invite следующим образом:
RequestResponse inviteRequestResponse = client.Invite("sip:[email protected]", "sip:[email protected]", "sip:1001@" + client.LocalIPEndPoint.ToString(), null,null);
То звонок проходит , но нет звука , помогите разобраться с этой задачей заранее спасибо!