Ozeki voip sip C# 呼叫

问题描述 投票:0回答:1

我正在使用

Ozeki
sip
库进行电话呼叫,单击面板时,呼叫应该转至电话,为了测试代码,我在
yate
客户端上添加了一个帐户,我编写了该帐户在代码中。电话接通了,但不幸的是,我一接电话就挂断了。这可能与麦克风的初始化有关。你能帮我吗?

`using Ozeki.Media;
using Ozeki.VoIP;
using Ozeki.VoIP.Media;

namespace OperationRoomControlPanelV1._1._0
{
    public partial class FormMain : Form

    { static ISoftPhone softphone;   // softphone object
        static IPhoneLine phoneLine;   // phoneline object
        static IPhoneCall call;
        static Microphone microphone;
        static Speaker speaker;
        static MediaConnector connector;
        static PhoneCallAudioSender mediaSender;
        static PhoneCallAudioReceiver mediaReceiver;

        public FormMain()
        {
            CheckForIllegalCrossThreadCalls = false;
            InitializeComponent();

            softphone = SoftPhoneFactory.CreateSoftPhone(5000, 10000);

            microphone = Microphone.GetDefaultDevice(); // Mikrofonu burada tanımlayın
            speaker = Speaker.GetDefaultDevice(); // Hoparlörü burada tanımlayın

            // Kayıt işlemini uygulama başlatılırken gerçekleştirelim.
            RegisterAccount();

            // Gelen çağrıyı yanıtlamak için olay işleyicisini ekleyelim.
            softphone.IncomingCall += SoftPhone_IncomingCall;

            // AyarlarTelefonPanel_Click metoduna çağrı yapmayı ekleyelim.
            ayarlarTelefonPanel.Click += AyarlarTelefonPanel_Click;





        }

         private void RegisterAccount()
        {
            try
            {
                // SIP hesabınızın bilgilerini atıyoruz.

                var registrationRequired = true;
                var userName = "";
                var displayName = "";
                var authenticationId = "";
                var registerPassword = ""; 
                var domainHost = "";
                var domainPort = 5060;

                var account = new SIPAccount(registrationRequired, displayName, userName, authenticationId, registerPassword, domainHost, domainPort);
                // Telefon hattını kaydediyoruz.
                phoneLine = softphone.CreatePhoneLine(account);
                softphone.RegisterPhoneLine(phoneLine);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Hata: {ex.Message}");
            }
        }

        private void SoftPhone_IncomingCall(object sender, Ozeki.Media.VoIPEventArgs<IPhoneCall> e)
        {
            // Gelen çağrıyı yanıtlıyoruz.
            call = e.Item;
            call.CallStateChanged += PhoneCall_CallStateChanged;
            call.Answer();
        }

        private void PhoneCall_CallStateChanged(object sender, CallStateChangedArgs e)
        {
            Console.WriteLine($"Call State Changed: {e.State}");

            if (e.State == CallState.Answered)
            {
                SetupDevices();
            }
            else if (e.State == CallState.Completed)
            {
                StopDevices();
            }
        }

        private void SetupDevices()
        {
            try
            {
                connector = new MediaConnector();
                mediaSender = new PhoneCallAudioSender();
                mediaReceiver = new PhoneCallAudioReceiver();

                connector.Connect(microphone, mediaSender);
                connector.Connect(mediaReceiver, speaker);

                mediaSender.AttachToCall(call);
                mediaReceiver.AttachToCall(call);
                microphone.Start();
                speaker.Start();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"SetupDevices Error: {ex.Message}");
            }
        }
        private void StopDevices()
        {
            try
            {
                microphone.Stop();
                speaker.Stop();
                // Diğer gerekli işlemleri burada gerçekleştirin
            }
            catch (Exception ex)
            {
                Console.WriteLine($"StopDevices Error: {ex.Message}");
            }
        }

   private void AyarlarTelefonPanel_Click(object sender, EventArgs e)
        {
            // Hastanenin SIP adresini alalım.
            string sipAddress = "sip:[email protected]";

            // Telefon hattı üzerinden çağrı yapalım
            IPhoneCall call = softphone.CreateCallObject(phoneLine, sipAddress);
            call.CallStateChanged += PhoneCall_CallStateChanged;
            call.Start();
        }



    }
}`

我希望这是一个真正的电话。

your text

sdk call sip voip ozeki
1个回答
0
投票

呼叫在应答后立即结束的典型原因是:双方的音频编解码器和/或加密设置不匹配。检查 yate 客户端的设置并验证您的应用程序是否使用相同的设置。

© www.soinside.com 2019 - 2024. All rights reserved.