Skip to content

update_sip_inbound_trunk_fields crash with protobuf: direct assignment to message field ListUpdate causes AttributeError #482

Description

@coreyms

livekit-api: 1.0.5
Python: 3.11

Attempting to update existing inbound SIP Trunk numbers or allowed fails using update_sip_inbound_trunk_fields. The example on the livekit docs page fails as well.

async def update_inbound_trunk_numbers():
    """
    Add a phone number to an existing trunk.
    """
    livekit_api = api.LiveKitAPI()
    trunk_id = "redacted"

    trunk = await livekit_api.sip.update_sip_inbound_trunk_fields(
        trunk_id=trunk_id,
        allowed_numbers=["+13105550100", "+17145550100"],
        name="My updated trunk",
    )
    print("Updated inbound trunk numbers:", trunk)

    await livekit_api.aclose()

Calling LiveKitAPI.sip.update_sip_inbound_trunk_fields(..., numbers=[...]) (and the outbound equivalent) crashes with:

AttributeError: Assignment not allowed to message field "numbers" in protocol message object.

The helper constructs a SIPInboundTrunkUpdate and then assigns a ListUpdate to a message-typed field (update.numbers = ListUpdate(set=...)). In Python protobuf, message fields must be set via CopyFrom(...), not direct assignment.

# in SipService.update_sip_inbound_trunk_fields(...)
update = SIPInboundTrunkUpdate(
    auth_username=auth_username,
    auth_password=auth_password,
    name=name,
    metadata=metadata,
)
if numbers is not None:
    update.numbers = ListUpdate(set=numbers)  # <- crashes

The outbound helper does the same for update.numbers.

In Python’s protobuf API you cannot assign a sub-message directly; you must call .CopyFrom(...) (or mutate the existing message). This is longstanding protobuf behavior.

I looked into the community slack channel and others have had this issue as well (only with suggestions to update via the WebUI) and didn't see a similar issue posted in Github.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions