# Inbound Calls

In this documentation, you will learn:

* [How inbound calls work](#about-whatsapp-inbound-calls)
* [What WhatsApp Calling Deep Links are and how to configure them so end-users can call your business](#deep-links)
* [How to support DTMF on the Calling API](#dtmf-support-optional)

## About WhatsApp Inbound Calls

End-users can place calls to a business when:

* [x] Calling is enabled for the business phone number.
* [x] The user sees a call icon or presses a call CTA button.

Calls are initiated directly through the WhatsApp client and use VoIP (WebRTC). Businesses respond using the Cloud API:

<figure><img src="/files/mfcNr0kuPRdbGmELdSuj" alt=""><figcaption></figcaption></figure>

## User-initiated Calls using SIP Flow

The WhatsApp user calls business phone number and is unaware of whether the business is using SIP or Graph API. In other words, the user experience is identical to regular WhatsApp App calls:&#x20;

{% stepper %}
{% step %}
If the business phone number is SIP enabled, Meta will send an [SIP INVITE](https://developers.facebook.com/docs/whatsapp/cloud-api/calling/sip#user-initiated-calls--with-webrtc-media-) to the SIP server configured on the business phone number

You will need to configure SIP settings on the business phone number
{% endstep %}

{% step %}
You respond with [SIP challenge](https://developers.facebook.com/docs/whatsapp/cloud-api/calling/sip#user-initiated-calls-with-digest-auth--with-sdes-media-) (recommended) or [SIP OK](https://developers.facebook.com/docs/whatsapp/cloud-api/calling/sip#user-initiated-calls--with-webrtc-media-) and pass in an SDP answer.
{% endstep %}
{% endstepper %}

{% hint style="info" %}

#### On the subject, we recommend the following content:&#x20;

* [View sample SIP requests](https://developers.facebook.com/docs/whatsapp/cloud-api/calling/sip#sample-sip-requests)
* [Learn more about Session Description Protocol (SDP)](https://www.rfc-editor.org/rfc/rfc8866.html?fbclid=IwZXh0bgNhZW0CMTEAYnJpZBExQk55TkRpVDhtSlM2NTRkSwEeZNjMbV-xU-dVK0_OZknzDCb-WiZpgszif9nG97--XEXEWmdAKMhv7CqivlA_aem_j-iTkUyfgR0v-MTbpQYIng)
* [View example SDP structures](https://developers.facebook.com/docs/whatsapp/cloud-api/calling/reference#sdp-overview-and-sample-sdp-structures)

For more detailed info, please, access [Meta's Official Documentation](https://developers.facebook.com/docs/whatsapp/cloud-api/calling/sip#business-initiated-calls).&#x20;
{% endhint %}

## Deep Links

Calling API is compatible with deep links and you can generate your own using: <mark style="color:green;">`https://wa.me/call/<phone_number>`</mark>.

With Call deep links, you can have more control over calls and (if necessary) link another number and prompt users to contact a different phone number with voice enabled.&#x20;

{% hint style="info" %}
The [wa.me/call/](http://wa.me/call/)\<phone number> format is easy to replicate and copy and paste, and does not require having to set up a template in WhatsApp Manager.
{% endhint %}

<figure><img src="/files/GQXK3EYCqbllubRYpa43" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/P3oW686yazOdxADtIzyb" alt=""><figcaption></figcaption></figure>

## DTMF Support (Optional)

WhatsApp Calling supports **DTMF tones** via the in-call dialpad:

* Used for IVR systems
* Follows [RFC 4733](https://datatracker.ietf.org/doc/html/rfc4733)

The consumers can press the buttons on the client app and the DTMF tones are injected into the WebRTC RTP stream established as a part of the VoIP connection. Meta’s WebRTC stream conforms to RFC 4733 for the transfer of DTMF Digits via RTP Payload. Specifically there is no webhook for conveying DTMF digits.

#### Delivering DTMF digits on WebRTC connection

When a consumer presses a digit in the dialpad on the client, the equivalent DTMF is injected into the webrtc. Tones values are digits from 0 to 9, # and \*. The Duration is 500ms and InterToneGap is 100ms for all the tones.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.360dialog.com/docs/messaging/calling/inbound-calls.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
