{"id":18426213,"url":"https://github.com/clevertap/ctsoftphone","last_synced_at":"2025-07-20T00:33:27.375Z","repository":{"id":45897967,"uuid":"468088464","full_name":"CleverTap/CTSoftPhone","owner":"CleverTap","description":"Basic PJSUA/PJSIP wrapper supporting VOIP calling on iOS devices and simulators","archived":false,"fork":false,"pushed_at":"2024-11-18T13:47:54.000Z","size":242349,"stargazers_count":3,"open_issues_count":2,"forks_count":6,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-07T16:41:36.365Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CleverTap.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"License.txt","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}},"created_at":"2022-03-09T20:52:08.000Z","updated_at":"2025-03-14T02:33:53.000Z","dependencies_parsed_at":"2024-11-18T14:51:25.675Z","dependency_job_id":null,"html_url":"https://github.com/CleverTap/CTSoftPhone","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/CleverTap/CTSoftPhone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleverTap%2FCTSoftPhone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleverTap%2FCTSoftPhone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleverTap%2FCTSoftPhone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleverTap%2FCTSoftPhone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CleverTap","download_url":"https://codeload.github.com/CleverTap/CTSoftPhone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CleverTap%2FCTSoftPhone/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266048668,"owners_count":23868743,"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":[],"created_at":"2024-11-06T05:07:15.117Z","updated_at":"2025-07-20T00:33:22.361Z","avatar_url":"https://github.com/CleverTap.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CTSoftPhone\n\nBasic [PJSUA/PJSIP](https://www.pjsip.org/) wrapper supporting VOIP calling on iOS devices and simulators\n\n## Usage\n\n```\nimport CTSoftPhone\n\n// set logging level\nCTSoftPhone.setDebugLevel(CTSoftPhoneLogLevel.debug)\n// CTSoftPhone.setDebugLevel(CTSoftPhoneLogLevel.info)\n// CTSoftPhone.setDebugLevel(CTSoftPhoneLogLevel.off)\n\n... \n\n// implement CTSoftPhoneDelegate\n@objc func onRegistrationState(_ state: CTSoftPhoneRegistrationState) {...}\n@objc func onCallState(_ state: CTSoftPhoneCallState) {...}\n\n// create config with port and transport type\nlet pjsipConfig = CTSoftPhoneConfig.init(port: 7503, transport: .TCP)\n\n// init sharedInstance with your delegate and config\npjsipInstance = CTSoftPhone.sharedInstance(with: self, config: pjsipConfig)\n\n...\n\n// register account\npjsipInstance.register(withNumber: \u003csip account number\u003e, withHost: \u003csip host\u003e, withCredentials: \u003csip account credentials\u003e)\n \n...\n \n// unregister account \npjsipInstance.destroy()\n\n// end call \npjsipInstance.hangup()\n \n// mute/unmute\npjsipInstance.mute()\npjsipInstance.unmute()\n \n// speaker\npjsipInstance.speakeron()\npjsipInstance.speakeroff()\n \n```\n\n\n## Install\n\n### [Swift Package Manager](https://swift.org/package-manager/) \n\nAdd the `https://github.com/CleverTap/CTSoftPhone.git` url to your project's Swift packages\n\n### [CocoaPods](https://cocoapods.org)\n\n```\n target 'YOUR_TARGET_NAME' do  \n      pod 'CTSoftPhone'  \n  end \n```\n\n### Manual\n\nDownload the `CTSoftPhone.xcframework` included in this repository, drag it into your project and add it as an embedded framework in your build settings\n\n### Caveats\nUsage with transports other than TCP has not been tested.\nAsterisk v18.9.0 is the only SIP server this has been tested with so far.\nThis is a basic wrapper around pjsua and does not implement all functionality.  \nThe current version requires an external trigger to your SIP server to generate an invite once the client is registered with the SIP server.\nThere is no general plan to implement all available functionality although happyt to consider PRs.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclevertap%2Fctsoftphone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclevertap%2Fctsoftphone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclevertap%2Fctsoftphone/lists"}