Я хотел бы создать консольный программный клиент, построенный на PJSUA2 API в Python.
У меня проблема с тупиком, когда я пытаюсь ответить на входящий вызов.
def onIncomingCall(self, prm):
c = Call(self, call_id=prm.callId)
call_prm = pj.CallOpParam()
call_prm.statusCode = 180
c.answer(call_prm)
В этомcase c.answer (call_prm) никогда не отправит ответное сообщение «180».
def onIncomingCall(self, prm):
c = Call(self, call_id=prm.callId)
call_prm = pj.CallOpParam()
call_prm.statusCode = 180
c.answer(call_prm)
raise Exception('test')
Если код был расширен на Exception
, то c.answer
отправит ответное сообщение «180».
Согласно этому руководству проблема в тупике.Блокировка находится в главном потоке, и поэтому фоновый работник не может завершить вызов функции ответа.
Как снять блокировку обратно в фоновый рабочий поток и после ответа на вызов?
Конечная точка запускается со следующими настройками:
ep_cfg.uaConfig.threadCnt = 1
ep_cfg.uaConfig.mainThreadOnly = False