{"id":29290998,"url":"https://github.com/tayler6000/pyvoip","last_synced_at":"2025-07-06T07:12:22.604Z","repository":{"id":41993995,"uuid":"280363176","full_name":"tayler6000/pyVoIP","owner":"tayler6000","description":"Pure python VoIP/SIP/RTP library.  Currently supports PCMA, PCMU, and telephone-event","archived":false,"fork":false,"pushed_at":"2025-03-04T22:05:08.000Z","size":418,"stargazers_count":267,"open_issues_count":93,"forks_count":118,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-07-01T21:13:47.680Z","etag":null,"topics":["python","rtp","sip","voip"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/pyVoIP/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tayler6000.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"custom":["https://paypal.me/tayler6000"]}},"created_at":"2020-07-17T07:55:39.000Z","updated_at":"2025-06-26T06:49:53.000Z","dependencies_parsed_at":"2023-01-22T00:01:10.129Z","dependency_job_id":"95f59d45-1168-41d0-b389-8b98be0f2748","html_url":"https://github.com/tayler6000/pyVoIP","commit_stats":{"total_commits":100,"total_committers":9,"mean_commits":11.11111111111111,"dds":"0.19999999999999996","last_synced_commit":"733fc7f7100f143b6c141c8c7903dca7392a5a8c"},"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/tayler6000/pyVoIP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tayler6000%2FpyVoIP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tayler6000%2FpyVoIP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tayler6000%2FpyVoIP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tayler6000%2FpyVoIP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tayler6000","download_url":"https://codeload.github.com/tayler6000/pyVoIP/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tayler6000%2FpyVoIP/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263862009,"owners_count":23521361,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["python","rtp","sip","voip"],"created_at":"2025-07-06T07:12:16.859Z","updated_at":"2025-07-06T07:12:22.599Z","avatar_url":"https://github.com/tayler6000.png","language":"Python","funding_links":["https://paypal.me/tayler6000"],"categories":[],"sub_categories":[],"readme":"# pyVoIP\nPyVoIP is a pure python VoIP/SIP/RTP library.  Currently, it supports PCMA, PCMU, and telephone-event.\n\nThis library does not depend on a sound library, i.e. you can use any sound library that can handle linear sound data i.e. pyaudio or even wave.  Keep in mind PCMU/PCMA only supports 8000Hz, 1 channel, 8 bit audio.\n\n## Getting Started\nSimply run `pip install pyVoIP`, or if installing from source:\n\n```bash\ngit clone https://github.com/tayler6000/pyVoIP.git\ncd pyVoIP\npip install .\n```\n\nDon't forget to check out [the documentation](https://pyvoip.readthedocs.io/)!\n\n### Basic Example\nThis basic code will simple make a phone that will automatically answer then hang up.\n\n```python\nfrom pyVoIP.VoIP import VoIPPhone, InvalidStateError\n\ndef answer(call): # This will be your callback function for when you receive a phone call.\n    try:\n      call.answer()\n      call.hangup()\n    except InvalidStateError:\n      pass\n  \nif __name__ == \"__main__\":\n    phone=VoIPPhone(\u003cSIP Server IP\u003e, \u003cSIP Server Port\u003e, \u003cSIP Server Username\u003e, \u003cSIP Server Password\u003e, callCallback=answer, myIP=\u003cYour computer's local IP\u003e, sipPort=\u003cPort to use for SIP (int, default 5060)\u003e, rtpPortLow=\u003clow end of the RTP Port Range\u003e, rtpPortHigh=\u003chigh end of the RTP Port Range\u003e)\n    phone.start()\n    input('Press enter to disable the phone')\n    phone.stop()\n```\n\n### Sponsors\n\n- [Nabu Casa](https://www.nabucasa.com/)\n- [Home Assistant](https://www.home-assistant.io/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftayler6000%2Fpyvoip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftayler6000%2Fpyvoip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftayler6000%2Fpyvoip/lists"}