From 1843af132a9d200dad5adc498ab18d675f1a54f5 Mon Sep 17 00:00:00 2001 From: Anunay Maheshwari Date: Thu, 18 Dec 2025 02:06:18 +0530 Subject: [PATCH 1/9] feat(whatsapp): add user_disconnected field for disconnect request --- protobufs/livekit_connector_whatsapp.proto | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/protobufs/livekit_connector_whatsapp.proto b/protobufs/livekit_connector_whatsapp.proto index 5dd42f14a..cc5fbd5e5 100644 --- a/protobufs/livekit_connector_whatsapp.proto +++ b/protobufs/livekit_connector_whatsapp.proto @@ -70,8 +70,12 @@ message DialWhatsAppCallResponse { message DisconnectWhatsAppCallRequest { // Required - Call ID sent by Meta string whatsapp_call_id = 1; - // Required - The API key of the business that is disconnecting the call + // The API key of the business that is disconnecting the call + // Optional - only if the user disconnected the call string whatsapp_api_key = 2 [(logger.redact) = true]; + // Set this to true if the user disconnected the call + // Otherwise, call will be disconnected when we hit a media timeout + bool user_disconnected = 3; } message DisconnectWhatsAppCallResponse { From 08572039276f7d5c13b63b9f1d10463ab78be94c Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Dec 2025 20:37:50 +0000 Subject: [PATCH 2/9] generated protobuf --- livekit/livekit_connector_whatsapp.pb.go | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/livekit/livekit_connector_whatsapp.pb.go b/livekit/livekit_connector_whatsapp.pb.go index 3e420ae28..c938f82fa 100644 --- a/livekit/livekit_connector_whatsapp.pb.go +++ b/livekit/livekit_connector_whatsapp.pb.go @@ -284,10 +284,14 @@ type DisconnectWhatsAppCallRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Required - Call ID sent by Meta WhatsappCallId string `protobuf:"bytes,1,opt,name=whatsapp_call_id,json=whatsappCallId,proto3" json:"whatsapp_call_id,omitempty"` - // Required - The API key of the business that is disconnecting the call + // The API key of the business that is disconnecting the call + // Optional - only if the user disconnected the call WhatsappApiKey string `protobuf:"bytes,2,opt,name=whatsapp_api_key,json=whatsappApiKey,proto3" json:"whatsapp_api_key,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Set this to true if the user disconnected the call + // Otherwise, call will be disconnected when we hit a media timeout + UserDisconnected bool `protobuf:"varint,3,opt,name=user_disconnected,json=userDisconnected,proto3" json:"user_disconnected,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DisconnectWhatsAppCallRequest) Reset() { @@ -334,6 +338,13 @@ func (x *DisconnectWhatsAppCallRequest) GetWhatsappApiKey() string { return "" } +func (x *DisconnectWhatsAppCallRequest) GetUserDisconnected() bool { + if x != nil { + return x.UserDisconnected + } + return false +} + type DisconnectWhatsAppCallResponse struct { state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields @@ -738,10 +749,11 @@ const file_livekit_connector_whatsapp_proto_rawDesc = "" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"a\n" + "\x18DialWhatsAppCallResponse\x12(\n" + "\x10whatsapp_call_id\x18\x01 \x01(\tR\x0ewhatsappCallId\x12\x1b\n" + - "\troom_name\x18\x02 \x01(\tR\broomName\"y\n" + + "\troom_name\x18\x02 \x01(\tR\broomName\"\xa6\x01\n" + "\x1dDisconnectWhatsAppCallRequest\x12(\n" + "\x10whatsapp_call_id\x18\x01 \x01(\tR\x0ewhatsappCallId\x12.\n" + - "\x10whatsapp_api_key\x18\x02 \x01(\tB\x04\x88\xb5\x18\x01R\x0ewhatsappApiKey\" \n" + + "\x10whatsapp_api_key\x18\x02 \x01(\tB\x04\x88\xb5\x18\x01R\x0ewhatsappApiKey\x12+\n" + + "\x11user_disconnected\x18\x03 \x01(\bR\x10userDisconnected\" \n" + "\x1eDisconnectWhatsAppCallResponse\"u\n" + "\x1aConnectWhatsAppCallRequest\x12(\n" + "\x10whatsapp_call_id\x18\x01 \x01(\tR\x0ewhatsappCallId\x12-\n" + From 7713178a42599b83a1237d4c2585799e01be7b11 Mon Sep 17 00:00:00 2001 From: Anunay Maheshwari Date: Thu, 18 Dec 2025 03:24:27 +0530 Subject: [PATCH 3/9] use enum --- protobufs/livekit_connector_whatsapp.proto | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/protobufs/livekit_connector_whatsapp.proto b/protobufs/livekit_connector_whatsapp.proto index cc5fbd5e5..f69364d91 100644 --- a/protobufs/livekit_connector_whatsapp.proto +++ b/protobufs/livekit_connector_whatsapp.proto @@ -68,14 +68,24 @@ message DialWhatsAppCallResponse { } message DisconnectWhatsAppCallRequest { + enum DisconnectReason { + // The call is being disconnected by the business + BUSINESS_INITIATED = 0; + // The call is disconnected by the user. + // This can be tracked as part of call terminate webhook + // https://developers.facebook.com/documentation/business-messaging/whatsapp/calling/user-initiated-calls#call-terminate-webhook + // Note that this webhook will also be sent when the call is disconnected by the business. + // Calling the API twice in such cases will result in an error. + USER_INITIATED = 1; + } + // Required - Call ID sent by Meta string whatsapp_call_id = 1; // The API key of the business that is disconnecting the call // Optional - only if the user disconnected the call string whatsapp_api_key = 2 [(logger.redact) = true]; - // Set this to true if the user disconnected the call - // Otherwise, call will be disconnected when we hit a media timeout - bool user_disconnected = 3; + // The reason for disconnecting the call + DisconnectReason disconnect_reason = 3; } message DisconnectWhatsAppCallResponse { From acc598b4d84de5f1eaf3971a7ba0da915d9284c3 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 17 Dec 2025 21:57:02 +0000 Subject: [PATCH 4/9] generated protobuf --- livekit/livekit_connector_whatsapp.pb.go | 130 ++++++++++++++++------- 1 file changed, 93 insertions(+), 37 deletions(-) diff --git a/livekit/livekit_connector_whatsapp.pb.go b/livekit/livekit_connector_whatsapp.pb.go index c938f82fa..867fc7432 100644 --- a/livekit/livekit_connector_whatsapp.pb.go +++ b/livekit/livekit_connector_whatsapp.pb.go @@ -82,6 +82,58 @@ func (WhatsAppCallDirection) EnumDescriptor() ([]byte, []int) { return file_livekit_connector_whatsapp_proto_rawDescGZIP(), []int{0} } +type DisconnectWhatsAppCallRequest_DisconnectReason int32 + +const ( + // The call is being disconnected by the business + DisconnectWhatsAppCallRequest_BUSINESS_INITIATED DisconnectWhatsAppCallRequest_DisconnectReason = 0 + // The call is disconnected by the user. + // This can be tracked as part of call terminate webhook + // https://developers.facebook.com/documentation/business-messaging/whatsapp/calling/user-initiated-calls#call-terminate-webhook + // Note that this webhook will also be sent when the call is disconnected by the business. + // Calling the API twice in such cases will result in an error. + DisconnectWhatsAppCallRequest_USER_INITIATED DisconnectWhatsAppCallRequest_DisconnectReason = 1 +) + +// Enum value maps for DisconnectWhatsAppCallRequest_DisconnectReason. +var ( + DisconnectWhatsAppCallRequest_DisconnectReason_name = map[int32]string{ + 0: "BUSINESS_INITIATED", + 1: "USER_INITIATED", + } + DisconnectWhatsAppCallRequest_DisconnectReason_value = map[string]int32{ + "BUSINESS_INITIATED": 0, + "USER_INITIATED": 1, + } +) + +func (x DisconnectWhatsAppCallRequest_DisconnectReason) Enum() *DisconnectWhatsAppCallRequest_DisconnectReason { + p := new(DisconnectWhatsAppCallRequest_DisconnectReason) + *p = x + return p +} + +func (x DisconnectWhatsAppCallRequest_DisconnectReason) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (DisconnectWhatsAppCallRequest_DisconnectReason) Descriptor() protoreflect.EnumDescriptor { + return file_livekit_connector_whatsapp_proto_enumTypes[1].Descriptor() +} + +func (DisconnectWhatsAppCallRequest_DisconnectReason) Type() protoreflect.EnumType { + return &file_livekit_connector_whatsapp_proto_enumTypes[1] +} + +func (x DisconnectWhatsAppCallRequest_DisconnectReason) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use DisconnectWhatsAppCallRequest_DisconnectReason.Descriptor instead. +func (DisconnectWhatsAppCallRequest_DisconnectReason) EnumDescriptor() ([]byte, []int) { + return file_livekit_connector_whatsapp_proto_rawDescGZIP(), []int{2, 0} +} + type DialWhatsAppCallRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Required - The number of the business that is initiating the call @@ -287,9 +339,8 @@ type DisconnectWhatsAppCallRequest struct { // The API key of the business that is disconnecting the call // Optional - only if the user disconnected the call WhatsappApiKey string `protobuf:"bytes,2,opt,name=whatsapp_api_key,json=whatsappApiKey,proto3" json:"whatsapp_api_key,omitempty"` - // Set this to true if the user disconnected the call - // Otherwise, call will be disconnected when we hit a media timeout - UserDisconnected bool `protobuf:"varint,3,opt,name=user_disconnected,json=userDisconnected,proto3" json:"user_disconnected,omitempty"` + // The reason for disconnecting the call + DisconnectReason DisconnectWhatsAppCallRequest_DisconnectReason `protobuf:"varint,3,opt,name=disconnect_reason,json=disconnectReason,proto3,enum=livekit.DisconnectWhatsAppCallRequest_DisconnectReason" json:"disconnect_reason,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -338,11 +389,11 @@ func (x *DisconnectWhatsAppCallRequest) GetWhatsappApiKey() string { return "" } -func (x *DisconnectWhatsAppCallRequest) GetUserDisconnected() bool { +func (x *DisconnectWhatsAppCallRequest) GetDisconnectReason() DisconnectWhatsAppCallRequest_DisconnectReason { if x != nil { - return x.UserDisconnected + return x.DisconnectReason } - return false + return DisconnectWhatsAppCallRequest_BUSINESS_INITIATED } type DisconnectWhatsAppCallResponse struct { @@ -749,11 +800,14 @@ const file_livekit_connector_whatsapp_proto_rawDesc = "" + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01\"a\n" + "\x18DialWhatsAppCallResponse\x12(\n" + "\x10whatsapp_call_id\x18\x01 \x01(\tR\x0ewhatsappCallId\x12\x1b\n" + - "\troom_name\x18\x02 \x01(\tR\broomName\"\xa6\x01\n" + + "\troom_name\x18\x02 \x01(\tR\broomName\"\x9f\x02\n" + "\x1dDisconnectWhatsAppCallRequest\x12(\n" + "\x10whatsapp_call_id\x18\x01 \x01(\tR\x0ewhatsappCallId\x12.\n" + - "\x10whatsapp_api_key\x18\x02 \x01(\tB\x04\x88\xb5\x18\x01R\x0ewhatsappApiKey\x12+\n" + - "\x11user_disconnected\x18\x03 \x01(\bR\x10userDisconnected\" \n" + + "\x10whatsapp_api_key\x18\x02 \x01(\tB\x04\x88\xb5\x18\x01R\x0ewhatsappApiKey\x12d\n" + + "\x11disconnect_reason\x18\x03 \x01(\x0e27.livekit.DisconnectWhatsAppCallRequest.DisconnectReasonR\x10disconnectReason\">\n" + + "\x10DisconnectReason\x12\x16\n" + + "\x12BUSINESS_INITIATED\x10\x00\x12\x12\n" + + "\x0eUSER_INITIATED\x10\x01\" \n" + "\x1eDisconnectWhatsAppCallResponse\"u\n" + "\x1aConnectWhatsAppCallRequest\x12(\n" + "\x10whatsapp_call_id\x18\x01 \x01(\tR\x0ewhatsappCallId\x12-\n" + @@ -798,37 +852,39 @@ func file_livekit_connector_whatsapp_proto_rawDescGZIP() []byte { return file_livekit_connector_whatsapp_proto_rawDescData } -var file_livekit_connector_whatsapp_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_livekit_connector_whatsapp_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_livekit_connector_whatsapp_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_livekit_connector_whatsapp_proto_goTypes = []any{ - (WhatsAppCallDirection)(0), // 0: livekit.WhatsAppCallDirection - (*DialWhatsAppCallRequest)(nil), // 1: livekit.DialWhatsAppCallRequest - (*DialWhatsAppCallResponse)(nil), // 2: livekit.DialWhatsAppCallResponse - (*DisconnectWhatsAppCallRequest)(nil), // 3: livekit.DisconnectWhatsAppCallRequest - (*DisconnectWhatsAppCallResponse)(nil), // 4: livekit.DisconnectWhatsAppCallResponse - (*ConnectWhatsAppCallRequest)(nil), // 5: livekit.ConnectWhatsAppCallRequest - (*ConnectWhatsAppCallResponse)(nil), // 6: livekit.ConnectWhatsAppCallResponse - (*AcceptWhatsAppCallRequest)(nil), // 7: livekit.AcceptWhatsAppCallRequest - (*AcceptWhatsAppCallResponse)(nil), // 8: livekit.AcceptWhatsAppCallResponse - (*WhatsAppCall)(nil), // 9: livekit.WhatsAppCall - nil, // 10: livekit.DialWhatsAppCallRequest.ParticipantAttributesEntry - nil, // 11: livekit.AcceptWhatsAppCallRequest.ParticipantAttributesEntry - (*RoomAgentDispatch)(nil), // 12: livekit.RoomAgentDispatch - (*SessionDescription)(nil), // 13: livekit.SessionDescription + (WhatsAppCallDirection)(0), // 0: livekit.WhatsAppCallDirection + (DisconnectWhatsAppCallRequest_DisconnectReason)(0), // 1: livekit.DisconnectWhatsAppCallRequest.DisconnectReason + (*DialWhatsAppCallRequest)(nil), // 2: livekit.DialWhatsAppCallRequest + (*DialWhatsAppCallResponse)(nil), // 3: livekit.DialWhatsAppCallResponse + (*DisconnectWhatsAppCallRequest)(nil), // 4: livekit.DisconnectWhatsAppCallRequest + (*DisconnectWhatsAppCallResponse)(nil), // 5: livekit.DisconnectWhatsAppCallResponse + (*ConnectWhatsAppCallRequest)(nil), // 6: livekit.ConnectWhatsAppCallRequest + (*ConnectWhatsAppCallResponse)(nil), // 7: livekit.ConnectWhatsAppCallResponse + (*AcceptWhatsAppCallRequest)(nil), // 8: livekit.AcceptWhatsAppCallRequest + (*AcceptWhatsAppCallResponse)(nil), // 9: livekit.AcceptWhatsAppCallResponse + (*WhatsAppCall)(nil), // 10: livekit.WhatsAppCall + nil, // 11: livekit.DialWhatsAppCallRequest.ParticipantAttributesEntry + nil, // 12: livekit.AcceptWhatsAppCallRequest.ParticipantAttributesEntry + (*RoomAgentDispatch)(nil), // 13: livekit.RoomAgentDispatch + (*SessionDescription)(nil), // 14: livekit.SessionDescription } var file_livekit_connector_whatsapp_proto_depIdxs = []int32{ - 12, // 0: livekit.DialWhatsAppCallRequest.agents:type_name -> livekit.RoomAgentDispatch - 10, // 1: livekit.DialWhatsAppCallRequest.participant_attributes:type_name -> livekit.DialWhatsAppCallRequest.ParticipantAttributesEntry - 13, // 2: livekit.ConnectWhatsAppCallRequest.sdp:type_name -> livekit.SessionDescription - 13, // 3: livekit.AcceptWhatsAppCallRequest.sdp:type_name -> livekit.SessionDescription - 12, // 4: livekit.AcceptWhatsAppCallRequest.agents:type_name -> livekit.RoomAgentDispatch - 11, // 5: livekit.AcceptWhatsAppCallRequest.participant_attributes:type_name -> livekit.AcceptWhatsAppCallRequest.ParticipantAttributesEntry - 0, // 6: livekit.WhatsAppCall.direction:type_name -> livekit.WhatsAppCallDirection - 7, // [7:7] is the sub-list for method output_type - 7, // [7:7] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 13, // 0: livekit.DialWhatsAppCallRequest.agents:type_name -> livekit.RoomAgentDispatch + 11, // 1: livekit.DialWhatsAppCallRequest.participant_attributes:type_name -> livekit.DialWhatsAppCallRequest.ParticipantAttributesEntry + 1, // 2: livekit.DisconnectWhatsAppCallRequest.disconnect_reason:type_name -> livekit.DisconnectWhatsAppCallRequest.DisconnectReason + 14, // 3: livekit.ConnectWhatsAppCallRequest.sdp:type_name -> livekit.SessionDescription + 14, // 4: livekit.AcceptWhatsAppCallRequest.sdp:type_name -> livekit.SessionDescription + 13, // 5: livekit.AcceptWhatsAppCallRequest.agents:type_name -> livekit.RoomAgentDispatch + 12, // 6: livekit.AcceptWhatsAppCallRequest.participant_attributes:type_name -> livekit.AcceptWhatsAppCallRequest.ParticipantAttributesEntry + 0, // 7: livekit.WhatsAppCall.direction:type_name -> livekit.WhatsAppCallDirection + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_livekit_connector_whatsapp_proto_init() } @@ -843,7 +899,7 @@ func file_livekit_connector_whatsapp_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_livekit_connector_whatsapp_proto_rawDesc), len(file_livekit_connector_whatsapp_proto_rawDesc)), - NumEnums: 1, + NumEnums: 2, NumMessages: 11, NumExtensions: 0, NumServices: 0, From 385f5521ddfe30323e8773d3370ff0cedace15ea Mon Sep 17 00:00:00 2001 From: Anunay Maheshwari Date: Thu, 18 Dec 2025 03:27:53 +0530 Subject: [PATCH 5/9] Create sixty-years-occur.md --- .changeset/sixty-years-occur.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/sixty-years-occur.md diff --git a/.changeset/sixty-years-occur.md b/.changeset/sixty-years-occur.md new file mode 100644 index 000000000..e4c124c50 --- /dev/null +++ b/.changeset/sixty-years-occur.md @@ -0,0 +1,5 @@ +--- +"@livekit/protocol": patch +--- + +feat(whatsapp): add disconnect reason field for disconnect request From 716a1826b86388838651632cc911312bc45dd408 Mon Sep 17 00:00:00 2001 From: Anunay Maheshwari Date: Thu, 18 Dec 2025 22:33:00 +0530 Subject: [PATCH 6/9] update comment --- protobufs/livekit_connector_whatsapp.proto | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/protobufs/livekit_connector_whatsapp.proto b/protobufs/livekit_connector_whatsapp.proto index f69364d91..6fb71adec 100644 --- a/protobufs/livekit_connector_whatsapp.proto +++ b/protobufs/livekit_connector_whatsapp.proto @@ -81,8 +81,9 @@ message DisconnectWhatsAppCallRequest { // Required - Call ID sent by Meta string whatsapp_call_id = 1; - // The API key of the business that is disconnecting the call - // Optional - only if the user disconnected the call + // The API key of the whatsapp business. + // It is only required if the DisconnectReason is BUSINESS_INITIATED, as we need to make an API call. + // For USER_INITIATED, this is not required. string whatsapp_api_key = 2 [(logger.redact) = true]; // The reason for disconnecting the call DisconnectReason disconnect_reason = 3; From b38e187404ba817b0c7678dc3116165404312730 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 18 Dec 2025 17:03:51 +0000 Subject: [PATCH 7/9] generated protobuf --- livekit/livekit_connector_whatsapp.pb.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/livekit/livekit_connector_whatsapp.pb.go b/livekit/livekit_connector_whatsapp.pb.go index 867fc7432..30e1c5e58 100644 --- a/livekit/livekit_connector_whatsapp.pb.go +++ b/livekit/livekit_connector_whatsapp.pb.go @@ -336,8 +336,9 @@ type DisconnectWhatsAppCallRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Required - Call ID sent by Meta WhatsappCallId string `protobuf:"bytes,1,opt,name=whatsapp_call_id,json=whatsappCallId,proto3" json:"whatsapp_call_id,omitempty"` - // The API key of the business that is disconnecting the call - // Optional - only if the user disconnected the call + // The API key of the whatsapp business. + // It is only required if the DisconnectReason is BUSINESS_INITIATED, as we need to make an API call. + // For USER_INITIATED, this is not required. WhatsappApiKey string `protobuf:"bytes,2,opt,name=whatsapp_api_key,json=whatsappApiKey,proto3" json:"whatsapp_api_key,omitempty"` // The reason for disconnecting the call DisconnectReason DisconnectWhatsAppCallRequest_DisconnectReason `protobuf:"varint,3,opt,name=disconnect_reason,json=disconnectReason,proto3,enum=livekit.DisconnectWhatsAppCallRequest_DisconnectReason" json:"disconnect_reason,omitempty"` From a2d1c640bfaf9cca820de6b90031d04b5165a66d Mon Sep 17 00:00:00 2001 From: Anunay Maheshwari Date: Fri, 19 Dec 2025 07:35:17 +0530 Subject: [PATCH 8/9] Update protobufs/livekit_connector_whatsapp.proto Co-authored-by: Benjamin Pracht --- protobufs/livekit_connector_whatsapp.proto | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/protobufs/livekit_connector_whatsapp.proto b/protobufs/livekit_connector_whatsapp.proto index 6fb71adec..79eb495fe 100644 --- a/protobufs/livekit_connector_whatsapp.proto +++ b/protobufs/livekit_connector_whatsapp.proto @@ -82,8 +82,8 @@ message DisconnectWhatsAppCallRequest { // Required - Call ID sent by Meta string whatsapp_call_id = 1; // The API key of the whatsapp business. - // It is only required if the DisconnectReason is BUSINESS_INITIATED, as we need to make an API call. - // For USER_INITIATED, this is not required. + // Required if the DisconnectReason is BUSINESS_INITIATED. + // Optional for USER_INITIATED as no API call to WhatsApp is needed. string whatsapp_api_key = 2 [(logger.redact) = true]; // The reason for disconnecting the call DisconnectReason disconnect_reason = 3; From 9a4eb7d4bfa4f90fdeb18140af44c73d0d66b820 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 19 Dec 2025 02:05:58 +0000 Subject: [PATCH 9/9] generated protobuf --- livekit/livekit_connector_whatsapp.pb.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/livekit/livekit_connector_whatsapp.pb.go b/livekit/livekit_connector_whatsapp.pb.go index 30e1c5e58..8fbb4753a 100644 --- a/livekit/livekit_connector_whatsapp.pb.go +++ b/livekit/livekit_connector_whatsapp.pb.go @@ -337,8 +337,8 @@ type DisconnectWhatsAppCallRequest struct { // Required - Call ID sent by Meta WhatsappCallId string `protobuf:"bytes,1,opt,name=whatsapp_call_id,json=whatsappCallId,proto3" json:"whatsapp_call_id,omitempty"` // The API key of the whatsapp business. - // It is only required if the DisconnectReason is BUSINESS_INITIATED, as we need to make an API call. - // For USER_INITIATED, this is not required. + // Required if the DisconnectReason is BUSINESS_INITIATED. + // Optional for USER_INITIATED as no API call to WhatsApp is needed. WhatsappApiKey string `protobuf:"bytes,2,opt,name=whatsapp_api_key,json=whatsappApiKey,proto3" json:"whatsapp_api_key,omitempty"` // The reason for disconnecting the call DisconnectReason DisconnectWhatsAppCallRequest_DisconnectReason `protobuf:"varint,3,opt,name=disconnect_reason,json=disconnectReason,proto3,enum=livekit.DisconnectWhatsAppCallRequest_DisconnectReason" json:"disconnect_reason,omitempty"`