WhatsApp Connector: inbound calls are answered inconsistently

Hi everyone,

We’re testing the WhatsApp Connector and have noticed some inconsistent behavior with inbound WhatsApp calls.

Most of the time everything works as expected, but occasionally the bot doesn’t answer the call even though the same code and configuration are being used.

What we’ve observed so far:

  • A WhatsApp call comes in.

  • Sometimes the bot joins and the conversation starts normally.

  • In most failed calls, Meta only sends a TERMINATE event. However, we’ve also seen failures where both CONNECT and TERMINATE events were received.

  • Most of the times calls that are not answered only show TERMINATE event on Meta but It has also happened with calls showing TERMINATE and CONNECT


This is a log for a call I did that keep on connecting on WhatsApp, as you can see only TERMINATE type event appears in Meta, the agent didn’t answer:

Payload:

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "1653880292712663",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "<PRIVATE>",
              "phone_number_id": "<PRIVATE>"
            },
            "contacts": [
              {
                "profile": {
                  "name": "<PRIVATE>"
                },
                "wa_id": "<PRIVATE>",
                "user_id": "<PRIVATE>"
              }
            ],
            "calls": [
              {
                "id": "wacid.IhggMDBEMjc0Njk2MTdFNDA3Mjg2QkVBQ0FCNTE3MjU4OUEcGAw1NzMyMDI3Nzg3NTMVAgAVBAA=",
                "from": "<PRIVATE>",
                "from_user_id": "<PRIVATE>",
                "to": "<PRIVATE>",
                "event": "terminate",
                "timestamp": "1780335054",
                "direction": "USER_INITIATED",
                "start_time": "1780335048",
                "end_time": "1780335054",
                "duration": 6,
                "status": "COMPLETED"
              }
            ]
          },
          "field": "calls"
        }
      ]
    }
  ]
}

And the Room session associated in Livekit:
RM_EKVCJ5HYUksV


This other call that also did not connect but I see two events CONNECT and TERMINATE:

TERMINATE EVENT

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "1653880292712663",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "<PRIVATE>",
              "phone_number_id": "<PRIVATE>"
            },
            "contacts": [
              {
                "profile": {
                  "name": "<PRIVATE>"
                },
                "wa_id": "<PRIVATE>",
                "user_id": "<PRIVATE>"
              }
            ],
            "calls": [
              {
                "id": "wacid.IhggMDA0MTgwRENFODgxNjNGM0I5ODI4RTUzODYxRjM5RkUcGAw1NzMyMDI3Nzg3NTMVAgAVHAA=",
                "from": "<PRIVATE>",
                "from_user_id": "<PRIVATE>",
                "to": "<PRIVATE>",
                "event": "terminate",
                "timestamp": "1780332950",
                "direction": "USER_INITIATED",
                "start_time": "1780332946",
                "end_time": "1780332950",
                "duration": 4,
                "status": "COMPLETED"
              }
            ]
          },
          "field": "calls"
        }
      ]
    }
  ]
}

CONNECT EVENT

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "1653880292712663",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "<PRIVATE>",
              "phone_number_id": "<PRIVATE>"
            },
            "contacts": [
              {
                "profile": {
                  "name": "<PRIVATE>"
                },
                "wa_id": "<PRIVATE>",
                "user_id": "<PRIVATE>"
              }
            ],
            "calls": [
              {
                "id": "wacid.IhggMDA0MTgwRENFODgxNjNGM0I5ODI4RTUzODYxRjM5RkUcGAw1NzMyMDI3Nzg3NTMVAgAVHAA=",
                "from": "<PRIVATE>",
                "from_user_id": "<PRIVATE>",
                "to": "<PRIVATE>",
                "event": "connect",
                "timestamp": "1780332943",
                "direction": "USER_INITIATED",
                "session": {
                  "sdp": "v=0\r\no=- 1780332943119 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio\r\na=msid-semantic: WMS ccc2aabc-6e05-4ee0-a745-b7cf3ec4fd01\r\na=ice-lite\r\nm=audio 3480 UDP/TLS/RTP/SAVPF 111 126\r\nc=IN IP4 57.144.85.49\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:3017242726 1 udp 2122260223 57.144.85.49 3480 typ host generation 0 network-cost 50\r\na=candidate:1740430795 1 udp 2122262783 2a03:2880:f321:131:face:b00c:0:699c 3480 typ host generation 0 network-cost 50\r\na=ice-ufrag:nGVlNjFgQSuJNJP+\r\na=ice-pwd:lz74PO0ktM+62bL+S6Q5hw==\r\na=fingerprint:sha-256 BD:CD:B6:6E:C7:DE:84:7C:0D:4C:57:EF:8F:9F:49:D6:36:2F:32:FC:2A:1F:F3:7D:B4:0A:B0:C2:BC:53:9C:9A\r\na=setup:actpass\r\na=mid:audio\r\na=sendrecv\r\na=msid:ccc2aabc-6e05-4ee0-a745-b7cf3ec4fd01 WhatsAppTrack1\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 maxaveragebitrate=20000;maxplaybackrate=16000;minptime=20;sprop-maxcapturerate=16000;useinbandfec=1\r\na=rtpmap:126 telephone-event/8000\r\na=maxptime:20\r\na=ptime:20\r\na=ssrc:1733349517 cname:WhatsAppAudioStream1\r\n",
                  "sdp_type": "offer"
                }
              }
            ]
          },
          "field": "calls"
        }
      ]
    }
  ]
}

