Place your first call
In this quickstart you place a real call with one command: bird voice tools test-call drives baresip, a SIP client that runs in a terminal, through the same trunk, caller ID, and destination a phone system uses, so you keep all of it afterwards.
You need access to a phone number, a Linux or macOS terminal with the Bird CLI signed in to your workspace, and baresip on your PATH:
Exemplo de código
brew install baresip # macOS
sudo apt install baresip # Debian, Ubuntu1. Set up a SIP trunk
On the SIP Trunks page, choose Create trunk and name it.
A new trunk rejects every call until you allow a credential on it. Create an API key with the voice scope at write level, and copy the secret shown at creation. Add that key to the trunk under Allowed API keys: the trunk now accepts calls that authenticate with the key's secret.
2. Verify the number you will call from
Bird only lets you present numbers you own. On the Trust page, choose Add caller ID and enter a number you can answer in E.164 format, a leading + followed by the country code and national number (+31201234567). Bird calls it straight away and reads out a six-digit code. Enter the code.
The caller ID reads Verified, and you can present it as the calling number.
3. Turn on the country you are calling
On the Destinations page, find the country of the number you are about to dial and switch its toggle on. Calls to countries you have not enabled are refused before a carrier is dialed.
4. Place the test call
The call authenticates with the API key you allowed in step 1. Hand the CLI its secret, then dial the number you verified:
Exemplo de código
export BIRD_VOICE_TEST_CALL_API_KEY=YOUR_API_KEY_SECRET
bird voice tools test-call +31612345678The CLI picks your trunk and your verified caller ID (it prints both), writes a throwaway baresip account, and dials. Your phone rings, showing your own number as the caller, because that is the caller ID the call presented. Answer it and you have audio both ways; the call hangs up on its own after 30 seconds.
--dry-run prints the account file and the baresip command without dialing, a working starting point for any other SIP client.
5. Read the record
Exemplo de código
bird voice listThe call you just placed is there, with its status, both numbers, and duration. For the whole record, open the Calls page: your call is the top row; select it to see when it was answered, its billable time, and what it cost.
That record is the thing to reach for whenever a later call does not behave. A refused call carries the reason on the record rather than in the SIP response, so the record is where the answer is.
If the call does not go through
- Nothing in the call log at all. Bird turned the call away before a record existed, which means credentials: check that BIRD_VOICE_TEST_CALL_API_KEY is the key's secret and that the key is still allowed on the trunk.
- The record says failed, with a rejection reason. The reason names what to change. destination_not_enabled means step 3 did not cover the country you dialed; caller_id_not_verified means the number the call presented is not verified (the CLI picks your first verified one unless you pass --caller-id). Rejected calls has the rest.
- The call connects but the peak-audio summary shows zero in one direction. That is the one-way-audio symptom: check your machine's microphone and speaker, and your network's NAT handling. --raw prints baresip's own output instead of the summary.
Voice troubleshooting works through the same symptoms for any client.
Next steps
| Page | What it covers |
|---|---|
| SIP client setup | The same setup for Asterisk, FreePBX, Zoiper, and five others |
| SIP trunks | IP allow lists, rotating keys, and the Digest offer |
| Placing calls | What Bird reads off each call, and what one costs |
| Call log | Every field on a record, filtering, and CSV export |
| Voice events | Getting call outcomes pushed to your own systems instead of polling |