[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9897":3},{"id":4,"name":5,"fullName":6,"owner":5,"repo":5,"description":7,"homepage":8,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":23,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":40,"readmeContent":41,"aiSummary":42,"trendingCount":15,"starSnapshotCount":15,"syncStatus":43,"lastSyncTime":44,"discoverSource":45},9897,"fonoster","fonoster\u002Ffonoster","🚀 The open-source alternative to Twilio.","https:\u002F\u002Ffonoster.com",null,"TypeScript",7981,526,115,5,0,9,70,1,75.67,"MIT License",false,"main",true,[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39],"cloud","cloud-communications-platform","cpaas","customer-engagement","customer-experience","javascript","kubernetes","nodejs","programmable-voice","telephony","twilio","typescript","ucaas","voip","webrtc","2026-06-12 04:00:47","\n# Fonoster: The open-source alternative to Twilio\n\n[Fonoster](https:\u002F\u002Ffonoster.com) is researching an innovative Programmable Telecommunications Stack that will allow businesses to connect telephony services with the Internet entirely through a cloud-based utility.\n\n\u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002FmpWSRUhG7e\">\u003Cimg alt=\"Fonoster community banner\" src=\"https:\u002F\u002Fraw.githubusercontent.com\u002Ffonoster\u002F.github\u002Fmain\u002Fprofile\u002Fcommunity.png\">\u003C\u002Fimg>\u003C\u002Fa>\n\n![build](https:\u002F\u002Fgithub.com\u002Ffonoster\u002Ffonoster\u002Fworkflows\u002Funit%20tests\u002Fbadge.svg) [![release](https:\u002F\u002Fgithub.com\u002Ffonoster\u002Ffonoster\u002Factions\u002Fworkflows\u002Frelease.yaml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Ffonoster\u002Ffonoster\u002Factions\u002Fworkflows\u002Frelease.yaml) [![Discord](https:\u002F\u002Fimg.shields.io\u002Fdiscord\u002F1016419835455996076?color=5865F2&label=Discord&logo=discord&logoColor=white)](https:\u002F\u002Fdiscord.gg\u002F4QWgSz4hTC) \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffonoster\u002Ffonoster\u002Fblob\u002Fmain\u002FCODE_OF_CONDUCT.md\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FCode%20of%20Conduct-v1.0-ff69b4.svg?color=%2347b96d\" alt=\"Code Of Conduct\">\u003C\u002Fa> ![GitHub](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Ffonoster\u002Ffonoster?color=%2347b96d) ![Twitter Follow](https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Ffonoster?style=social)\n\n## Features \n\nThe most notable features of Fonoster are:\n\n- [x] Multitenancy\n- [x] Easy deployment of PBX functionalities\n- [x] Programmable Voice Applications\n- [x] NodeJS SDK\n- [x] Support for Amazon Simple Storage Service (S3)\n- [x] Secure API endpoints with Let's Encrypt\n- [x] Authentication with OAuth2\n- [X] Authentication with JWT \n- [x] Role-Based Access Control (RBAC)\n- [x] Plugins-based Command-line Tool\n- [x] Support for Google Speech APIs\n\n## Code Examples\n\nA Voice Application is a server that controls a call's flow. A Voice Application can use any combination of the following verbs:\n\n- `Answer` - Accepts an incoming call\n- `Hangup` - Closes the call\n- `Play`: Takes a URL with a media file and streams the sound back to the calling party\n- `PlayDtmf` - Takes a DTMF sequence and plays it back to the calling party\n- `Say` - Takes a text, synthesizes the text into audio, and streams back the result\n- `Gather` - Waits for DTMF or speech events and returns back the result\n- `SGather` - Returns a stream for future DTMF and speech results\n- `Stream` - Creates a bidirectional stream to send and receive audio from a caller\n- `Dial` - Passes the call to an Agent or a Number at the PSTN\n- `Record` - It records the voice of the calling party and saves the audio on the Storage sub-system\n- `Mute` - It tells the channel to stop sending media, effectively muting the channel\n- `Unmute` - It tells the channel to allow media flow\n\nVoice Application Example:\n\n```typescript\nconst VoiceServer = require(\"@fonoster\u002Fvoice\").default;\nconst { \n  GatherSource, \n  VoiceRequest, \n  VoiceResponse \n} = require(\"@fonoster\u002Fvoice\");\n\nnew VoiceServer().listen(async (req: VoiceRequest, voice: VoiceResponse) => {\n  const { ingressNumber, sessionRef, appRef } = req;\n\n  await voice.answer();\n\n  await voice.say(\"Hi there! What's your name?\");\n\n  const { speech: name } = await voice.gather({\n    source: GatherSource.SPEECH\n  });\n\n  await voice.say(\"Nice to meet you \" + name + \"!\");\n\n  await voice.say(\"Please enter your 4 digit pin.\");\n\n  const { digits } = await voice.gather({\n    maxDigits: 4,\n    finishOnKey: \"#\"\n  });\n\n  await voice.say(\"Your pin is \" + digits);\n\n  await voice.hangup();\n});\n\n\u002F\u002F Your app will live at tcp:\u002F\u002F127.0.0.1:50061 \n\u002F\u002F and you can easily publish it to the Internet with:\n\u002F\u002F ngrok tcp 50061\n```\n\nEverything in Fonoster is an API first, and initiating a call is no exception. You can use the SDK to start a call with a few lines of code.\n\nExample of originating a call with the SDK:\n\n```typescript\nconst SDK = require(\"@fonoster\u002Fsdk\");\n\nasync function main(request) {\n  const apiKey = \"your-api-key\";\n  const apiSecret = \"your-api-secret\"\n  const accessKeyId = \"WO00000000000000000000000000000000\";\n\n  const client = new SDK.Client({ accessKeyId });\n  await client.loginWithApiKey(apiKey, apiSecret);\n\n  const calls = new SDK.Calls(client);\n  const response = await calls.createCall(request);\n\n  console.log(response); \u002F\u002F successful response\n}\n\nconst request = {\n  from: \"+18287854037\",\n  to: \"+17853178070\",\n  appRef: \"3e61ecb7-a1b6-4a93-84c3-4f1979165bca\",\n  \u002F\u002F Optional metadata to be sent to the Voice Application\n  metadata: {\n    name: \"John Doe\",\n    message: \"Please call me back.\"\n  }\n};\n\nmain(request).catch(console.error);\n```\n\n## Getting Started\n\nTo get started with Fonoster, use the following resources:\n\n- [Deploying Fonoster with Docker](https:\u002F\u002Fdocs.fonoster.com\u002Fself-hosting)\n- [Guide for Early Access User](https:\u002F\u002Fdocs.fonoster.com\u002Fquickstart)\n- [Getting started with Fonoster](https:\u002F\u002Fdocs.fonoster.com\u002Fquickstart)\n- [How we created an open-source alternative to Twilio and why it matters](https:\u002F\u002Fdev.to\u002Ffonoster\u002Fhow-we-created-an-open-source-alternative-to-twilio-and-why-it-matters-434g)\n\n## Give a Star! ⭐\n\nPlease give it a star if you like this project or plan to use it. Thanks 🙏\n\n## Bugs and Feedback\n\nFor bugs, questions, and discussions, please use the [Github Issues](https:\u002F\u002Fgithub.com\u002Ffonoster\u002Ffonoster\u002Fissues)\n\n## Contributing\n\nFor contributing, please see the following links:\n\n - [Contribution Documents](https:\u002F\u002Fgithub.com\u002Ffonoster\u002Ffonoster\u002Fblob\u002Fmain\u002FCONTRIBUTING.md)\n - [Contributors](https:\u002F\u002Fgithub.com\u002Ffonoster\u002Ffonoster\u002Fcontributors)\n\n\u003C!-- readme: contributors -start -->\n\u003Ctable>\n\u003Ctr>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fpsanders>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F539774?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Pedro Sanders\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Pedro Sanders\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fefraa>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F40646537?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Efrain Peralta\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Efrain Peralta\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fangelbencosme>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6846866?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Angel M. Bencosme\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Angel M. Bencosme\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fwhernandez>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F37089069?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Wandy Hernandez\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Wandy Hernandez\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fobrucheoghene>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F111436934?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Obruche Wilfred  Oghenechohwo\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Obruche Wilfred  Oghenechohwo\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fwardner>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F51765669?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Wardner Lara\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Wardner Lara\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Frihernandez>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F27718122?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Richard HC\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Richard HC\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002FNageswari-droid>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F65342122?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Nageswari\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Nageswari\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fxquanluu>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F110280845?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Hoan Luu Huu\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Hoan Luu Huu\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fspeedymonster>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F31810381?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Speedy Monster\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Speedy Monster\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fparz3val>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F34773307?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=harry_dev\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>harry_dev\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002FCKanishka>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F30779692?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Kanishka Chowdhury\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Kanishka Chowdhury\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002FBrayanMnz>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F61812255?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Brayan Munoz V.\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Brayan Munoz V.\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fmilis92>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13440798?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Ivan Milisavljevic \u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Ivan Milisavljevic \u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fdedekrnwan>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F25242055?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Dede kurniawan\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Dede kurniawan\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fgad2103>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1045265?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=gabriel duncan\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>gabriel duncan\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fiamppborah>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F96339995?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Prasurjya Pran Borah\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Prasurjya Pran Borah\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fjustjordan15>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F164441222?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Jordan\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Jordan\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fhectorvent>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2405682?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Hector Ventura\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Hector Ventura\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002F0xflotus>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F26602940?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=0xflotus\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>0xflotus\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fitzmanish>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F12438068?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Manish\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Manish\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fosehgol>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4996423?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Osama Sehgol\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Osama Sehgol\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fpsuet>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7604288?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Paul Sütterlin\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Paul Sütterlin\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002FRiadVargas>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4274014?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Riad Vargas\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Riad Vargas\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fvcidst>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F683016?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Shailendra Paliwal\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Shailendra Paliwal\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fgitter-badger>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8518239?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=The Gitter Badger\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>The Gitter Badger\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002FYuriCodes>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F80093500?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Yuri\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Yuri\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fcdrsociate>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F89363212?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=cdrsociate\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>cdrsociate\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fghana7989>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F65382745?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=pavan\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>pavan\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fnrjchnd>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F17134818?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=nrjchnd\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>nrjchnd\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fsalami-dev>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F57477131?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Salami Bashir\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Salami Bashir\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fscshiv29-dev>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F68141773?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Shivam Deepak Chaudhary\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Shivam Deepak Chaudhary\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fshowf68>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F45857918?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Yossef Haim\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Yossef Haim\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Ftelenautical>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F106842020?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=telenautical\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>telenautical\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Ftheewiz>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F81051645?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Wisdom Elendu\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Wisdom Elendu\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fjudgegodwins>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F38760034?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Judge Godwins\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Judge Godwins\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fjonathan-chin>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7519412?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Jon Chin\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Jon Chin\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fharish-chander>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F13236956?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Harish Chander\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Harish Chander\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002FGaryBarnes17>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F97693048?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Gary Barnes\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Gary Barnes\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002FFidalMathew>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F84982038?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Fidal Mathew\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Fidal Mathew\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Featskolnikov>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1693000?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Enmanuel Toribio\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Enmanuel Toribio\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fjellydn>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F870029?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Dung Duc Huynh (Kaka)\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Dung Duc Huynh (Kaka)\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fcdosoftei>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7636091?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Ciprian\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Ciprian\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Finfinitydon>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6318992?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Christopher Adigun\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Christopher Adigun\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fbrunowego>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F441774?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Bruno Gomes\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Bruno Gomes\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fbrunoarueira>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F119518?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Bruno Arueira\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Bruno Arueira\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fantoniusostermann>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2332002?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Antonius Ostermann\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Antonius Ostermann\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Falifiratari>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10004438?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Ali Firat ARI\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Ali Firat ARI\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Falexsands>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F4269772?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Alex\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Alex\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n    \u003Ctd align=\"center\" style=\"word-wrap: break-word; width: 150.0; height: 150.0\">\n        \u003Ca href=https:\u002F\u002Fgithub.com\u002Fitsalb3rt>\n            \u003Cimg src=https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F35310226?v=4 width=\"100;\"  style=\"border-radius:50%;align-items:center;justify-content:center;overflow:hidden;padding-top:10px\" alt=Albert E. Hidalgo Taveras\u002F>\n            \u003Cbr \u002F>\n            \u003Csub style=\"font-size:14px\">\u003Cb>Albert E. Hidalgo Taveras\u003C\u002Fb>\u003C\u002Fsub>\n        \u003C\u002Fa>\n    \u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftable>\n\u003C!-- readme: contributors -end -->\n\n## Sponsors\n\nWe're glad to be supported by respected companies and individuals from several industries.\n\nFind all our supporters [here](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Ffonoster)\n\n> [Become a Github Sponsor](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Ffonoster)\n\n## Authors\n\n - [Pedro Sanders](https:\u002F\u002Fgithub.com\u002Fpsanders)\n\n## License\n\nCopyright (C) 2026 by [Fonoster Inc](https:\u002F\u002Ffonoster.com). MIT License (see [LICENSE](https:\u002F\u002Fgithub.com\u002Ffonoster\u002Ffonoster\u002Fblob\u002Fmain\u002FLICENSE) for details).\n","Fonoster 是一个开源的电信平台，旨在作为 Twilio 的替代方案。它使用 TypeScript 构建，提供了多租户支持、易于部署的 PBX 功能、可编程语音应用等核心功能，并且支持 NodeJS SDK 和 Amazon S3。Fonoster 通过 Let's Encrypt 保护 API 端点的安全，并提供 OAuth2 和 JWT 认证方式及基于角色的访问控制（RBAC）。此外，它还集成了 Google 语音 API 并拥有插件式的命令行工具。适合需要将电话服务与互联网连接的企业或开发者使用，尤其是在云通信平台、客户互动和体验优化等领域。",2,"2026-06-11 03:25:16","top_topic"]