Room session associated:
RM_fVH9ptQSDr9P


And this one is from a call that actually worked

TERMINATE EVENT

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "1653880292712663",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "<PRIVATE>",
              "phone_number_id": "<PRIVATE>"
            },
            "contacts": [
              {
                "profile": {
                  "name": "<PRIVATE>"
                },
                "wa_id": "<PRIVATE>",
                "user_id": "<PRIVATE>"
              }
            ],
            "calls": [
              {
                "id": "wacid.IhggMDA0MkU5QzAxOEFCQUM4MkVDNzgwNUVDRDJCOUJBQzUcGAw1NzMyMDI3Nzg3NTMVAgAVDgA=",
                "from": "<PRIVATE>",
                "from_user_id": "<PRIVATE>",
                "to": "<PRIVATE>",
                "event": "terminate",
                "timestamp": "1780335549",
                "direction": "USER_INITIATED",
                "start_time": "1780335543",
                "end_time": "1780335549",
                "duration": 6,
                "status": "COMPLETED"
              }
            ]
          },
          "field": "calls"
        }
      ]
    }
  ]
}

CONNECT EVENT

{
  "object": "whatsapp_business_account",
  "entry": [
    {
      "id": "1653880292712663",
      "changes": [
        {
          "value": {
            "messaging_product": "whatsapp",
            "metadata": {
              "display_phone_number": "<PRIVATE>",
              "phone_number_id": "<PRIVATE>"
            },
            "contacts": [
              {
                "profile": {
                  "name": "<PRIVATE>"
                },
                "wa_id": "<PRIVATE>",
                "user_id": "<PRIVATE>"
              }
            ],
            "calls": [
              {
                "id": "wacid.IhggMDA0MkU5QzAxOEFCQUM4MkVDNzgwNUVDRDJCOUJBQzUcGAw1NzMyMDI3Nzg3NTMVAgAVDgA=",
                "from": "<PRIVATE>",
                "from_user_id": "<PRIVATE>",
                "to": "<PRIVATE>",
                "event": "connect",
                "timestamp": "1780335538",
                "direction": "USER_INITIATED",
                "session": {
                  "sdp": "v=0\r\no=- 1780335538112 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio\r\na=msid-semantic: WMS 87370d0b-66e8-4fb8-adbf-ad8f2903eeb2\r\na=ice-lite\r\nm=audio 3480 UDP/TLS/RTP/SAVPF 111 126\r\nc=IN IP4 57.144.85.49\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:3017242726 1 udp 2122260223 57.144.85.49 3480 typ host generation 0 network-cost 50\r\na=candidate:1740430795 1 udp 2122262783 2a03:2880:f321:131:face:b00c:0:699c 3480 typ host generation 0 network-cost 50\r\na=ice-ufrag:yexzPY/eSQoSBitI\r\na=ice-pwd:WZSDwUisLWjqQWjKr1saqA==\r\na=fingerprint:sha-256 20:9E:9D:2D:47:65:53:9A:CB:D4:59:FE:93:CA:73:B7:B6:86:63:39:F5:62:C1:2F:DA:27:3A:AA:CD:39:08:FF\r\na=setup:actpass\r\na=mid:audio\r\na=sendrecv\r\na=msid:87370d0b-66e8-4fb8-adbf-ad8f2903eeb2 WhatsAppTrack1\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 maxaveragebitrate=20000;maxplaybackrate=16000;minptime=20;sprop-maxcapturerate=16000;useinbandfec=1\r\na=rtpmap:126 telephone-event/8000\r\na=maxptime:20\r\na=ptime:20\r\na=ssrc:2189993369 cname:WhatsAppAudioStream1\r\n",
                  "sdp_type": "offer"
                }
              }
            ]
          },
          "field": "calls"
        }
      ]
    }
  ]
}

