#c# #event-handling #freeswitch
Вопрос:
Я разрабатываю номеронабиратель с использованием NEventSocket(входящий режим), на данный момент я могу инициировать вызовы, и когда я вижу ответ на канал, я воспроизводю wav-файл.
Номеронабиратель имеет механизм отработки отказа: если команда originate возвращает ошибку, он набирает следующий номер(они есть в списке).
Он отлично работает, если номер не зарегистрирован или не ответил, но он не может определить, когда номер занят.
Это связано с тем, что я установил ignore_early_media=true, но если я не установлю это таким образом, то команда originate будет рассматривать это как ответ.
Я видел несколько других примеров на других языках, и они используют что-то вроде: Сессия.ToneDetect(busytone) определяет только сигнал «занято», но в NEventSocket, похоже, нет объекта сеанса.
//socket initialization
...
//originate
var res = socket.Originate("{origination_uuid=" uuid ",ignore_early_media=true,originate_timeout=5}" n)...
//Handle Aswer and Hangup events
socket.ChannelEvents.Where(x => (x.UUID == uuid) amp;amp; (x.EventName == EventName.ChannelAnswer))...
Как определить сигнал «занято» в моем приложении c# NEventSocket ? или, если это невозможно, каковы альтернативы ?