Я использую Python с библиотекой pyVoIP, вот код:
Код: Выделить всё
from pyVoIP.VoIP import VoIPPhone, CallState, PhoneStatus, InvalidStateError
import time
import datetime
def answer(call): # This will be your callback function for when you receive a phone call
try:
print(call.state)
anum = call.request.headers["From"]["number"]
print(','+ datetime.datetime.now().strftime("%Y%m%d")+', '+ datetime.datetime.now().strftime("%X")+', '+ datetime.datetime.now().strftime("%f")+',,,,,,,'+anum+',0662279775,,,')
open('tmp.csv', 'w+')
f.write(','+ datetime.datetime.now().strftime("%Y%m%d")+', '+ datetime.datetime.now().strftime("%X")+', '+ datetime.datetime.now().strftime("%f")+',,,,,,,'+anum+',0662279775,,,')
print(anum)
call.answer()
call.hangup()
except InvalidStateError:
print(InvalidStateError)
pass
if __name__ == "__main__":
vp = VoIPPhone('79.98.45.133',5060,'06xxxxx','xxxxxxxx',callCallback=answer)
print('VOIP PHONE INIZIALIZATED: status = '+str(vp._status))
vp.start()
print('VoIP PHONE STARTED: status = '+str(vp._status))
while(vp._status==PhoneStatus.REGISTERING or vp._status==PhoneStatus.INACTIVE):
continue
print('WHILE LOOP STATUS ENDED: status = '+str(vp._status))
input('Press ENTER to stop')
time.sleep(5)
vp.stop()
print('STOPPED VOIP PHONE: status = '+str(vp._status))
time.sleep(5)
Код: Выделить всё
WHILE LOOP STATUS ENDED: status = PhoneStatus.REGISTERED
Я отследил пакет SIP, полученный клиентом клиент и я вижу, что SIP-сервер отправляет сообщения OPTIONS клиенту, но клиент не отвечает на них.
Я думаю, в этом проблема: сервер не получает ответа на сообщения OPTIONS, поэтому он думает, что клиент не работает, поэтому не пересылает вызов клиенту.
Есть ли способ настроить pyVoIP для ответа на сообщения OPTIONS?
Подробнее здесь: https://stackoverflow.com/questions/790 ... sip-server