Я создаю приложение для звонков Winforms, используя библиотеку SIPSorcery, чтобы совершать и принимать вызовы от учетных записей, зарегистрированных на сервере OpenScape моей компании. Сервер протестирован с приложением вызовов Zoiper, и эти учетные записи отлично работают с Zoiper, поэтому я также использую Zoiper для тестирования своего приложения. Теперь я могу настроить свое приложение для входа в систему и приема вызовов от учетных записей, зарегистрированных в Zoiper, но не могу выполнить обратный звонок с помощью своего приложения.
Вот мой код:
private async Task MakeCall()
{
try
{
string destUri = $"sip:{Username2}@{Domain}:{Port}";
var winAudioEndPoint = new WindowsAudioEndPoint(new AudioEncoder());
winAudioEndPoint.RestrictFormats(x => x.Codec == AudioCodecsEnum.PCMU);
var voipMediaSession = new VoIPMediaSession(winAudioEndPoint.ToMediaEndPoints());
voipMediaSession.AcceptRtpFromAny = true;
SIPCallDescriptor callDescriptor = new SIPCallDescriptor(
username: Username1,
password: Password,
uri: destUri,
from: $"sip:{Username}@{Domain}:{Port}",
to: destUri,
routeSet: null,
customHeaders: new List
{
"User-Agent: CustomClient"
},
authUsername: Username,
callDirection: SIPCallDirection.Out,
contentType: SDP.SDP_MIME_CONTENTTYPE,
content: null,
mangleIPAddress: null
);
bool callResult = await _sipUserAgent.Call(callDescriptor, voipMediaSession, 15);
if (callResult)
{
AddToListBox("Call initiated.");
}
else
{
AddToListBox("Call failed to connect.");
}
}
catch (Exception ex)
{
AddToListBox($"Error making call: {ex.Message}");
}
}
Подробнее здесь: https://stackoverflow.com/questions/786 ... sipsorcery