Регистрация SIP с использованием Ozeki SDK не работает
Я пытаюсь создать простое приложение VoIP с использованием C#, поэтому я обнаружил, что Ozeki SDK
это простой способ сделать это, но когда я пытаюсь зарегистрировать учетную запись SIP с помощью SIPAccount
класс из Ozeki SDK
и мой местный IP
это всегда терпит неудачу, и это код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ozeki.VoIP;
using Ozeki.VoIP.SDK;
namespace SIP_R
{
class Program
{
private static ISoftPhone softphone; // softphone object
private static IPhoneLine phoneLine; // phoneline object
private static void Main(string[] args)
{
// Create a softphone object with RTP port range 5000-10000
softphone = SoftPhoneFactory.CreateSoftPhone(5000, 10000);
// SIP account registration data, (supplied by your VoIP service provider)
var registrationRequired = true;
var userName = "1000";
var displayName = "1000";
var authenticationId = "1000";
var registerPassword = "1000";
var domainHost = SoftPhoneFactory.GetLocalIP().ToString();
var domainPort = 9000;
var account = new SIPAccount(registrationRequired, displayName, userName, authenticationId, registerPassword, domainHost, domainPort);
// Send SIP regitration request
RegisterAccount(account);
// Prevents the termination of the application
Console.ReadLine();
}
static void RegisterAccount(SIPAccount account)
{
try
{
phoneLine = softphone.CreatePhoneLine(account);
phoneLine.RegistrationStateChanged += sipAccount_RegStateChanged;
softphone.RegisterPhoneLine(phoneLine);
}
catch (Exception ex)
{
Console.WriteLine("Error during SIP registration: " + ex);
}
}
static void sipAccount_RegStateChanged(object sender, RegistrationStateChangedArgs e)
{
if (e.State == RegState.Error || e.State == RegState.NotRegistered)
Console.WriteLine("Registration failed!");
if (e.State == RegState.RegistrationSucceeded)
Console.WriteLine("Registration succeeded - Online!");
}
}
}
поэтому, пожалуйста, любая помощь о том, что делать большое спасибо заранее за любую помощь..
при попытке сделать программные звонки с использованием Ozeki SDK и локального IP выдает ошибку NatType:UDPBlocked
3 ответа
У вас есть открытые порты UDP и TCP 5060? (Стандартный порт SIP) Можете ли вы зарегистрировать обычный программный телефон SIP со своего компьютера разработчика?
Из вашего сообщения об ошибке звучит, как будто у вас проблема с брандмауэром, а не проблема с кодом.
И, глядя на ваш код, я бы проверил все порты, которые вы ввели: от 5000 до 10000.
После изучения вашего кода и объяснения регистрации SIP на веб-сайте SDK я думаю, что эта строка создает проблему:
var domainHost = SoftPhoneFactory.GetLocalIP().ToString();
Чтобы иметь возможность общаться, нам нужно зарегистрировать наш программный телефон на АТС. Для этого в примере используется метод Register. Для этой регистрации нам нужно создать телефонную линию, для которой требуется учетная запись SIP и метод NAT Traversal.
(Источник: Как зарегистрироваться на АТС, используя учетную запись SIP?)
Таким образом, целью этого фрагмента кода является определение учетной записи SIP, которая будет зарегистрирована на определенной АТС. Соответственно, domainHost должен быть IP-адрес УАТС, на которую вы хотите зарегистрироваться. (И domainPort должен быть номером порта этой УАТС.)
Ошибка: NatType:UDPBlocked
Код SDK:
<member name="F:Ozeki.Network.Nat.NatType.UdpBlocked">
<summary>
Firewall that blocks UDP.
</summary>
<remarks>
Probably no internet connection available or firewall issue.
</remarks>
</member>
Возможно, нет доступа к интернету или проблема с брандмауэром.
Попробуйте включить расширенный исходящий NAT, измените исходящее правило по умолчанию, чтобы включить статический порт. Перезагрузите адаптер.
Как следует из кода SDK,
Проверьте брандмауэр и порты, у вас есть проблема решена