Room session associated:
RM_hspPiyPUi4eX


Has anyone else run into this issue?

I’d be interested to know whether this ended up being a configuration issue, a Meta-side issue, or something related to the connector itself, and if there are any known workarounds.

Thanks for any help or guidance.

First of all thank you for being part of the WhatApp connector Beta.

Randomly picking one of the sessions you shared and I see the agent joined the room:

https://cloud.livekit.io/projects/p_/sessions/RM_hspPiyPUi4eX/events

What do you see in your agent logs?

Reading through the private beta connector channel I see this which maybe related:

anunay (LiveKit)

Hi! I have been noticing some general flakiness with Facebook in the last 2 days. I’m very certain it’s that.

We established a connection with them, but media never flows in. On iOS it ends up being stuck on ringing with no “ring”, and it’s the same on Android as well but the UI says “connecting”

I don’t see anything on their status page unfortunately, which is why I’ve also been digging on our side to understand it better on the webrtc layer.

And regarding the status 200, it’s weird to track because the API calls and connection negotiation on our end did succeed.

Not receiving any media post that is not in our control

Rest assured, I’m still on it if for a small chance, it’s something on our end. I’ve been monitoring this closely.

I shared this thread with our connectors team incase the have some other feedback on the issue.

I heard back from the connectors team and this is indeed the same as the have been tracking on the WhatApp side. Best to check with WhatsApp on this and we have a message out to them as well on the topic.

Thanks for checking.

This is what I see in the agent logs.

2026-06-01T11:54:29.343-05:00
{
  "message": "received job request",
  "level": "INFO",
  "name": "livekit.agents",
  "job_id": "AJ_pdYLbpVVZjkT",
  "dispatch_id": "AD_ni3zdhRoW8fx",
  "room": "wa-call-wacid.IhggMDAwREVFNjA1NDUxMUNFMjA0NjMwMTBFMDY3RDhDRTgcGAw1NzMyMDI3Nzg3NTMVAgAVHAA=",
  "room_id": "RM_tpQ2BFFZerba",
  "agent_name": "test-agent-sae",
  "resuming": false,
  "enable_recording": true
}

2026-06-01T11:54:29.424-05:00
{
  "message": "initializing process",
  "level": "INFO",
  "name": "livekit.agents",
  "pid": 1435
}

2026-06-01T11:54:29.492-05:00
{
  "message": "adaptive interruption is disabled by default in production mode",
  "level": "INFO",
  "name": "livekit.agents",
  "room": "wa-call-wacid.IhggMDAwREVFNjA1NDUxMUNFMjA0NjMwMTBFMDY3RDhDRTgcGAw1NzMyMDI3Nzg3NTMVAgAVHAA=",
  "pid": 1384,
  "job_id": "AJ_pdYLbpVVZjkT",
  "room_id": "RM_tpQ2BFFZerba"
}

2026-06-01T11:54:29.616-05:00
{
  "message": "process initialized",
  "level": "INFO",
  "name": "livekit.agents",
  "pid": 1435,
  "elapsed_time": 0.19
}

2026-06-01T11:55:29.226-05:00
{
  "message": "closing agent session due to participant disconnect (disable via `RoomInputOptions.close_on_disconnect=False`)",
  "level": "INFO",
  "name": "livekit.agents",
  "room": "wa-call-wacid.IhggMDAwREVFNjA1NDUxMUNFMjA0NjMwMTBFMDY3RDhDRTgcGAw1NzMyMDI3Nzg3NTMVAgAVHAA=",
  "participant": "wa-wacid.IhggMDAwREVFNjA1NDUxMUNFMjA0NjMwMTBFMDY3RDhDRTgcGAw1NzMyMDI3Nzg3NTMVAgAVHAA=",
  "reason": "CLIENT_INITIATED",
  "pid": 1384,
  "job_id": "AJ_pdYLbpVVZjkT",
  "room_id": "RM_tpQ2BFFZerba"
}

The agent appears to receive the job and initialize successfully, however, about 60 seconds later the session is closed with CLIENT_INITIATED.

That looks right. We are waiting for the audio channel from WhatApp which never arrives.