sdrplay-fm-radio/calling.py
2024-06-29 19:28:01 +09:30

47 lines
1.1 KiB
Python

from pyVoIP.VoIP import VoIPPhone, InvalidStateError, CallState
import time
import wave
def answer(call):
print("Call answered!")
try:
f = wave.open("data/sampleaudio/BabyElephantWalk60.wav", "rb")
frames = f.getnframes()
data = f.readframes(frames)
f.close()
call.answer()
call.write_audio(
data
) # This writes the audio data to the transmit buffer, this must be bytes.
stop = time.time() + (
frames / 8000
) # frames/8000 is the length of the audio in seconds. 8000 is the hertz of PCMU.
while time.time() <= stop and call.state == CallState.ANSWERED:
time.sleep(0.1)
call.hangup()
except InvalidStateError:
pass
except:
call.hangup()
if __name__ == "__main__":
phone = VoIPPhone(
"localhost",
5060,
"john.doe",
"password",
myIP="127.0.0.1",
sipPort=25060,
callCallback=answer,
)
phone.start()
input("Press enter to disable the phone")
phone.stop()