Xamarin.Forms Sip: «Внутренняя ошибка сервера 500» при выполнении исходящих вызовов - PullRequest
0 голосов
/ 04 октября 2018

Я использую Linphone SDK в проекте Xamarin.forms для вызова sip.Я могу установить соединение, используя следующий код:

           var authInfo = Factory.Instance.CreateAuthInfo(username.Text, 
           null, password.Text, null, null,domain.Text);
            LinphoneCore.AddAuthInfo(authInfo);
            String proxyAddress ="sip:"+username.Text+"@192.168.1.180:5160";
            var identity = Factory.Instance.CreateAddress(proxyAddress);
            var proxyConfig = LinphoneCore.CreateProxyConfig();
            identity.Username = username.Text;
            identity.Domain = domain.Text;
            identity.Transport = TransportType.Udp;
            proxyConfig.Edit();
            proxyConfig.IdentityAddress = identity;
            proxyConfig.ServerAddr = domain.Text + ":5160;transport=udp";
            proxyConfig.Route = domain.Text;
            proxyConfig.RegisterEnabled = true;

            proxyConfig.Done();

            LinphoneCore.AddProxyConfig(proxyConfig);
            LinphoneCore.DefaultProxyConfig = proxyConfig;

            LinphoneCore.RefreshRegisters();

После успешного подключения я использую код для размещения кода.

        if (LinphoneCore.CallsNb == 0)
        {
            string phoneCall = "sip:"+address.Text+ "@192.168.1.180:5160";
            var addr = LinphoneCore.InterpretUrl(phoneCall);
            LinphoneCore.InviteAddress(addr);
        }
        else
        {
            Call call = LinphoneCore.CurrentCall;
            if (call.State == CallState.IncomingReceived)
            {
                LinphoneCore.AcceptCall(call);
            }
            else
            {
                LinphoneCore.TerminateAllCalls();
            }
        }

И слушатель, который слушаетСобытие изменения состояния вызова имеет вид:

   private void OnCall(Core lc, Call lcall, CallState state, stringmessage)
   {
        call_status.Text = "Call state changed: " + state;

        if (lc.CallsNb > 0)
        {
            if (state == CallState.IncomingReceived)
            {
                call.Text = "Answer Call (" + lcall.RemoteAddressAsString + ")";
            }
            else
            {
                call.Text = "Terminate Call";
            }
            if (lcall.CurrentParams.VideoEnabled) {
                video.Text = "Stop Video";
            } else {
                video.Text = "Start Video";
            }
        }
        else
        {
            call.Text = "Start Call";
            call_stats.Text = "";
        }
    }

Состояние вызова задает «Внутренняя ошибка сервера».Я могу принимать звонки с помощью Linphone или X-lite Soft Phone в своем коде, но я не могу делать звонки.Я не знаю, связана ли эта проблема с сервером или с моим кодом.Пожалуйста, предложите.

1 Ответ

0 голосов
/ 04 октября 2018

Внутренняя ошибка сервера ( Код состояния HTTP 500 ) означает, что на сервере произошла непредвиденная ошибка.Так что я подозреваю, что проблема скорее в этом, чем в коде вашего приложения.

500 - общее сообщение об ошибке, которое появляется при возникновении непредвиденного условия и более конкретного сообщенияподходит.

Возможно, ваш запрос не соответствует ожиданиям конечной точки, которую вы вызываете, но даже в этом случае сервер должен ответить более значимой ошибкой, чем сбой с 500.

...