47 lines
1.1 KiB
Python
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()
|