Build a support and AI console
A support line where an AI agent answers first, your team watches live and steps in whenever it matters, and every conversation ends with a transcript and summary. Customers reach you from your website, your app or a phone number.

- 3 ways in
- website widget, your own app, or a phone number
- 1 request
- moves a live call from the agent to a person
- Call logs
- with transcripts and summaries, over the API
How it fits together
- CustomerCalls or opens chatFrom your website, your app or your phone number.
- MediaSFUAn AI agent answersWith the voice, instructions and tools you configure.
- Your teamWatches and takes overLive sessions in one view; a person steps in when needed.
- Your serverKeeps the recordTranscripts, summaries and recordings over the API.
Pick how much to build
| Approach | What you build | Best when |
|---|---|---|
| Widgets only | Two HTML tags: one for customers, one for your team | You want agent support on your site this week |
| Widgets + your app | Your own video room for human sessions, with the agent widgets beside it | Customers already use your web or mobile app |
| Fully custom | Your own console on an SDK room, with agents and calls controlled from your server | Support is your product, or you need your own workflow |
All three use the same agents, numbers and records, so you can start with widgets and move to a custom console without starting again.
What MediaSFU handles
| You need | MediaSFU gives you | Read |
|---|---|---|
| An AI agent customers can talk to | Agents with a voice, instructions and tools, set up in the Agents dashboard | Dashboards |
| Chat and voice support on your website | Web Agent and AI Agent widgets | Web Agent widget |
| A live view for your team | The Agent Dashboard widget, with operator takeover | Agent Dashboard widget |
| A phone number customers can call | Your own number connected over SIP | SIP configuration API |
| A person taking over a live call | Switch a call between the agent and a person | Control AI calls |
| Video sessions with a person | A MediaSFU room in any SDK | Build it in your SDK |
| Transcripts, translation and summaries | AI notes and translation configs | Translation configs |
| Review after the call | Call logs with transcripts and summaries, plus recordings | Recordings API |
Set it up
-
Create an agent. In the Agents dashboard, set the agent's voice, instructions and tools. Then create a widget key in Widget Builder and limit it to your domains. A widget key is public; it is not your API key.
-
Put the agent on your website. Load the widgets once and add the customer-facing element:
<script type="module" src="https://cdn.mediasfu.com/v1/widget.js"></script>
<mediasfu-web-agent
widget-key="YOUR_PUBLIC_WIDGET_KEY"
config-name="customer-support"
mode="text"
allow-escalation="true"
greeting="How can we help?"
></mediasfu-web-agent>When a customer asks for a person, the element fires
escalation-requested. -
Give your team a live view. On a page only your team can sign in to:
<mediasfu-agent-dashboard
widget-key="YOUR_PUBLIC_WIDGET_KEY"
operator-name="Support team"
theme="dark"
width="100%"
height="760px"
></mediasfu-agent-dashboard>It lists active sessions and fires
operator-takeoverwhen someone steps in. -
Add a phone number (optional). Register your number from your server, then connect it to the agent under Phone & SIP Setup in the dashboard:
curl -X POST https://mediasfu.com/v1/sipconfigs \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $MEDIASFU_API_USERNAME:$MEDIASFU_API_KEY" \
-d '{"action":"create","contactNumber":"+15551234567","provider":"twilio"}'Your server can then take over any live call from your own tools:
To Your server sends Hand the call to a person POST /v1/sipcall/:sipCallId/switch-sourcewith{"targetType":"human","humanName":"Pat"}Give it back to the agent POST /v1/sipcall/:sipCallId/switch-sourcewith{"targetType":"agent"}End the call POST /v1/sipcall/:sipCallId/endControl AI calls has the complete server module, with rate limits and errors handled.
-
Read what happened. Pull transcripts and summaries for your CRM or quality review:
curl "https://mediasfu.com/v1/sipcall/logs" \
-H "Authorization: Bearer $MEDIASFU_API_USERNAME:$MEDIASFU_API_KEY"
Keep MEDIASFU_API_USERNAME and MEDIASFU_API_KEY on your server. The
Secure backend guide shows the route your app
calls instead.
Build it in your SDK
For your own console, build the room where customers and your team meet in your SDK. Agents, phone numbers and call control stay on your server, so that part is the same for every SDK.
- ReactJSStart from the compact call tutorial
- AngularStart from the compact call tutorial
- VueStart from the compact call tutorial
- React NativeStart from the compact call tutorial
- ExpoStart from the compact call tutorial
- FlutterStart from the compact call tutorial
- AndroidStart from the compact call tutorial
- Kotlin MultiplatformStart from the SDK starter
- Swift / AppleStart from the SDK starter
- UnityStart from the compact call tutorial
- Shared coreStart from the compact call tutorial
Check it works
- Open your site in a private window and start a chat. The agent greets you, and the session appears in the agent dashboard.
- Ask for a person. Take over from the dashboard and confirm the customer sees the change.
- If you added a number, call it, let the agent answer, then switch the call to a person and back.
- After the call, find its transcript and summary in the call logs.
Go further
- Voice and vision agents: agents that see a camera or screen.
- SIP and PSTN calling: a full softphone for your team.
- All widgets: click-to-call buttons and a calls dashboard.