Как передать голос через 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);

То звонок проходит , но нет звука , помогите разобраться с этой задачей заранее спасибо!


Ответы (0 шт):