43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
from PySIP.sip_account import SipAccount
|
|
from PySIP.sip_call import SipCall
|
|
import os
|
|
import asyncio
|
|
from dotenv import load_dotenv
|
|
import logging
|
|
|
|
# Load SIP credentials from .env file
|
|
load_dotenv()
|
|
try:
|
|
if len(os.environ["SIP_CONN_TYPE"]) < 1:
|
|
os.environ["SIP_CONN_TYPE"] = "AUTO"
|
|
except:
|
|
os.environ["SIP_CONN_TYPE"] = "AUTO"
|
|
|
|
account = SipAccount(
|
|
os.environ["SIP_USERNAME"],
|
|
os.environ["SIP_PASSWORD"],
|
|
os.environ["SIP_SERVER"],
|
|
connection_type = os.environ["SIP_CONN_TYPE"]
|
|
)
|
|
|
|
|
|
async def main():
|
|
logger = logging.getLogger(__name__)
|
|
logger.setLevel(logging.DEBUG)
|
|
await account.register()
|
|
|
|
@account.on_incoming_call
|
|
async def handle_incoming_call(call: SipCall):
|
|
print("incoming call!")
|
|
await call.accept() # or call.reject() or call.busy()
|
|
await call.call_handler.say("Thank you for calling us!")
|
|
await call.call_handler.hangup()
|
|
|
|
loop = 0
|
|
while True:
|
|
await asyncio.sleep(60)
|
|
loop = loop + 1
|
|
logger.log(logging.INFO, f"Hey, we've been running for {loop} minutes...just so you know.")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|