From f6d94acf90667901b9da8ce37443f8e2e84a479f Mon Sep 17 00:00:00 2001 From: Andreas Rath Date: Sun, 12 Jul 2026 17:16:31 +0200 Subject: [PATCH 1/8] [OND235-105] feat(proto): regenerate csi client for barge-in control statuses and turn epoch --- Makefile | 3 +- ondewo-csi-api | 2 +- ondewo/csi/conversation_pb2.py | 64 ++-- ondewo/csi/conversation_pb2.pyi | 552 ++++++++++++++-------------- ondewo/csi/conversation_pb2_grpc.py | 25 +- 5 files changed, 328 insertions(+), 318 deletions(-) diff --git a/Makefile b/Makefile index aa05431..117ff90 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,8 @@ CURRENT_RELEASE_NOTES=`cat RELEASE.md \ | sed -n '/Release ONDEWO CSI Python Client ${ONDEWO_CSI_VERSION}/,/\*\*/p'` GH_REPO="https://github.com/ondewo/ondewo-csi-client-python" -ONDEWO_CSI_API_GIT_BRANCH=tags/5.2.0 +# Pinned to feature/OND235-105-interruption-turn-taking-v2 (barge-in control statuses + turn epoch) +ONDEWO_CSI_API_GIT_BRANCH=2335c397843c6d61b1c2dcc6dfc6c670dfaff157 ONDEWO_PROTO_COMPILER_GIT_BRANCH=tags/5.8.0 ONDEWO_CSI_API_DIR=ondewo-csi-api ONDEWO_PROTO_COMPILER_DIR=ondewo-proto-compiler diff --git a/ondewo-csi-api b/ondewo-csi-api index e79fdb0..2335c39 160000 --- a/ondewo-csi-api +++ b/ondewo-csi-api @@ -1 +1 @@ -Subproject commit e79fdb09654f7dd4f49543e0474f7cc7fba8cf13 +Subproject commit 2335c397843c6d61b1c2dcc6dfc6c670dfaff157 diff --git a/ondewo/csi/conversation_pb2.py b/ondewo/csi/conversation_pb2.py index 6ad6c88..6b2eb18 100644 --- a/ondewo/csi/conversation_pb2.py +++ b/ondewo/csi/conversation_pb2.py @@ -33,21 +33,21 @@ from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dondewo/csi/conversation.proto\x12\nondewo.csi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x17google/rpc/status.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x18ondewo/nlu/session.proto\x1a\x1fondewo/t2s/text-to-speech.proto\x1a\x1fondewo/s2t/speech-to-text.proto\x1a\x18ondewo/nlu/context.proto\x1a\x19google/protobuf/any.proto\"~\n\x0bS2sPipeline\x12\n\n\x02id\x18\x01 \x01(\t\x12\x17\n\x0fs2t_pipeline_id\x18\x02 \x01(\t\x12\x16\n\x0enlu_project_id\x18\x03 \x01(\t\x12\x19\n\x11nlu_language_code\x18\x04 \x01(\t\x12\x17\n\x0ft2s_pipeline_id\x18\x05 \x01(\t\"\x1b\n\rS2sPipelineId\x12\n\n\x02id\x18\x01 \x01(\t\"\x19\n\x17ListS2sPipelinesRequest\"F\n\x18ListS2sPipelinesResponse\x12*\n\tpipelines\x18\x01 \x03(\x0b\x32\x17.ondewo.csi.S2sPipeline\"\x86\x01\n\x10S2sStreamRequest\x12\x13\n\x0bpipeline_id\x18\x01 \x01(\t\x12\x12\n\nsession_id\x18\x02 \x01(\t\x12\r\n\x05\x61udio\x18\x03 \x01(\x0c\x12\x15\n\rend_of_stream\x18\x04 \x01(\x08\x12#\n\x1binitial_intent_display_name\x18\x05 \x01(\t\"\xd1\x01\n\x11S2sStreamResponse\x12\x42\n\x16\x64\x65tect_intent_response\x18\x01 \x01(\x0b\x32 .ondewo.nlu.DetectIntentResponseH\x00\x12=\n\x13synthesize_response\x18\x02 \x01(\x0b\x32\x1e.ondewo.t2s.SynthesizeResponseH\x00\x12-\n\x0bsip_trigger\x18\x03 \x01(\x0b\x32\x16.ondewo.csi.SipTriggerH\x00\x42\n\n\x08response\"\xf2\x01\n\nSipTrigger\x12\x33\n\x04type\x18\x01 \x01(\x0e\x32%.ondewo.csi.SipTrigger.SipTriggerType\x12(\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\x84\x01\n\x0eSipTriggerType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06HANGUP\x10\x01\x12\x12\n\x0eHUMAN_HANDOVER\x10\x02\x12\x0c\n\x08SEND_NOW\x10\x03\x12\t\n\x05PAUSE\x10\x04\x12\x0c\n\x08TRANSFER\x10\x05\x12\n\n\x06INVITE\x10\x06\x12\x0e\n\nPLAY_AUDIO\x10\x07\"\x95\x01\n\x1b\x43heckUpstreamHealthResponse\x12&\n\ns2t_status\x18\x01 \x01(\x0b\x32\x12.google.rpc.Status\x12&\n\nnlu_status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\x12&\n\nt2s_status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\"\x16\n\x14\x43ontrolStreamRequest\"J\n\x15\x43ontrolStreamResponse\x12\x31\n\x0e\x63ontrol_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\"L\n\x17SetControlStatusRequest\x12\x31\n\x0e\x63ontrol_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\"\x88\x01\n\x18SetControlStatusResponse\x12\x35\n\x12old_control_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\x12\x35\n\x12new_control_status\x18\x02 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\"C\n\tCondition\x12\'\n\x04type\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ConditionType\x12\r\n\x05value\x18\x02 \x01(\t\"\xfb\x02\n\x1f\x43ontrolMessageServiceParameters\x12/\n\nt2s_config\x18\x01 \x01(\x0b\x32\x19.ondewo.t2s.RequestConfigH\x00\x12\x39\n\ns2t_config\x18\x02 \x01(\x0b\x32#.ondewo.s2t.TranscribeRequestConfigH\x00\x12\x13\n\x0btransfer_id\x18\x03 \x01(\t\x12\x11\n\twav_files\x18\x04 \x03(\x0c\x12\x0c\n\x04text\x18\x05 \x01(\t\x12$\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x13.ondewo.nlu.Context\x12\x12\n\nsession_id\x18\x07 \x01(\t\x12\x14\n\x0c\x63ontext_name\x18\x08 \x01(\t\x12.\n\x0f\x63ondition_start\x18\t \x01(\x0b\x32\x15.ondewo.csi.Condition\x12,\n\rcondition_end\x18\n \x01(\x0b\x32\x15.ondewo.csi.ConditionB\x08\n\x06\x63onfig\"\xc2\x01\n\x0e\x43ontrolMessage\x12\x36\n\x07service\x18\x01 \x01(\x0e\x32%.ondewo.csi.ControlMessageServiceName\x12\x37\n\x06method\x18\x02 \x01(\x0e\x32\'.ondewo.csi.ControlMessageServiceMethod\x12?\n\nparameters\x18\x03 \x01(\x0b\x32+.ondewo.csi.ControlMessageServiceParameters*D\n\rControlStatus\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0e\x45MERGENCY_STOP\x10\x01\x12\x17\n\x13VAD_START_OF_SPEECH\x10\x02*\xa0\x01\n\x19\x43ontrolMessageServiceName\x12\x0f\n\x0bUNKNOWNNAME\x10\x00\x12\x0e\n\nondewo_s2t\x10\x01\x12\x0e\n\nondewo_t2s\x10\x02\x12\x0e\n\nondewo_nlu\x10\x03\x12\x0e\n\nondewo_sip\x10\x04\x12\x0f\n\x0bondewo_vtsi\x10\x05\x12\x0e\n\nondewo_csi\x10\x06\x12\x11\n\rondewo_survey\x10\x07*\x85\x03\n\x1b\x43ontrolMessageServiceMethod\x12\x11\n\rUNKNOWNMETHOD\x10\x00\x12\x11\n\rupdate_config\x10\x01\x12\x0f\n\x0bundo_config\x10\x02\x12\x10\n\x0creset_config\x10\x03\x12\x0c\n\x08\x65nd_call\x10\x04\x12\x11\n\rtransfer_call\x10\x05\x12\x12\n\x0eplay_wav_files\x10\x06\x12\r\n\tplay_text\x10\x07\x12\x08\n\x04mute\x10\x08\x12\x0b\n\x07un_mute\x10\t\x12\x1d\n\x19stop_all_control_messages\x10\n\x12\x0f\n\x0btrain_agent\x10\x0b\x12\x16\n\x12\x63\x61ncel_train_agent\x10\x0c\x12\x12\n\x0e\x64\x65lete_session\x10\r\x12\x17\n\x13\x64\x65lete_all_contexts\x10\x0e\x12\x12\n\x0e\x63reate_context\x10\x0f\x12\x12\n\x0eupdate_context\x10\x10\x12\x12\n\x0e\x64\x65lete_context\x10\x11\x12\x11\n\rdetect_intent\x10\x12*\\\n\rConditionType\x12\x0e\n\nUNKNOWTYPE\x10\x00\x12\r\n\timmediate\x10\x01\x12\x0c\n\x08\x64uration\x10\x02\x12\x0c\n\x08\x64\x61tetime\x10\x03\x12\x10\n\x0cinteractions\x10\x04\x32\xfa\x05\n\rConversations\x12\x46\n\x11\x43reateS2sPipeline\x12\x17.ondewo.csi.S2sPipeline\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x0eGetS2sPipeline\x12\x19.ondewo.csi.S2sPipelineId\x1a\x17.ondewo.csi.S2sPipeline\"\x00\x12\x46\n\x11UpdateS2sPipeline\x12\x17.ondewo.csi.S2sPipeline\x1a\x16.google.protobuf.Empty\"\x00\x12H\n\x11\x44\x65leteS2sPipeline\x12\x19.ondewo.csi.S2sPipelineId\x1a\x16.google.protobuf.Empty\"\x00\x12_\n\x10ListS2sPipelines\x12#.ondewo.csi.ListS2sPipelinesRequest\x1a$.ondewo.csi.ListS2sPipelinesResponse\"\x00\x12N\n\tS2sStream\x12\x1c.ondewo.csi.S2sStreamRequest\x1a\x1d.ondewo.csi.S2sStreamResponse\"\x00(\x01\x30\x01\x12X\n\x13\x43heckUpstreamHealth\x12\x16.google.protobuf.Empty\x1a\'.ondewo.csi.CheckUpstreamHealthResponse\"\x00\x12[\n\x10GetControlStream\x12 .ondewo.csi.ControlStreamRequest\x1a!.ondewo.csi.ControlStreamResponse\"\x00\x30\x01\x12_\n\x10SetControlStatus\x12#.ondewo.csi.SetControlStatusRequest\x1a$.ondewo.csi.SetControlStatusResponse\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dondewo/csi/conversation.proto\x12\nondewo.csi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x17google/rpc/status.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x18ondewo/nlu/session.proto\x1a\x1fondewo/t2s/text-to-speech.proto\x1a\x1fondewo/s2t/speech-to-text.proto\x1a\x18ondewo/nlu/context.proto\x1a\x19google/protobuf/any.proto\"~\n\x0bS2sPipeline\x12\n\n\x02id\x18\x01 \x01(\t\x12\x17\n\x0fs2t_pipeline_id\x18\x02 \x01(\t\x12\x16\n\x0enlu_project_id\x18\x03 \x01(\t\x12\x19\n\x11nlu_language_code\x18\x04 \x01(\t\x12\x17\n\x0ft2s_pipeline_id\x18\x05 \x01(\t\"\x1b\n\rS2sPipelineId\x12\n\n\x02id\x18\x01 \x01(\t\"\x19\n\x17ListS2sPipelinesRequest\"F\n\x18ListS2sPipelinesResponse\x12*\n\tpipelines\x18\x01 \x03(\x0b\x32\x17.ondewo.csi.S2sPipeline\"\x86\x01\n\x10S2sStreamRequest\x12\x13\n\x0bpipeline_id\x18\x01 \x01(\t\x12\x12\n\nsession_id\x18\x02 \x01(\t\x12\r\n\x05\x61udio\x18\x03 \x01(\x0c\x12\x15\n\rend_of_stream\x18\x04 \x01(\x08\x12#\n\x1binitial_intent_display_name\x18\x05 \x01(\t\"\xa4\x02\n\x11S2sStreamResponse\x12\x42\n\x16\x64\x65tect_intent_response\x18\x01 \x01(\x0b\x32 .ondewo.nlu.DetectIntentResponseH\x00\x12=\n\x13synthesize_response\x18\x02 \x01(\x0b\x32\x1e.ondewo.t2s.SynthesizeResponseH\x00\x12-\n\x0bsip_trigger\x18\x03 \x01(\x0b\x32\x16.ondewo.csi.SipTriggerH\x00\x12\x14\n\x0cutterance_id\x18\x04 \x01(\t\x12\x13\n\x0b\x63hunk_index\x18\x05 \x01(\x05\x12\x12\n\nlast_chunk\x18\x06 \x01(\x08\x12\x12\n\nturn_epoch\x18\x07 \x01(\x04\x42\n\n\x08response\"\xf2\x01\n\nSipTrigger\x12\x33\n\x04type\x18\x01 \x01(\x0e\x32%.ondewo.csi.SipTrigger.SipTriggerType\x12(\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\x84\x01\n\x0eSipTriggerType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06HANGUP\x10\x01\x12\x12\n\x0eHUMAN_HANDOVER\x10\x02\x12\x0c\n\x08SEND_NOW\x10\x03\x12\t\n\x05PAUSE\x10\x04\x12\x0c\n\x08TRANSFER\x10\x05\x12\n\n\x06INVITE\x10\x06\x12\x0e\n\nPLAY_AUDIO\x10\x07\"\x95\x01\n\x1b\x43heckUpstreamHealthResponse\x12&\n\ns2t_status\x18\x01 \x01(\x0b\x32\x12.google.rpc.Status\x12&\n\nnlu_status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\x12&\n\nt2s_status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\"\x16\n\x14\x43ontrolStreamRequest\"Y\n\x15\x43ontrolStreamResponse\x12\x31\n\x0e\x63ontrol_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\x12\r\n\x05\x65poch\x18\x02 \x01(\x04\"L\n\x17SetControlStatusRequest\x12\x31\n\x0e\x63ontrol_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\"\x88\x01\n\x18SetControlStatusResponse\x12\x35\n\x12old_control_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\x12\x35\n\x12new_control_status\x18\x02 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\"C\n\tCondition\x12\'\n\x04type\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ConditionType\x12\r\n\x05value\x18\x02 \x01(\t\"\xfb\x02\n\x1f\x43ontrolMessageServiceParameters\x12/\n\nt2s_config\x18\x01 \x01(\x0b\x32\x19.ondewo.t2s.RequestConfigH\x00\x12\x39\n\ns2t_config\x18\x02 \x01(\x0b\x32#.ondewo.s2t.TranscribeRequestConfigH\x00\x12\x13\n\x0btransfer_id\x18\x03 \x01(\t\x12\x11\n\twav_files\x18\x04 \x03(\x0c\x12\x0c\n\x04text\x18\x05 \x01(\t\x12$\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x13.ondewo.nlu.Context\x12\x12\n\nsession_id\x18\x07 \x01(\t\x12\x14\n\x0c\x63ontext_name\x18\x08 \x01(\t\x12.\n\x0f\x63ondition_start\x18\t \x01(\x0b\x32\x15.ondewo.csi.Condition\x12,\n\rcondition_end\x18\n \x01(\x0b\x32\x15.ondewo.csi.ConditionB\x08\n\x06\x63onfig\"\xc2\x01\n\x0e\x43ontrolMessage\x12\x36\n\x07service\x18\x01 \x01(\x0e\x32%.ondewo.csi.ControlMessageServiceName\x12\x37\n\x06method\x18\x02 \x01(\x0e\x32\'.ondewo.csi.ControlMessageServiceMethod\x12?\n\nparameters\x18\x03 \x01(\x0b\x32+.ondewo.csi.ControlMessageServiceParameters*\xa7\x01\n\rControlStatus\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0e\x45MERGENCY_STOP\x10\x01\x12\x17\n\x13VAD_START_OF_SPEECH\x10\x02\x12\x0c\n\x08\x42\x41RGE_IN\x10\x03\x12\x13\n\x0fRESUME_PLAYBACK\x10\x04\x12\x15\n\x11\x44ISCARD_REMAINDER\x10\x05\x12\x14\n\x10PLAYBACK_RESUMED\x10\x06\x12\x11\n\rPLAYBACK_DONE\x10\x07*\xa0\x01\n\x19\x43ontrolMessageServiceName\x12\x0f\n\x0bUNKNOWNNAME\x10\x00\x12\x0e\n\nondewo_s2t\x10\x01\x12\x0e\n\nondewo_t2s\x10\x02\x12\x0e\n\nondewo_nlu\x10\x03\x12\x0e\n\nondewo_sip\x10\x04\x12\x0f\n\x0bondewo_vtsi\x10\x05\x12\x0e\n\nondewo_csi\x10\x06\x12\x11\n\rondewo_survey\x10\x07*\x85\x03\n\x1b\x43ontrolMessageServiceMethod\x12\x11\n\rUNKNOWNMETHOD\x10\x00\x12\x11\n\rupdate_config\x10\x01\x12\x0f\n\x0bundo_config\x10\x02\x12\x10\n\x0creset_config\x10\x03\x12\x0c\n\x08\x65nd_call\x10\x04\x12\x11\n\rtransfer_call\x10\x05\x12\x12\n\x0eplay_wav_files\x10\x06\x12\r\n\tplay_text\x10\x07\x12\x08\n\x04mute\x10\x08\x12\x0b\n\x07un_mute\x10\t\x12\x1d\n\x19stop_all_control_messages\x10\n\x12\x0f\n\x0btrain_agent\x10\x0b\x12\x16\n\x12\x63\x61ncel_train_agent\x10\x0c\x12\x12\n\x0e\x64\x65lete_session\x10\r\x12\x17\n\x13\x64\x65lete_all_contexts\x10\x0e\x12\x12\n\x0e\x63reate_context\x10\x0f\x12\x12\n\x0eupdate_context\x10\x10\x12\x12\n\x0e\x64\x65lete_context\x10\x11\x12\x11\n\rdetect_intent\x10\x12*\\\n\rConditionType\x12\x0e\n\nUNKNOWTYPE\x10\x00\x12\r\n\timmediate\x10\x01\x12\x0c\n\x08\x64uration\x10\x02\x12\x0c\n\x08\x64\x61tetime\x10\x03\x12\x10\n\x0cinteractions\x10\x04\x32\xfa\x05\n\rConversations\x12\x46\n\x11\x43reateS2sPipeline\x12\x17.ondewo.csi.S2sPipeline\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x0eGetS2sPipeline\x12\x19.ondewo.csi.S2sPipelineId\x1a\x17.ondewo.csi.S2sPipeline\"\x00\x12\x46\n\x11UpdateS2sPipeline\x12\x17.ondewo.csi.S2sPipeline\x1a\x16.google.protobuf.Empty\"\x00\x12H\n\x11\x44\x65leteS2sPipeline\x12\x19.ondewo.csi.S2sPipelineId\x1a\x16.google.protobuf.Empty\"\x00\x12_\n\x10ListS2sPipelines\x12#.ondewo.csi.ListS2sPipelinesRequest\x1a$.ondewo.csi.ListS2sPipelinesResponse\"\x00\x12N\n\tS2sStream\x12\x1c.ondewo.csi.S2sStreamRequest\x1a\x1d.ondewo.csi.S2sStreamResponse\"\x00(\x01\x30\x01\x12X\n\x13\x43heckUpstreamHealth\x12\x16.google.protobuf.Empty\x1a\'.ondewo.csi.CheckUpstreamHealthResponse\"\x00\x12[\n\x10GetControlStream\x12 .ondewo.csi.ControlStreamRequest\x1a!.ondewo.csi.ControlStreamResponse\"\x00\x30\x01\x12_\n\x10SetControlStatus\x12#.ondewo.csi.SetControlStatusRequest\x1a$.ondewo.csi.SetControlStatusResponse\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'ondewo.csi.conversation_pb2', _globals) if not _descriptor._USE_C_DESCRIPTORS: DESCRIPTOR._loaded_options = None - _globals['_CONTROLSTATUS']._serialized_start=2274 - _globals['_CONTROLSTATUS']._serialized_end=2342 - _globals['_CONTROLMESSAGESERVICENAME']._serialized_start=2345 - _globals['_CONTROLMESSAGESERVICENAME']._serialized_end=2505 - _globals['_CONTROLMESSAGESERVICEMETHOD']._serialized_start=2508 - _globals['_CONTROLMESSAGESERVICEMETHOD']._serialized_end=2897 - _globals['_CONDITIONTYPE']._serialized_start=2899 - _globals['_CONDITIONTYPE']._serialized_end=2991 + _globals['_CONTROLSTATUS']._serialized_start=2373 + _globals['_CONTROLSTATUS']._serialized_end=2540 + _globals['_CONTROLMESSAGESERVICENAME']._serialized_start=2543 + _globals['_CONTROLMESSAGESERVICENAME']._serialized_end=2703 + _globals['_CONTROLMESSAGESERVICEMETHOD']._serialized_start=2706 + _globals['_CONTROLMESSAGESERVICEMETHOD']._serialized_end=3095 + _globals['_CONDITIONTYPE']._serialized_start=3097 + _globals['_CONDITIONTYPE']._serialized_end=3189 _globals['_S2SPIPELINE']._serialized_start=307 _globals['_S2SPIPELINE']._serialized_end=433 _globals['_S2SPIPELINEID']._serialized_start=435 @@ -59,27 +59,27 @@ _globals['_S2SSTREAMREQUEST']._serialized_start=564 _globals['_S2SSTREAMREQUEST']._serialized_end=698 _globals['_S2SSTREAMRESPONSE']._serialized_start=701 - _globals['_S2SSTREAMRESPONSE']._serialized_end=910 - _globals['_SIPTRIGGER']._serialized_start=913 - _globals['_SIPTRIGGER']._serialized_end=1155 - _globals['_SIPTRIGGER_SIPTRIGGERTYPE']._serialized_start=1023 - _globals['_SIPTRIGGER_SIPTRIGGERTYPE']._serialized_end=1155 - _globals['_CHECKUPSTREAMHEALTHRESPONSE']._serialized_start=1158 - _globals['_CHECKUPSTREAMHEALTHRESPONSE']._serialized_end=1307 - _globals['_CONTROLSTREAMREQUEST']._serialized_start=1309 - _globals['_CONTROLSTREAMREQUEST']._serialized_end=1331 - _globals['_CONTROLSTREAMRESPONSE']._serialized_start=1333 - _globals['_CONTROLSTREAMRESPONSE']._serialized_end=1407 - _globals['_SETCONTROLSTATUSREQUEST']._serialized_start=1409 - _globals['_SETCONTROLSTATUSREQUEST']._serialized_end=1485 - _globals['_SETCONTROLSTATUSRESPONSE']._serialized_start=1488 - _globals['_SETCONTROLSTATUSRESPONSE']._serialized_end=1624 - _globals['_CONDITION']._serialized_start=1626 - _globals['_CONDITION']._serialized_end=1693 - _globals['_CONTROLMESSAGESERVICEPARAMETERS']._serialized_start=1696 - _globals['_CONTROLMESSAGESERVICEPARAMETERS']._serialized_end=2075 - _globals['_CONTROLMESSAGE']._serialized_start=2078 - _globals['_CONTROLMESSAGE']._serialized_end=2272 - _globals['_CONVERSATIONS']._serialized_start=2994 - _globals['_CONVERSATIONS']._serialized_end=3756 + _globals['_S2SSTREAMRESPONSE']._serialized_end=993 + _globals['_SIPTRIGGER']._serialized_start=996 + _globals['_SIPTRIGGER']._serialized_end=1238 + _globals['_SIPTRIGGER_SIPTRIGGERTYPE']._serialized_start=1106 + _globals['_SIPTRIGGER_SIPTRIGGERTYPE']._serialized_end=1238 + _globals['_CHECKUPSTREAMHEALTHRESPONSE']._serialized_start=1241 + _globals['_CHECKUPSTREAMHEALTHRESPONSE']._serialized_end=1390 + _globals['_CONTROLSTREAMREQUEST']._serialized_start=1392 + _globals['_CONTROLSTREAMREQUEST']._serialized_end=1414 + _globals['_CONTROLSTREAMRESPONSE']._serialized_start=1416 + _globals['_CONTROLSTREAMRESPONSE']._serialized_end=1505 + _globals['_SETCONTROLSTATUSREQUEST']._serialized_start=1507 + _globals['_SETCONTROLSTATUSREQUEST']._serialized_end=1583 + _globals['_SETCONTROLSTATUSRESPONSE']._serialized_start=1586 + _globals['_SETCONTROLSTATUSRESPONSE']._serialized_end=1722 + _globals['_CONDITION']._serialized_start=1724 + _globals['_CONDITION']._serialized_end=1791 + _globals['_CONTROLMESSAGESERVICEPARAMETERS']._serialized_start=1794 + _globals['_CONTROLMESSAGESERVICEPARAMETERS']._serialized_end=2173 + _globals['_CONTROLMESSAGE']._serialized_start=2176 + _globals['_CONTROLMESSAGE']._serialized_end=2370 + _globals['_CONVERSATIONS']._serialized_start=3192 + _globals['_CONVERSATIONS']._serialized_end=3954 # @@protoc_insertion_point(module_scope) diff --git a/ondewo/csi/conversation_pb2.pyi b/ondewo/csi/conversation_pb2.pyi index 5bf6f9e..3e2c423 100644 --- a/ondewo/csi/conversation_pb2.pyi +++ b/ondewo/csi/conversation_pb2.pyi @@ -50,9 +50,19 @@ class _ControlStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._ """Status that control stream needs to stop immediately""" VAD_START_OF_SPEECH: _ControlStatus.ValueType # 2 """Status that voice activity detection detected start of speech""" + BARGE_IN: _ControlStatus.ValueType # 3 + """Status that the caller started speaking while the bot was speaking (barge-in): playback pauses and the un-played audio remainder is buffered""" + RESUME_PLAYBACK: _ControlStatus.ValueType # 4 + """Status sent by the server to the client to resume playback of the buffered audio remainder after a false interruption (no committed transcription final arrived within the false interruption timeout)""" + DISCARD_REMAINDER: _ControlStatus.ValueType # 5 + """Status sent by the server to the client to discard the buffered audio remainder because the interruption committed as a real turn""" + PLAYBACK_RESUMED: _ControlStatus.ValueType # 6 + """Status reported by the client to the server via SetControlStatus that playback of the buffered audio remainder has resumed""" + PLAYBACK_DONE: _ControlStatus.ValueType # 7 + """Status reported by the client to the server via SetControlStatus that playback of an utterance has completed""" class ControlStatus(_ControlStatus, metaclass=_ControlStatusEnumTypeWrapper): - """Control status""" + """Control status.""" OK: ControlStatus.ValueType # 0 """Status that control stream is ok""" @@ -60,6 +70,16 @@ EMERGENCY_STOP: ControlStatus.ValueType # 1 """Status that control stream needs to stop immediately""" VAD_START_OF_SPEECH: ControlStatus.ValueType # 2 """Status that voice activity detection detected start of speech""" +BARGE_IN: ControlStatus.ValueType # 3 +"""Status that the caller started speaking while the bot was speaking (barge-in): playback pauses and the un-played audio remainder is buffered""" +RESUME_PLAYBACK: ControlStatus.ValueType # 4 +"""Status sent by the server to the client to resume playback of the buffered audio remainder after a false interruption (no committed transcription final arrived within the false interruption timeout)""" +DISCARD_REMAINDER: ControlStatus.ValueType # 5 +"""Status sent by the server to the client to discard the buffered audio remainder because the interruption committed as a real turn""" +PLAYBACK_RESUMED: ControlStatus.ValueType # 6 +"""Status reported by the client to the server via SetControlStatus that playback of the buffered audio remainder has resumed""" +PLAYBACK_DONE: ControlStatus.ValueType # 7 +"""Status reported by the client to the server via SetControlStatus that playback of an utterance has completed""" global___ControlStatus = ControlStatus class _ControlMessageServiceName: @@ -86,7 +106,7 @@ class _ControlMessageServiceNameEnumTypeWrapper(google.protobuf.internal.enum_ty """Survey control message service name""" class ControlMessageServiceName(_ControlMessageServiceName, metaclass=_ControlMessageServiceNameEnumTypeWrapper): - """Control message services""" + """Control message services.""" UNKNOWNNAME: ControlMessageServiceName.ValueType # 0 """Unknown control message service name""" @@ -120,25 +140,25 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_s2t",
-       "method": "update_config",
-       "parameters": [
+       "service": "ondewo_s2t",
+       "method": "update_config",
+       "parameters": [
            {
                // Speech2TextConfig object
-               “s2tPipelineId” : “s2t_pipeline_german_1”,
-               “languageModelName” : “language_model_german”
+               "s2tPipelineId" : "s2t_pipeline_german_1",
+               "languageModelName" : "language_model_german"
            },
            {
-                // condition_start object => should take effect immediately
-                "type": "immediate",
-                “value”: “0”
+                // condition_start object => should take effect immediately
+                "type": "immediate",
+                "value": "0"
            },
            {
                 // condition_end object - s2t config will be changed back to
                 // last valid configuration after 10 interactions of user with
                 // the AI agent
-                "type": "interactions",
-    	           "value": 10
+                "type": "interactions",
+    	           "value": 10
            },
        ]
     }
@@ -150,16 +170,16 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_s2t",
-       "method": "undo_config",
-       "parameters": [
+       "service": "ondewo_s2t",
+       "method": "undo_config",
+       "parameters": [
            {
     	 	      // condition_start object
            },
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
     	          // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -171,16 +191,16 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_s2t",
-       "method": "reset_config",
-       "parameters": [
+       "service": "ondewo_s2t",
+       "method": "reset_config",
+       "parameters": [
            {
     	 	      // condition_start object
            },
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -192,16 +212,16 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_sip",
-       "method": "end_call",
-       "parameters": [
+       "service": "ondewo_sip",
+       "method": "end_call",
+       "parameters": [
            {
     	 	      // condition_start object
            },
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -213,11 +233,11 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_sip",
-       "method": "transfer_call",
-       "parameters": [
+       "service": "ondewo_sip",
+       "method": "transfer_call",
+       "parameters": [
            {
-    	 	      "transfer_id": "+43123456789@127.0.0.10:5060",
+    	 	      "transfer_id": "+43123456789@127.0.0.10:5060",
            },
            {
     	 	      // condition_start object
@@ -225,7 +245,7 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -237,14 +257,14 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_sip",
-       "method": "  "play_wav_files",
-       "parameters": [
+       "service": "ondewo_sip",
+       "method": "play_wav_files",
+       "parameters": [
            {
-    	 	      "wav_files":  [
-                   ,
-                   ,
-                   ,
+    	 	      "wav_files":  [
+                   <bytes_of_file_1>,
+                   <bytes_of_file_2>,
+                   <bytes_of_file_3>,
                ]
            },
            {
@@ -265,11 +285,11 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_sip",
-       "method": "play_text",
-       "parameters": [
+       "service": "ondewo_sip",
+       "method": "play_text",
+       "parameters": [
            {
-    	 	      "text": "Welcome from ONDEWO AI Agent! How are you today?",
+    	 	      "text": "Welcome from ONDEWO AI Agent! How are you today?",
            },
            {
     	 	      // condition_start object
@@ -277,7 +297,7 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -289,16 +309,16 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_sip",
-       "method": "mute",
-       "parameters": [
+       "service": "ondewo_sip",
+       "method": "mute",
+       "parameters": [
            {
     	 	      // condition_start object
            },
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -310,16 +330,16 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_sip",
-       "method": "un_mute",
-       "parameters": [
+       "service": "ondewo_sip",
+       "method": "un_mute",
+       "parameters": [
            {
     	 	      // condition_start object
            },
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -331,8 +351,8 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "",    <= empty string since it is for all services / no specific service
-       "method": "stop_all_control_messages",
+       "service": "",    <= empty string since it is for all services / no specific service
+       "method": "stop_all_control_messages",
        "parameters": [
            {
     	 	      // condition_start object
@@ -352,16 +372,16 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_nlu",
-       "method": "train_agent",
-       "parameters": [
+       "service": "ondewo_nlu",
+       "method": "train_agent",
+       "parameters": [
            {
     	 	      // condition_start object
            },
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -373,32 +393,32 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_nlu",
-       "method": "cancel_train_agent",
-       "parameters": [
+       "service": "ondewo_nlu",
+       "method": "cancel_train_agent",
+       "parameters": [
            {
     	 	      // condition_start object
            },
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
     
""" delete_session: _ControlMessageServiceMethod.ValueType # 13 - """NLU: delete session all all session-related information + """NLU: delete session and all session-related information

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_nlu",
-       "method": "delete_session",
-       "parameters": [
+       "service": "ondewo_nlu",
+       "method": "delete_session",
+       "parameters": [
            {
-    	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
+    	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
            },
            {
     	 	      // condition_start object
@@ -406,7 +426,7 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -418,11 +438,11 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_nlu",
-       "method": "delete_all_contexts",
-       "parameters": [
+       "service": "ondewo_nlu",
+       "method": "delete_all_contexts",
+       "parameters": [
            {
-    	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
+    	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
            },
            {
     	 	      // condition_start object
@@ -430,7 +450,7 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -446,8 +466,8 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
        "method": "create_context",
        "parameters": [
            {
-    	 	      "context": {           <== 
-                   name": "projects/db46dcf8-2d2c-4115-ac38-eff443ea0e72/agent/sessions/ss2ea1a20-0784-442b-93c0-eb9e2469420e/contexts/78ea1a20-0784-442b-93c0-eb9e2469420e",
+    	 	      "context": {           <== <NLU Context Object as JSON object>
+                   "name": "projects/db46dcf8-2d2c-4115-ac38-eff443ea0e72/agent/sessions/ss2ea1a20-0784-442b-93c0-eb9e2469420e/contexts/78ea1a20-0784-442b-93c0-eb9e2469420e",
                    ...,
                }
            },
@@ -473,8 +493,8 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
        "method": "update_context",
        "parameters": [
            {
-    	 	      "context": {           <== 
-                   name": "projects/db46dcf8-2d2c-4115-ac38-eff443ea0e72/agent/sessions/2dea1a20-0784-442b-93c0-eb9e2469420e/contexts/78ea1a20-0784-442b-93c0-eb9e2469420e",
+    	 	      "context": {           <== <NLU Context Object as JSON object>
+                   "name": "projects/db46dcf8-2d2c-4115-ac38-eff443ea0e72/agent/sessions/2dea1a20-0784-442b-93c0-eb9e2469420e/contexts/78ea1a20-0784-442b-93c0-eb9e2469420e",
                    ...,
                }
            },
@@ -496,12 +516,12 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


     {
-       "service": "ondewo_nlu",
-       "method": "delete_context",
-       "parameters": [
+       "service": "ondewo_nlu",
+       "method": "delete_context",
+       "parameters": [
            {
-    	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
-    	 	      "context_name": "78ea1a20-0784-442b-93c0-eb9e2469420e",
+    	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
+    	 	      "context_name": "78ea1a20-0784-442b-93c0-eb9e2469420e",
            },
            {
     	 	      // condition_start object
@@ -509,7 +529,7 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -517,13 +537,16 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     """
     detect_intent: _ControlMessageServiceMethod.ValueType  # 18
     """NLU: execute a detect intent request based on the provided information in the current session
+
+    

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:

+

     {
-       "service": "ondewo_nlu",
-       "method": "detect_intent",
-       "parameters": [
+       "service": "ondewo_nlu",
+       "method": "detect_intent",
+       "parameters": [
            {
-    	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
-    	 	      "text": "Are you an artificial intelligence?",
+    	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
+    	 	      "text": "Are you an artificial intelligence?",
            },
            {
     	 	      // condition_start object
@@ -531,7 +554,7 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
            {
     	 	      // condition_end object (OPTIONAL) - for permanent change
                // no condition_end needs to be supplied i.e.
-    		      // this parameter is missing or empty “{}”
+    		      // this parameter is missing or empty "{}"
            },
        ]
     }
@@ -539,7 +562,7 @@ class _ControlMessageServiceMethodEnumTypeWrapper(google.protobuf.internal.enum_
     """
 
 class ControlMessageServiceMethod(_ControlMessageServiceMethod, metaclass=_ControlMessageServiceMethodEnumTypeWrapper):
-    """Control message methods to control services during a conversation"""
+    """Control message methods to control services during a conversation."""
 
 UNKNOWNMETHOD: ControlMessageServiceMethod.ValueType  # 0
 """Unknown method (default)"""
@@ -549,25 +572,25 @@ update_config: ControlMessageServiceMethod.ValueType  # 1
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_s2t",
-   "method": "update_config",
-   "parameters": [
+   "service": "ondewo_s2t",
+   "method": "update_config",
+   "parameters": [
        {
            // Speech2TextConfig object
-           “s2tPipelineId” : “s2t_pipeline_german_1”,
-           “languageModelName” : “language_model_german”
+           "s2tPipelineId" : "s2t_pipeline_german_1",
+           "languageModelName" : "language_model_german"
        },
        {
-            // condition_start object => should take effect immediately
-            "type": "immediate",
-            “value”: “0”
+            // condition_start object => should take effect immediately
+            "type": "immediate",
+            "value": "0"
        },
        {
             // condition_end object - s2t config will be changed back to
             // last valid configuration after 10 interactions of user with
             // the AI agent
-            "type": "interactions",
-	           "value": 10
+            "type": "interactions",
+	           "value": 10
        },
    ]
 }
@@ -579,16 +602,16 @@ undo_config: ControlMessageServiceMethod.ValueType  # 2
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_s2t",
-   "method": "undo_config",
-   "parameters": [
+   "service": "ondewo_s2t",
+   "method": "undo_config",
+   "parameters": [
        {
 	 	      // condition_start object
        },
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
 	          // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -600,16 +623,16 @@ reset_config: ControlMessageServiceMethod.ValueType  # 3
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_s2t",
-   "method": "reset_config",
-   "parameters": [
+   "service": "ondewo_s2t",
+   "method": "reset_config",
+   "parameters": [
        {
 	 	      // condition_start object
        },
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -621,16 +644,16 @@ end_call: ControlMessageServiceMethod.ValueType  # 4
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_sip",
-   "method": "end_call",
-   "parameters": [
+   "service": "ondewo_sip",
+   "method": "end_call",
+   "parameters": [
        {
 	 	      // condition_start object
        },
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -642,11 +665,11 @@ transfer_call: ControlMessageServiceMethod.ValueType  # 5
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_sip",
-   "method": "transfer_call",
-   "parameters": [
+   "service": "ondewo_sip",
+   "method": "transfer_call",
+   "parameters": [
        {
-	 	      "transfer_id": "+43123456789@127.0.0.10:5060",
+	 	      "transfer_id": "+43123456789@127.0.0.10:5060",
        },
        {
 	 	      // condition_start object
@@ -654,7 +677,7 @@ transfer_call: ControlMessageServiceMethod.ValueType  # 5
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -666,14 +689,14 @@ play_wav_files: ControlMessageServiceMethod.ValueType  # 6
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_sip",
-   "method": "  "play_wav_files",
-   "parameters": [
+   "service": "ondewo_sip",
+   "method": "play_wav_files",
+   "parameters": [
        {
-	 	      "wav_files":  [
-               ,
-               ,
-               ,
+	 	      "wav_files":  [
+               <bytes_of_file_1>,
+               <bytes_of_file_2>,
+               <bytes_of_file_3>,
            ]
        },
        {
@@ -694,11 +717,11 @@ play_text: ControlMessageServiceMethod.ValueType  # 7
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_sip",
-   "method": "play_text",
-   "parameters": [
+   "service": "ondewo_sip",
+   "method": "play_text",
+   "parameters": [
        {
-	 	      "text": "Welcome from ONDEWO AI Agent! How are you today?",
+	 	      "text": "Welcome from ONDEWO AI Agent! How are you today?",
        },
        {
 	 	      // condition_start object
@@ -706,7 +729,7 @@ play_text: ControlMessageServiceMethod.ValueType  # 7
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -718,16 +741,16 @@ mute: ControlMessageServiceMethod.ValueType  # 8
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_sip",
-   "method": "mute",
-   "parameters": [
+   "service": "ondewo_sip",
+   "method": "mute",
+   "parameters": [
        {
 	 	      // condition_start object
        },
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -739,16 +762,16 @@ un_mute: ControlMessageServiceMethod.ValueType  # 9
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_sip",
-   "method": "un_mute",
-   "parameters": [
+   "service": "ondewo_sip",
+   "method": "un_mute",
+   "parameters": [
        {
 	 	      // condition_start object
        },
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -760,8 +783,8 @@ stop_all_control_messages: ControlMessageServiceMethod.ValueType  # 10
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "",    <= empty string since it is for all services / no specific service
-   "method": "stop_all_control_messages",
+   "service": "",    <= empty string since it is for all services / no specific service
+   "method": "stop_all_control_messages",
    "parameters": [
        {
 	 	      // condition_start object
@@ -781,16 +804,16 @@ train_agent: ControlMessageServiceMethod.ValueType  # 11
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_nlu",
-   "method": "train_agent",
-   "parameters": [
+   "service": "ondewo_nlu",
+   "method": "train_agent",
+   "parameters": [
        {
 	 	      // condition_start object
        },
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -802,32 +825,32 @@ cancel_train_agent: ControlMessageServiceMethod.ValueType  # 12
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_nlu",
-   "method": "cancel_train_agent",
-   "parameters": [
+   "service": "ondewo_nlu",
+   "method": "cancel_train_agent",
+   "parameters": [
        {
 	 	      // condition_start object
        },
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
 
""" delete_session: ControlMessageServiceMethod.ValueType # 13 -"""NLU: delete session all all session-related information +"""NLU: delete session and all session-related information

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_nlu",
-   "method": "delete_session",
-   "parameters": [
+   "service": "ondewo_nlu",
+   "method": "delete_session",
+   "parameters": [
        {
-	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
+	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
        },
        {
 	 	      // condition_start object
@@ -835,7 +858,7 @@ delete_session: ControlMessageServiceMethod.ValueType  # 13
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -847,11 +870,11 @@ delete_all_contexts: ControlMessageServiceMethod.ValueType  # 14
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_nlu",
-   "method": "delete_all_contexts",
-   "parameters": [
+   "service": "ondewo_nlu",
+   "method": "delete_all_contexts",
+   "parameters": [
        {
-	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
+	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
        },
        {
 	 	      // condition_start object
@@ -859,7 +882,7 @@ delete_all_contexts: ControlMessageServiceMethod.ValueType  # 14
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -875,8 +898,8 @@ create_context: ControlMessageServiceMethod.ValueType  # 15
    "method": "create_context",
    "parameters": [
        {
-	 	      "context": {           <== 
-               name": "projects/db46dcf8-2d2c-4115-ac38-eff443ea0e72/agent/sessions/ss2ea1a20-0784-442b-93c0-eb9e2469420e/contexts/78ea1a20-0784-442b-93c0-eb9e2469420e",
+	 	      "context": {           <== <NLU Context Object as JSON object>
+               "name": "projects/db46dcf8-2d2c-4115-ac38-eff443ea0e72/agent/sessions/ss2ea1a20-0784-442b-93c0-eb9e2469420e/contexts/78ea1a20-0784-442b-93c0-eb9e2469420e",
                ...,
            }
        },
@@ -902,8 +925,8 @@ update_context: ControlMessageServiceMethod.ValueType  # 16
    "method": "update_context",
    "parameters": [
        {
-	 	      "context": {           <== 
-               name": "projects/db46dcf8-2d2c-4115-ac38-eff443ea0e72/agent/sessions/2dea1a20-0784-442b-93c0-eb9e2469420e/contexts/78ea1a20-0784-442b-93c0-eb9e2469420e",
+	 	      "context": {           <== <NLU Context Object as JSON object>
+               "name": "projects/db46dcf8-2d2c-4115-ac38-eff443ea0e72/agent/sessions/2dea1a20-0784-442b-93c0-eb9e2469420e/contexts/78ea1a20-0784-442b-93c0-eb9e2469420e",
                ...,
            }
        },
@@ -925,12 +948,12 @@ delete_context: ControlMessageServiceMethod.ValueType  # 17
 

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:


 {
-   "service": "ondewo_nlu",
-   "method": "delete_context",
-   "parameters": [
+   "service": "ondewo_nlu",
+   "method": "delete_context",
+   "parameters": [
        {
-	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
-	 	      "context_name": "78ea1a20-0784-442b-93c0-eb9e2469420e",
+	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
+	 	      "context_name": "78ea1a20-0784-442b-93c0-eb9e2469420e",
        },
        {
 	 	      // condition_start object
@@ -938,7 +961,7 @@ delete_context: ControlMessageServiceMethod.ValueType  # 17
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -946,13 +969,16 @@ delete_context: ControlMessageServiceMethod.ValueType  # 17
 """
 detect_intent: ControlMessageServiceMethod.ValueType  # 18
 """NLU: execute a detect intent request based on the provided information in the current session
+
+

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:

+

 {
-   "service": "ondewo_nlu",
-   "method": "detect_intent",
-   "parameters": [
+   "service": "ondewo_nlu",
+   "method": "detect_intent",
+   "parameters": [
        {
-	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
-	 	      "text": "Are you an artificial intelligence?",
+	 	      "session_id": "97ea1a20-0784-442b-93c0-eb9e2469420e",
+	 	      "text": "Are you an artificial intelligence?",
        },
        {
 	 	      // condition_start object
@@ -960,7 +986,7 @@ detect_intent: ControlMessageServiceMethod.ValueType  # 18
        {
 	 	      // condition_end object (OPTIONAL) - for permanent change
            // no condition_end needs to be supplied i.e.
-		      // this parameter is missing or empty “{}”
+		      // this parameter is missing or empty "{}"
        },
    ]
 }
@@ -977,50 +1003,32 @@ class _ConditionTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._
     UNKNOWTYPE: _ConditionType.ValueType  # 0
     """Unknown type"""
     immediate: _ConditionType.ValueType  # 1
-    """Immediate execution of the control message
-    Example value need be given as a string in the format: 
value="5"
- """ + """Immediate execution of the control message. Example value need be given as a string in the format:
value="5"
""" duration: _ConditionType.ValueType # 2 - """Duration in number of seconds after a control message should be executed, - Example value need be given as a string in the format:
value="10"
- """ + """Duration in number of seconds after a control message should be executed. Example value need be given as a string in the format:
value="10"
""" datetime: _ConditionType.ValueType # 3 - """Date and time when a control message should be executed, - Example value need be given as a string in the format:
value="2021-12-23T13:45:00.000Z"
- """ + """Date and time when a control message should be executed. Example value need be given as a string in the format:
value="2021-12-23T13:45:00.000Z"
""" interactions: _ConditionType.ValueType # 4 - """Number of interactions of the user with an ONDEWO AI agent after a control message should be executed - Example value need be given as a string in the format:
value="4"
- """ + """Number of interactions of the user with an ONDEWO AI agent after a control message should be executed. Example value need be given as a string in the format:
value="4"
""" class ConditionType(_ConditionType, metaclass=_ConditionTypeEnumTypeWrapper): - """Type of condition that need to be satisfied to execute a control message""" + """Type of condition that need to be satisfied to execute a control message.""" UNKNOWTYPE: ConditionType.ValueType # 0 """Unknown type""" immediate: ConditionType.ValueType # 1 -"""Immediate execution of the control message -Example value need be given as a string in the format:
value="5"
-""" +"""Immediate execution of the control message. Example value need be given as a string in the format:
value="5"
""" duration: ConditionType.ValueType # 2 -"""Duration in number of seconds after a control message should be executed, -Example value need be given as a string in the format:
value="10"
-""" +"""Duration in number of seconds after a control message should be executed. Example value need be given as a string in the format:
value="10"
""" datetime: ConditionType.ValueType # 3 -"""Date and time when a control message should be executed, -Example value need be given as a string in the format:
value="2021-12-23T13:45:00.000Z"
-""" +"""Date and time when a control message should be executed. Example value need be given as a string in the format:
value="2021-12-23T13:45:00.000Z"
""" interactions: ConditionType.ValueType # 4 -"""Number of interactions of the user with an ONDEWO AI agent after a control message should be executed -Example value need be given as a string in the format:
value="4"
-""" +"""Number of interactions of the user with an ONDEWO AI agent after a control message should be executed. Example value need be given as a string in the format:
value="4"
""" global___ConditionType = ConditionType @typing.final class S2sPipeline(google.protobuf.message.Message): - """The top-level message sent by client to `CreateS2sPipeline` and `UpdateS2sPipeline` endpoints and received from - `GetS2sPipeline` endpoint. - """ + """The top-level message sent by client to CreateS2sPipeline and UpdateS2sPipeline endpoints and received from GetS2sPipeline endpoint.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1054,7 +1062,7 @@ global___S2sPipeline = S2sPipeline @typing.final class S2sPipelineId(google.protobuf.message.Message): - """The top-level message sent by client to `GetS2sPipeline` and `DeleteS2sPipeline` endpoints.""" + """The top-level message sent by client to GetS2sPipeline and DeleteS2sPipeline endpoints.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1072,7 +1080,7 @@ global___S2sPipelineId = S2sPipelineId @typing.final class ListS2sPipelinesRequest(google.protobuf.message.Message): - """The top-level message sent by client to `ListS2sPipelines` endpoint. Currently without arguments. + """The top-level message sent by client to ListS2sPipelines endpoint. Currently without arguments. TODO: add filtering options """ @@ -1086,7 +1094,7 @@ global___ListS2sPipelinesRequest = ListS2sPipelinesRequest @typing.final class ListS2sPipelinesResponse(google.protobuf.message.Message): - """The top-level message received from `ListS2sPipelines` endpoint.""" + """The top-level message received from ListS2sPipelines endpoint.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1106,15 +1114,12 @@ global___ListS2sPipelinesResponse = ListS2sPipelinesResponse @typing.final class S2sStreamRequest(google.protobuf.message.Message): - """The top-level message sent by the client to the - `S2sStream` method. - + """The top-level message sent by the client to the S2sStream method. Multiple request messages should be sent in order: - - 1. The first message must contain `pipeline_id` and can contain `session_id` or `initial_intent_display_name`. - The message must not contain `audio` nor `end_of_stream`. - - 2. All subsequent messages must contain `audio`. If `end_of_stream` is `true`, the stream is closed. +
    +
  • The first message must contain pipeline_id and can contain session_id or initial_intent_display_name. The message must not contain audio nor end_of_stream.
  • +
  • All subsequent messages must contain audio. If end_of_stream is true, the stream is closed.
  • +
""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1127,17 +1132,11 @@ class S2sStreamRequest(google.protobuf.message.Message): pipeline_id: builtins.str """Optional. The CSI pipeline ID specified in the initial request.""" session_id: builtins.str - """Optional. The session or call ID specified in the initial request. It’s up to the API caller to choose - an appropriate string. It can be a random number or some type of user identifier (preferably hashed). - """ + """

Optional. The session or call ID specified in the initial request. It's up to the API caller to choose an appropriate string. It can be a random number or some type of user identifier (preferably hashed).

""" audio: builtins.bytes - """Optional. The input audio content to be recognized. - - If `true`, the recognizer will not return - any further hypotheses about this piece of the audio. May only be populated - for `event_type` = `RECOGNITION_EVENT_TRANSCRIPT`. - """ + """Optional. The input audio content to be recognized.""" end_of_stream: builtins.bool + """If true, the recognizer will not return any further hypotheses about this piece of the audio. May only be populated for event_type = RECOGNITION_EVENT_TRANSCRIPT.""" initial_intent_display_name: builtins.str """Optional. Intent display name to trigger in NLU system in the beginning of the conversation.""" def __init__( @@ -1155,19 +1154,18 @@ global___S2sStreamRequest = S2sStreamRequest @typing.final class S2sStreamResponse(google.protobuf.message.Message): - """The top-level message returned from the - `S2sStream` method. - - A response message is returned for each utterance of the input stream. It contains the full response from NLU system - in `detect_intent_response` or the full T2S response in `synthesize_response`. + """The top-level message returned from the S2sStream method. + A response message is returned for each utterance of the input stream. It contains the full response from NLU system in detect_intent_response or the full T2S response in synthesize_response. Multiple response messages can be returned in order: - - 1. The first response message for an input utterance contains response from NLU system `detect_intent_response` - with detected intent and N fulfillment messages (N >= 0). - - 2. The next N response messages contain for each fulfillment message one of the following: - a. T2S response `synthesize_response` with synthesized audio - b. SIP trigger message `sip_trigger` with SIP trigger extracted from the fulfillment message +
    +
  • The first response message for an input utterance contains response from NLU system detect_intent_response with detected intent and N fulfillment messages (N >= 0).
  • +
  • The next N response messages contain for each fulfillment message one of the following: +
      +
    • T2S response synthesize_response with synthesized audio
    • +
    • SIP trigger message sip_trigger with SIP trigger extracted from the fulfillment message
    • +
    +
  • +
""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1175,6 +1173,18 @@ class S2sStreamResponse(google.protobuf.message.Message): DETECT_INTENT_RESPONSE_FIELD_NUMBER: builtins.int SYNTHESIZE_RESPONSE_FIELD_NUMBER: builtins.int SIP_TRIGGER_FIELD_NUMBER: builtins.int + UTTERANCE_ID_FIELD_NUMBER: builtins.int + CHUNK_INDEX_FIELD_NUMBER: builtins.int + LAST_CHUNK_FIELD_NUMBER: builtins.int + TURN_EPOCH_FIELD_NUMBER: builtins.int + utterance_id: builtins.str + """Optional. Identifier of the utterance this response belongs to. All chunks of one synthesized utterance share the same utterance_id""" + chunk_index: builtins.int + """Optional. Zero-based index of this chunk within the utterance identified by utterance_id""" + last_chunk: builtins.bool + """Optional. If true, this is the last chunk of the utterance identified by utterance_id""" + turn_epoch: builtins.int + """Optional. Monotonic turn epoch of the conversation turn that produced this response. Used by consumers to fence stale audio of an interrupted turn""" @property def detect_intent_response(self) -> ondewo.nlu.session_pb2.DetectIntentResponse: """full NLU detect intent response""" @@ -1193,16 +1203,20 @@ class S2sStreamResponse(google.protobuf.message.Message): detect_intent_response: ondewo.nlu.session_pb2.DetectIntentResponse | None = ..., synthesize_response: ondewo.t2s.text_to_speech_pb2.SynthesizeResponse | None = ..., sip_trigger: global___SipTrigger | None = ..., + utterance_id: builtins.str = ..., + chunk_index: builtins.int = ..., + last_chunk: builtins.bool = ..., + turn_epoch: builtins.int = ..., ) -> None: ... def HasField(self, field_name: typing.Literal["detect_intent_response", b"detect_intent_response", "response", b"response", "sip_trigger", b"sip_trigger", "synthesize_response", b"synthesize_response"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["detect_intent_response", b"detect_intent_response", "response", b"response", "sip_trigger", b"sip_trigger", "synthesize_response", b"synthesize_response"]) -> None: ... + def ClearField(self, field_name: typing.Literal["chunk_index", b"chunk_index", "detect_intent_response", b"detect_intent_response", "last_chunk", b"last_chunk", "response", b"response", "sip_trigger", b"sip_trigger", "synthesize_response", b"synthesize_response", "turn_epoch", b"turn_epoch", "utterance_id", b"utterance_id"]) -> None: ... def WhichOneof(self, oneof_group: typing.Literal["response", b"response"]) -> typing.Literal["detect_intent_response", "synthesize_response", "sip_trigger"] | None: ... global___S2sStreamResponse = S2sStreamResponse @typing.final class SipTrigger(google.protobuf.message.Message): - """SIP trigger message""" + """SIP trigger message.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1230,7 +1244,7 @@ class SipTrigger(google.protobuf.message.Message): """play audio""" class SipTriggerType(_SipTriggerType, metaclass=_SipTriggerTypeEnumTypeWrapper): - """type of the SIP trigger""" + """Type of SIP trigger that can be executed during a conversation.""" UNSPECIFIED: SipTrigger.SipTriggerType.ValueType # 0 """should never be used""" @@ -1252,6 +1266,7 @@ class SipTrigger(google.protobuf.message.Message): TYPE_FIELD_NUMBER: builtins.int CONTENT_FIELD_NUMBER: builtins.int type: global___SipTrigger.SipTriggerType.ValueType + """Type of the SIP trigger.""" @property def content(self) -> google.protobuf.struct_pb2.Struct: """extra parameters for the trigger""" @@ -1269,7 +1284,7 @@ global___SipTrigger = SipTrigger @typing.final class CheckUpstreamHealthResponse(google.protobuf.message.Message): - """Health checks""" + """Health checks.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1302,7 +1317,7 @@ global___CheckUpstreamHealthResponse = CheckUpstreamHealthResponse @typing.final class ControlStreamRequest(google.protobuf.message.Message): - """Control stream message""" + """Control stream message.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1314,25 +1329,29 @@ global___ControlStreamRequest = ControlStreamRequest @typing.final class ControlStreamResponse(google.protobuf.message.Message): - """Control stream response message""" + """Control stream response message.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor CONTROL_STATUS_FIELD_NUMBER: builtins.int + EPOCH_FIELD_NUMBER: builtins.int control_status: global___ControlStatus.ValueType """Control status""" + epoch: builtins.int + """Monotonic barge-in epoch/sequence number so control status transitions are correlatable with the S2sStreamResponse turn_epoch and a second barge-in during a resumed remainder can never be coalesced away""" def __init__( self, *, control_status: global___ControlStatus.ValueType = ..., + epoch: builtins.int = ..., ) -> None: ... - def ClearField(self, field_name: typing.Literal["control_status", b"control_status"]) -> None: ... + def ClearField(self, field_name: typing.Literal["control_status", b"control_status", "epoch", b"epoch"]) -> None: ... global___ControlStreamResponse = ControlStreamResponse @typing.final class SetControlStatusRequest(google.protobuf.message.Message): - """Request to set control status""" + """Request to set control status.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1350,7 +1369,7 @@ global___SetControlStatusRequest = SetControlStatusRequest @typing.final class SetControlStatusResponse(google.protobuf.message.Message): - """Response of setting the control status with the old and new status objects""" + """Response of setting the control status with the old and new status objects.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1372,38 +1391,34 @@ global___SetControlStatusResponse = SetControlStatusResponse @typing.final class Condition(google.protobuf.message.Message): - """A condition message with its type and value - + """A condition message with its type and value. A Condition can be of various types. -

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:

+ Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service: + Immediate execution:

-    immediate execution
     {
-       "type": "immediate"
+       "type": "immediate"
     }
     
- - number of interactions of the user with the AI agent + Number of interactions of the user with the AI agent:

     {
-       "type": "interactions",
-       "value": “10”
+       "type": "interactions",
+       "value": "10"
     }
     
- - number of seconds + Number of seconds:

     {
-       "type": "duration",
-       "value": “3600”
+       "type": "duration",
+       "value": "3600"
     }
     
- - at a specific date and time + At a specific date and time:

     {
-       "type": "datetime",
-       "value": "2021-12-23T13:45:00.000Z"
+       "type": "datetime",
+       "value": "2021-12-23T13:45:00.000Z"
     }
     
""" @@ -1415,9 +1430,7 @@ class Condition(google.protobuf.message.Message): type: global___ConditionType.ValueType """Condition type""" value: builtins.str - """Value of the condition. - Examples of conditions values based on the condition type are given in the
ConditionType
documentation - """ + """Value of the condition. Examples of conditions values based on the condition type are given in the ConditionType documentation.""" def __init__( self, *, @@ -1430,7 +1443,7 @@ global___Condition = Condition @typing.final class ControlMessageServiceParameters(google.protobuf.message.Message): - """Parameters of the control message passed to the service specified in the control message""" + """Parameters of the control message passed to the service specified in the control message.""" DESCRIPTOR: google.protobuf.descriptor.Descriptor @@ -1498,19 +1511,18 @@ global___ControlMessageServiceParameters = ControlMessageServiceParameters @typing.final class ControlMessage(google.protobuf.message.Message): - """A control message - -

Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:

+ """A control message. + Example of a JSON how to invoke a control message via ONDEWO RABBITMQ service:

     {
-      "service": "", 			// e.g. ondewo_s2t
-      "method": "", 	// e.g. update_config
-      "parameters": [
+      "service": "<SERVICE_NAME>", 			// e.g. ondewo_s2t
+      "method": "<SERVICE_CONTROL_METHOD>", 	// e.g. update_config
+      "parameters": [
           // primitive data types and JSON objects are possible
           1,
           1.0,
           -2.0,
-          “string”,
+          "string",
           true,
       	 {
               // parameter JSON object
@@ -1532,9 +1544,7 @@ class ControlMessage(google.protobuf.message.Message):
     METHOD_FIELD_NUMBER: builtins.int
     PARAMETERS_FIELD_NUMBER: builtins.int
     service: global___ControlMessageServiceName.ValueType
-    """Service to control.
-    Valid service names are:'ondewo_nlu', 'ondewo_t2s', 'ondewo_s2t', 'ondewo_sip' and 'ondewo_csi'
-    """
+    """Service to control. Valid service names are: ondewo_nlu, ondewo_t2s, ondewo_s2t, ondewo_sip and ondewo_csi."""
     method: global___ControlMessageServiceMethod.ValueType
     """Method to invoke on the service"""
     @property
diff --git a/ondewo/csi/conversation_pb2_grpc.py b/ondewo/csi/conversation_pb2_grpc.py
index 24f9dc6..f15254c 100644
--- a/ondewo/csi/conversation_pb2_grpc.py
+++ b/ondewo/csi/conversation_pb2_grpc.py
@@ -27,7 +27,7 @@
 
 
 class ConversationsStub(object):
-    """endpoints of csi service
+    """

Endpoints of CSI service.

""" def __init__(self, channel): @@ -84,11 +84,11 @@ def __init__(self, channel): class ConversationsServicer(object): - """endpoints of csi service + """

Endpoints of CSI service.

""" def CreateS2sPipeline(self, request, context): - """Create the S2S pipeline specified in the request message. The pipeline with the specified ID must not exist. + """

Create the S2S pipeline specified in the request message. The pipeline with the specified ID must not exist.

Examples:

@@ -108,7 +108,7 @@ def CreateS2sPipeline(self, request, context): raise NotImplementedError('Method not implemented!') def GetS2sPipeline(self, request, context): - """Retrieve the S2S pipeline with the ID specified in the request message. + """

Retrieve the S2S pipeline with the ID specified in the request message.

Examples:

@@ -129,7 +129,7 @@ def GetS2sPipeline(self, request, context): raise NotImplementedError('Method not implemented!') def UpdateS2sPipeline(self, request, context): - """Update the S2S pipeline specified in the request message. The pipeline must exist. + """

Update the S2S pipeline specified in the request message. The pipeline must exist.

Examples:

@@ -149,7 +149,7 @@ def UpdateS2sPipeline(self, request, context): raise NotImplementedError('Method not implemented!') def DeleteS2sPipeline(self, request, context): - """Delete the S2S pipeline with the ID specified in the request message. The pipeline must exist. + """

Delete the S2S pipeline with the ID specified in the request message. The pipeline must exist.

Examples:

@@ -163,7 +163,7 @@ def DeleteS2sPipeline(self, request, context): raise NotImplementedError('Method not implemented!') def ListS2sPipelines(self, request, context): - """List all S2S pipelines of the server. + """

List all S2S pipelines of the server.

Examples:

@@ -187,15 +187,14 @@ def ListS2sPipelines(self, request, context): raise NotImplementedError('Method not implemented!') def S2sStream(self, request_iterator, context): - """Processes a natural language query in audio format in a streaming fashion - and returns structured, actionable data as a result. + """

Processes a natural language query in audio format in a streaming fashion and returns structured, actionable data as a result.

""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def CheckUpstreamHealth(self, request, context): - """Check the health of S2T, NLU and T2S servers + """

Check the health of S2T, NLU and T2S servers.

Examples:

@@ -227,14 +226,14 @@ def CheckUpstreamHealth(self, request, context): raise NotImplementedError('Method not implemented!') def GetControlStream(self, request, context): - """Get the control stream to control sip, t2s, s2t etc. during a conversation + """

Get the control stream to control sip, t2s, s2t etc. during a conversation.

""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') def SetControlStatus(self, request, context): - """Send a message on the control stream to control sip, t2s, s2t etc. during a conversation + """

Send a message on the control stream to control sip, t2s, s2t etc. during a conversation.

""" context.set_code(grpc.StatusCode.UNIMPLEMENTED) context.set_details('Method not implemented!') @@ -297,7 +296,7 @@ def add_ConversationsServicer_to_server(servicer, server): # This class is part of an EXPERIMENTAL API. class Conversations(object): - """endpoints of csi service + """

Endpoints of CSI service.

""" @staticmethod From c551e749c544dabf6f736a977b85681f915b2625 Mon Sep 17 00:00:00 2001 From: Andreas Rath Date: Mon, 13 Jul 2026 09:10:21 +0200 Subject: [PATCH 2/8] [OND211-2418] chore(deps): pin ondewo-nlu-client 6.14.0 and bump csi-api to nlu-api 6.14.0 --- Makefile | 2 +- examples/streamer.py | 1 - ondewo-csi-api | 2 +- requirements-dev.txt | 1 + requirements.txt | 2 +- tests/unit/client/test_keycloak.py | 4 ++-- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 478f0c1..63a5023 100644 --- a/Makefile +++ b/Makefile @@ -158,7 +158,7 @@ create_async_services: ## Create async services for all synchronous services cp "$$file" "$$dir/async_$$filename"; \ done; \ for file in "$$dir"/async_*.py; do \ - perl -i -pe 'unless(/def stub/){ s/^([[:space:]]*)def /$$1async def /g; s/self\.stub/await self.stub/g; s/\(BaseServicesInterface\)/(AsyncBaseServicesInterface)/g; s/base_services_interface/async_base_services_interface/g; s/import BaseServicesInterface/import AsyncBaseServicesInterface/g; }' \ + perl -i -pe 'unless(/def stub/){ s/^([[:space:]]*)def /$$1async def /g; s/self\.stub/await self.stub/g; s/\(BaseServicesInterface\)/(AsyncBaseServicesInterface)/g; s/base_services_interface/async_base_services_interface/g; s/import BaseServicesInterface/import AsyncBaseServicesInterface/g; s/core\.services_interface/core.async_services_interface/g; s/import ServicesInterface/import AsyncServicesInterface/g; s/\((?=0.2.12 pysoundio>=1.1.0 python-dotenv setuptools +types-requests typing_extensions diff --git a/requirements.txt b/requirements.txt index 9cd88a7..121f674 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ grpcio-tools loguru numpy ondewo-client-utils>=3.2.0 -ondewo-nlu-client +ondewo-nlu-client==6.14.0 ondewo-s2t-client ondewo-t2s-client requests diff --git a/tests/unit/client/test_keycloak.py b/tests/unit/client/test_keycloak.py index 387a8fd..5f000d9 100644 --- a/tests/unit/client/test_keycloak.py +++ b/tests/unit/client/test_keycloak.py @@ -153,7 +153,7 @@ def _token_body(access_token: str, refresh_token: str, expires_in: int) -> Dict[ def _build_provider( transport: FakeTransport, - token_expiration_in_s: int | None = None, + token_expiration_in_s: Optional[int] = None, ) -> KeycloakTokenProvider: """Construct a `KeycloakTokenProvider` wired to the fake transport and shared test fixtures. @@ -1044,7 +1044,7 @@ def _build_background_provider( transport: FakeTransport, clock: Dict[str, float], stop_event: ScriptedEvent, - token_expiration_in_s: int | None = None, + token_expiration_in_s: Optional[int] = None, ) -> KeycloakTokenProvider: """Construct a provider wired to an injected clock + scripted event, background thread off. From 547611c15ef69fcf048d6b1b256ebb805c311d20 Mon Sep 17 00:00:00 2001 From: Andreas Rath Date: Thu, 6 Aug 2026 11:34:53 +0200 Subject: [PATCH 3/8] [OND211-2418] chore(protos): regenerate against ondewo-nlu-api 7.0.0 --- ondewo-csi-api | 2 +- requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ondewo-csi-api b/ondewo-csi-api index 209a64f..8ad32bd 160000 --- a/ondewo-csi-api +++ b/ondewo-csi-api @@ -1 +1 @@ -Subproject commit 209a64ff464a92a4013277d39bdb7b5a0f1de751 +Subproject commit 8ad32bd61a7d74a49b841b22856a829a574399d2 diff --git a/requirements.txt b/requirements.txt index 121f674..ce441d8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ grpcio-tools loguru numpy ondewo-client-utils>=3.2.0 -ondewo-nlu-client==6.14.0 +ondewo-nlu-client==7.0.0 ondewo-s2t-client ondewo-t2s-client requests From e066cf0416f0f2e6dc49c9139c8a0194acf51949 Mon Sep 17 00:00:00 2001 From: Andreas Rath Date: Thu, 6 Aug 2026 11:34:58 +0200 Subject: [PATCH 4/8] [OND211-2418] docs(claude): add Jenkins multibranch-scan guidance --- CLAUDE.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index f3cce9e..c716c8a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -148,3 +148,14 @@ Raises: - Use context managers for files, sockets, and thread pools. - Prefer region comments for grouping methods in files that already use them. - End edited Markdown and YAML files with a trailing newline. + +## Jenkins — never trigger a multibranch scan or branch indexing + +**NEVER trigger a Jenkins multibranch scan or branch indexing.** Do not call a multibranch/folder job's +`build`, `scan`, or reindex endpoints, click "Scan Repository Now" / "Build Now" on a folder, run +`p4 scan`, or use any API/CLI that reindexes branches or scans the repository. A scan/reindex runs across +**every** branch, consumes CI resources, and can kick off unintended builds and deploys. + +If a branch is not building — it was not discovered, or its job is marked `buildable: false` / orphaned — +**report it and stop**. Let the user or a Jenkins admin adjust branch-discovery/config or rename the branch +to the convention. Never force a build by scanning or reindexing. From 0e471a77930c188f46dd3c453f9856b5b7ad3db2 Mon Sep 17 00:00:00 2001 From: Andreas Rath Date: Thu, 6 Aug 2026 12:41:14 +0200 Subject: [PATCH 5/8] [OND211-2418] chore(deps): bump ondewo-nlu-client to 7.0.1 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index ce441d8..81ace86 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ grpcio-tools loguru numpy ondewo-client-utils>=3.2.0 -ondewo-nlu-client==7.0.0 +ondewo-nlu-client==7.0.1 ondewo-s2t-client ondewo-t2s-client requests From 23b568fa16d7139e37b2bb6738a6b6d52894b89b Mon Sep 17 00:00:00 2001 From: Andreas Rath Date: Thu, 6 Aug 2026 13:39:10 +0200 Subject: [PATCH 6/8] [OND211-2418] feat(proto): regenerate client for the CALL_ENDED control status --- ondewo-csi-api | 2 +- ondewo/csi/conversation_pb2.py | 20 ++++++++++---------- ondewo/csi/conversation_pb2.pyi | 4 ++++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/ondewo-csi-api b/ondewo-csi-api index 8ad32bd..b4f8319 160000 --- a/ondewo-csi-api +++ b/ondewo-csi-api @@ -1 +1 @@ -Subproject commit 8ad32bd61a7d74a49b841b22856a829a574399d2 +Subproject commit b4f8319b45350bd29f015e19b2204644e25b268a diff --git a/ondewo/csi/conversation_pb2.py b/ondewo/csi/conversation_pb2.py index 6b2eb18..7aae76d 100644 --- a/ondewo/csi/conversation_pb2.py +++ b/ondewo/csi/conversation_pb2.py @@ -33,7 +33,7 @@ from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dondewo/csi/conversation.proto\x12\nondewo.csi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x17google/rpc/status.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x18ondewo/nlu/session.proto\x1a\x1fondewo/t2s/text-to-speech.proto\x1a\x1fondewo/s2t/speech-to-text.proto\x1a\x18ondewo/nlu/context.proto\x1a\x19google/protobuf/any.proto\"~\n\x0bS2sPipeline\x12\n\n\x02id\x18\x01 \x01(\t\x12\x17\n\x0fs2t_pipeline_id\x18\x02 \x01(\t\x12\x16\n\x0enlu_project_id\x18\x03 \x01(\t\x12\x19\n\x11nlu_language_code\x18\x04 \x01(\t\x12\x17\n\x0ft2s_pipeline_id\x18\x05 \x01(\t\"\x1b\n\rS2sPipelineId\x12\n\n\x02id\x18\x01 \x01(\t\"\x19\n\x17ListS2sPipelinesRequest\"F\n\x18ListS2sPipelinesResponse\x12*\n\tpipelines\x18\x01 \x03(\x0b\x32\x17.ondewo.csi.S2sPipeline\"\x86\x01\n\x10S2sStreamRequest\x12\x13\n\x0bpipeline_id\x18\x01 \x01(\t\x12\x12\n\nsession_id\x18\x02 \x01(\t\x12\r\n\x05\x61udio\x18\x03 \x01(\x0c\x12\x15\n\rend_of_stream\x18\x04 \x01(\x08\x12#\n\x1binitial_intent_display_name\x18\x05 \x01(\t\"\xa4\x02\n\x11S2sStreamResponse\x12\x42\n\x16\x64\x65tect_intent_response\x18\x01 \x01(\x0b\x32 .ondewo.nlu.DetectIntentResponseH\x00\x12=\n\x13synthesize_response\x18\x02 \x01(\x0b\x32\x1e.ondewo.t2s.SynthesizeResponseH\x00\x12-\n\x0bsip_trigger\x18\x03 \x01(\x0b\x32\x16.ondewo.csi.SipTriggerH\x00\x12\x14\n\x0cutterance_id\x18\x04 \x01(\t\x12\x13\n\x0b\x63hunk_index\x18\x05 \x01(\x05\x12\x12\n\nlast_chunk\x18\x06 \x01(\x08\x12\x12\n\nturn_epoch\x18\x07 \x01(\x04\x42\n\n\x08response\"\xf2\x01\n\nSipTrigger\x12\x33\n\x04type\x18\x01 \x01(\x0e\x32%.ondewo.csi.SipTrigger.SipTriggerType\x12(\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\x84\x01\n\x0eSipTriggerType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06HANGUP\x10\x01\x12\x12\n\x0eHUMAN_HANDOVER\x10\x02\x12\x0c\n\x08SEND_NOW\x10\x03\x12\t\n\x05PAUSE\x10\x04\x12\x0c\n\x08TRANSFER\x10\x05\x12\n\n\x06INVITE\x10\x06\x12\x0e\n\nPLAY_AUDIO\x10\x07\"\x95\x01\n\x1b\x43heckUpstreamHealthResponse\x12&\n\ns2t_status\x18\x01 \x01(\x0b\x32\x12.google.rpc.Status\x12&\n\nnlu_status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\x12&\n\nt2s_status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\"\x16\n\x14\x43ontrolStreamRequest\"Y\n\x15\x43ontrolStreamResponse\x12\x31\n\x0e\x63ontrol_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\x12\r\n\x05\x65poch\x18\x02 \x01(\x04\"L\n\x17SetControlStatusRequest\x12\x31\n\x0e\x63ontrol_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\"\x88\x01\n\x18SetControlStatusResponse\x12\x35\n\x12old_control_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\x12\x35\n\x12new_control_status\x18\x02 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\"C\n\tCondition\x12\'\n\x04type\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ConditionType\x12\r\n\x05value\x18\x02 \x01(\t\"\xfb\x02\n\x1f\x43ontrolMessageServiceParameters\x12/\n\nt2s_config\x18\x01 \x01(\x0b\x32\x19.ondewo.t2s.RequestConfigH\x00\x12\x39\n\ns2t_config\x18\x02 \x01(\x0b\x32#.ondewo.s2t.TranscribeRequestConfigH\x00\x12\x13\n\x0btransfer_id\x18\x03 \x01(\t\x12\x11\n\twav_files\x18\x04 \x03(\x0c\x12\x0c\n\x04text\x18\x05 \x01(\t\x12$\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x13.ondewo.nlu.Context\x12\x12\n\nsession_id\x18\x07 \x01(\t\x12\x14\n\x0c\x63ontext_name\x18\x08 \x01(\t\x12.\n\x0f\x63ondition_start\x18\t \x01(\x0b\x32\x15.ondewo.csi.Condition\x12,\n\rcondition_end\x18\n \x01(\x0b\x32\x15.ondewo.csi.ConditionB\x08\n\x06\x63onfig\"\xc2\x01\n\x0e\x43ontrolMessage\x12\x36\n\x07service\x18\x01 \x01(\x0e\x32%.ondewo.csi.ControlMessageServiceName\x12\x37\n\x06method\x18\x02 \x01(\x0e\x32\'.ondewo.csi.ControlMessageServiceMethod\x12?\n\nparameters\x18\x03 \x01(\x0b\x32+.ondewo.csi.ControlMessageServiceParameters*\xa7\x01\n\rControlStatus\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0e\x45MERGENCY_STOP\x10\x01\x12\x17\n\x13VAD_START_OF_SPEECH\x10\x02\x12\x0c\n\x08\x42\x41RGE_IN\x10\x03\x12\x13\n\x0fRESUME_PLAYBACK\x10\x04\x12\x15\n\x11\x44ISCARD_REMAINDER\x10\x05\x12\x14\n\x10PLAYBACK_RESUMED\x10\x06\x12\x11\n\rPLAYBACK_DONE\x10\x07*\xa0\x01\n\x19\x43ontrolMessageServiceName\x12\x0f\n\x0bUNKNOWNNAME\x10\x00\x12\x0e\n\nondewo_s2t\x10\x01\x12\x0e\n\nondewo_t2s\x10\x02\x12\x0e\n\nondewo_nlu\x10\x03\x12\x0e\n\nondewo_sip\x10\x04\x12\x0f\n\x0bondewo_vtsi\x10\x05\x12\x0e\n\nondewo_csi\x10\x06\x12\x11\n\rondewo_survey\x10\x07*\x85\x03\n\x1b\x43ontrolMessageServiceMethod\x12\x11\n\rUNKNOWNMETHOD\x10\x00\x12\x11\n\rupdate_config\x10\x01\x12\x0f\n\x0bundo_config\x10\x02\x12\x10\n\x0creset_config\x10\x03\x12\x0c\n\x08\x65nd_call\x10\x04\x12\x11\n\rtransfer_call\x10\x05\x12\x12\n\x0eplay_wav_files\x10\x06\x12\r\n\tplay_text\x10\x07\x12\x08\n\x04mute\x10\x08\x12\x0b\n\x07un_mute\x10\t\x12\x1d\n\x19stop_all_control_messages\x10\n\x12\x0f\n\x0btrain_agent\x10\x0b\x12\x16\n\x12\x63\x61ncel_train_agent\x10\x0c\x12\x12\n\x0e\x64\x65lete_session\x10\r\x12\x17\n\x13\x64\x65lete_all_contexts\x10\x0e\x12\x12\n\x0e\x63reate_context\x10\x0f\x12\x12\n\x0eupdate_context\x10\x10\x12\x12\n\x0e\x64\x65lete_context\x10\x11\x12\x11\n\rdetect_intent\x10\x12*\\\n\rConditionType\x12\x0e\n\nUNKNOWTYPE\x10\x00\x12\r\n\timmediate\x10\x01\x12\x0c\n\x08\x64uration\x10\x02\x12\x0c\n\x08\x64\x61tetime\x10\x03\x12\x10\n\x0cinteractions\x10\x04\x32\xfa\x05\n\rConversations\x12\x46\n\x11\x43reateS2sPipeline\x12\x17.ondewo.csi.S2sPipeline\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x0eGetS2sPipeline\x12\x19.ondewo.csi.S2sPipelineId\x1a\x17.ondewo.csi.S2sPipeline\"\x00\x12\x46\n\x11UpdateS2sPipeline\x12\x17.ondewo.csi.S2sPipeline\x1a\x16.google.protobuf.Empty\"\x00\x12H\n\x11\x44\x65leteS2sPipeline\x12\x19.ondewo.csi.S2sPipelineId\x1a\x16.google.protobuf.Empty\"\x00\x12_\n\x10ListS2sPipelines\x12#.ondewo.csi.ListS2sPipelinesRequest\x1a$.ondewo.csi.ListS2sPipelinesResponse\"\x00\x12N\n\tS2sStream\x12\x1c.ondewo.csi.S2sStreamRequest\x1a\x1d.ondewo.csi.S2sStreamResponse\"\x00(\x01\x30\x01\x12X\n\x13\x43heckUpstreamHealth\x12\x16.google.protobuf.Empty\x1a\'.ondewo.csi.CheckUpstreamHealthResponse\"\x00\x12[\n\x10GetControlStream\x12 .ondewo.csi.ControlStreamRequest\x1a!.ondewo.csi.ControlStreamResponse\"\x00\x30\x01\x12_\n\x10SetControlStatus\x12#.ondewo.csi.SetControlStatusRequest\x1a$.ondewo.csi.SetControlStatusResponse\"\x00\x62\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dondewo/csi/conversation.proto\x12\nondewo.csi\x1a\x1bgoogle/protobuf/empty.proto\x1a\x17google/rpc/status.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1cgoogle/protobuf/struct.proto\x1a\x18ondewo/nlu/session.proto\x1a\x1fondewo/t2s/text-to-speech.proto\x1a\x1fondewo/s2t/speech-to-text.proto\x1a\x18ondewo/nlu/context.proto\x1a\x19google/protobuf/any.proto\"~\n\x0bS2sPipeline\x12\n\n\x02id\x18\x01 \x01(\t\x12\x17\n\x0fs2t_pipeline_id\x18\x02 \x01(\t\x12\x16\n\x0enlu_project_id\x18\x03 \x01(\t\x12\x19\n\x11nlu_language_code\x18\x04 \x01(\t\x12\x17\n\x0ft2s_pipeline_id\x18\x05 \x01(\t\"\x1b\n\rS2sPipelineId\x12\n\n\x02id\x18\x01 \x01(\t\"\x19\n\x17ListS2sPipelinesRequest\"F\n\x18ListS2sPipelinesResponse\x12*\n\tpipelines\x18\x01 \x03(\x0b\x32\x17.ondewo.csi.S2sPipeline\"\x86\x01\n\x10S2sStreamRequest\x12\x13\n\x0bpipeline_id\x18\x01 \x01(\t\x12\x12\n\nsession_id\x18\x02 \x01(\t\x12\r\n\x05\x61udio\x18\x03 \x01(\x0c\x12\x15\n\rend_of_stream\x18\x04 \x01(\x08\x12#\n\x1binitial_intent_display_name\x18\x05 \x01(\t\"\xa4\x02\n\x11S2sStreamResponse\x12\x42\n\x16\x64\x65tect_intent_response\x18\x01 \x01(\x0b\x32 .ondewo.nlu.DetectIntentResponseH\x00\x12=\n\x13synthesize_response\x18\x02 \x01(\x0b\x32\x1e.ondewo.t2s.SynthesizeResponseH\x00\x12-\n\x0bsip_trigger\x18\x03 \x01(\x0b\x32\x16.ondewo.csi.SipTriggerH\x00\x12\x14\n\x0cutterance_id\x18\x04 \x01(\t\x12\x13\n\x0b\x63hunk_index\x18\x05 \x01(\x05\x12\x12\n\nlast_chunk\x18\x06 \x01(\x08\x12\x12\n\nturn_epoch\x18\x07 \x01(\x04\x42\n\n\x08response\"\xf2\x01\n\nSipTrigger\x12\x33\n\x04type\x18\x01 \x01(\x0e\x32%.ondewo.csi.SipTrigger.SipTriggerType\x12(\n\x07\x63ontent\x18\x02 \x01(\x0b\x32\x17.google.protobuf.Struct\"\x84\x01\n\x0eSipTriggerType\x12\x0f\n\x0bUNSPECIFIED\x10\x00\x12\n\n\x06HANGUP\x10\x01\x12\x12\n\x0eHUMAN_HANDOVER\x10\x02\x12\x0c\n\x08SEND_NOW\x10\x03\x12\t\n\x05PAUSE\x10\x04\x12\x0c\n\x08TRANSFER\x10\x05\x12\n\n\x06INVITE\x10\x06\x12\x0e\n\nPLAY_AUDIO\x10\x07\"\x95\x01\n\x1b\x43heckUpstreamHealthResponse\x12&\n\ns2t_status\x18\x01 \x01(\x0b\x32\x12.google.rpc.Status\x12&\n\nnlu_status\x18\x02 \x01(\x0b\x32\x12.google.rpc.Status\x12&\n\nt2s_status\x18\x03 \x01(\x0b\x32\x12.google.rpc.Status\"\x16\n\x14\x43ontrolStreamRequest\"Y\n\x15\x43ontrolStreamResponse\x12\x31\n\x0e\x63ontrol_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\x12\r\n\x05\x65poch\x18\x02 \x01(\x04\"L\n\x17SetControlStatusRequest\x12\x31\n\x0e\x63ontrol_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\"\x88\x01\n\x18SetControlStatusResponse\x12\x35\n\x12old_control_status\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\x12\x35\n\x12new_control_status\x18\x02 \x01(\x0e\x32\x19.ondewo.csi.ControlStatus\"C\n\tCondition\x12\'\n\x04type\x18\x01 \x01(\x0e\x32\x19.ondewo.csi.ConditionType\x12\r\n\x05value\x18\x02 \x01(\t\"\xfb\x02\n\x1f\x43ontrolMessageServiceParameters\x12/\n\nt2s_config\x18\x01 \x01(\x0b\x32\x19.ondewo.t2s.RequestConfigH\x00\x12\x39\n\ns2t_config\x18\x02 \x01(\x0b\x32#.ondewo.s2t.TranscribeRequestConfigH\x00\x12\x13\n\x0btransfer_id\x18\x03 \x01(\t\x12\x11\n\twav_files\x18\x04 \x03(\x0c\x12\x0c\n\x04text\x18\x05 \x01(\t\x12$\n\x07\x63ontext\x18\x06 \x01(\x0b\x32\x13.ondewo.nlu.Context\x12\x12\n\nsession_id\x18\x07 \x01(\t\x12\x14\n\x0c\x63ontext_name\x18\x08 \x01(\t\x12.\n\x0f\x63ondition_start\x18\t \x01(\x0b\x32\x15.ondewo.csi.Condition\x12,\n\rcondition_end\x18\n \x01(\x0b\x32\x15.ondewo.csi.ConditionB\x08\n\x06\x63onfig\"\xc2\x01\n\x0e\x43ontrolMessage\x12\x36\n\x07service\x18\x01 \x01(\x0e\x32%.ondewo.csi.ControlMessageServiceName\x12\x37\n\x06method\x18\x02 \x01(\x0e\x32\'.ondewo.csi.ControlMessageServiceMethod\x12?\n\nparameters\x18\x03 \x01(\x0b\x32+.ondewo.csi.ControlMessageServiceParameters*\xb7\x01\n\rControlStatus\x12\x06\n\x02OK\x10\x00\x12\x12\n\x0e\x45MERGENCY_STOP\x10\x01\x12\x17\n\x13VAD_START_OF_SPEECH\x10\x02\x12\x0c\n\x08\x42\x41RGE_IN\x10\x03\x12\x13\n\x0fRESUME_PLAYBACK\x10\x04\x12\x15\n\x11\x44ISCARD_REMAINDER\x10\x05\x12\x14\n\x10PLAYBACK_RESUMED\x10\x06\x12\x11\n\rPLAYBACK_DONE\x10\x07\x12\x0e\n\nCALL_ENDED\x10\x08*\xa0\x01\n\x19\x43ontrolMessageServiceName\x12\x0f\n\x0bUNKNOWNNAME\x10\x00\x12\x0e\n\nondewo_s2t\x10\x01\x12\x0e\n\nondewo_t2s\x10\x02\x12\x0e\n\nondewo_nlu\x10\x03\x12\x0e\n\nondewo_sip\x10\x04\x12\x0f\n\x0bondewo_vtsi\x10\x05\x12\x0e\n\nondewo_csi\x10\x06\x12\x11\n\rondewo_survey\x10\x07*\x85\x03\n\x1b\x43ontrolMessageServiceMethod\x12\x11\n\rUNKNOWNMETHOD\x10\x00\x12\x11\n\rupdate_config\x10\x01\x12\x0f\n\x0bundo_config\x10\x02\x12\x10\n\x0creset_config\x10\x03\x12\x0c\n\x08\x65nd_call\x10\x04\x12\x11\n\rtransfer_call\x10\x05\x12\x12\n\x0eplay_wav_files\x10\x06\x12\r\n\tplay_text\x10\x07\x12\x08\n\x04mute\x10\x08\x12\x0b\n\x07un_mute\x10\t\x12\x1d\n\x19stop_all_control_messages\x10\n\x12\x0f\n\x0btrain_agent\x10\x0b\x12\x16\n\x12\x63\x61ncel_train_agent\x10\x0c\x12\x12\n\x0e\x64\x65lete_session\x10\r\x12\x17\n\x13\x64\x65lete_all_contexts\x10\x0e\x12\x12\n\x0e\x63reate_context\x10\x0f\x12\x12\n\x0eupdate_context\x10\x10\x12\x12\n\x0e\x64\x65lete_context\x10\x11\x12\x11\n\rdetect_intent\x10\x12*\\\n\rConditionType\x12\x0e\n\nUNKNOWTYPE\x10\x00\x12\r\n\timmediate\x10\x01\x12\x0c\n\x08\x64uration\x10\x02\x12\x0c\n\x08\x64\x61tetime\x10\x03\x12\x10\n\x0cinteractions\x10\x04\x32\xfa\x05\n\rConversations\x12\x46\n\x11\x43reateS2sPipeline\x12\x17.ondewo.csi.S2sPipeline\x1a\x16.google.protobuf.Empty\"\x00\x12\x46\n\x0eGetS2sPipeline\x12\x19.ondewo.csi.S2sPipelineId\x1a\x17.ondewo.csi.S2sPipeline\"\x00\x12\x46\n\x11UpdateS2sPipeline\x12\x17.ondewo.csi.S2sPipeline\x1a\x16.google.protobuf.Empty\"\x00\x12H\n\x11\x44\x65leteS2sPipeline\x12\x19.ondewo.csi.S2sPipelineId\x1a\x16.google.protobuf.Empty\"\x00\x12_\n\x10ListS2sPipelines\x12#.ondewo.csi.ListS2sPipelinesRequest\x1a$.ondewo.csi.ListS2sPipelinesResponse\"\x00\x12N\n\tS2sStream\x12\x1c.ondewo.csi.S2sStreamRequest\x1a\x1d.ondewo.csi.S2sStreamResponse\"\x00(\x01\x30\x01\x12X\n\x13\x43heckUpstreamHealth\x12\x16.google.protobuf.Empty\x1a\'.ondewo.csi.CheckUpstreamHealthResponse\"\x00\x12[\n\x10GetControlStream\x12 .ondewo.csi.ControlStreamRequest\x1a!.ondewo.csi.ControlStreamResponse\"\x00\x30\x01\x12_\n\x10SetControlStatus\x12#.ondewo.csi.SetControlStatusRequest\x1a$.ondewo.csi.SetControlStatusResponse\"\x00\x62\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -41,13 +41,13 @@ if not _descriptor._USE_C_DESCRIPTORS: DESCRIPTOR._loaded_options = None _globals['_CONTROLSTATUS']._serialized_start=2373 - _globals['_CONTROLSTATUS']._serialized_end=2540 - _globals['_CONTROLMESSAGESERVICENAME']._serialized_start=2543 - _globals['_CONTROLMESSAGESERVICENAME']._serialized_end=2703 - _globals['_CONTROLMESSAGESERVICEMETHOD']._serialized_start=2706 - _globals['_CONTROLMESSAGESERVICEMETHOD']._serialized_end=3095 - _globals['_CONDITIONTYPE']._serialized_start=3097 - _globals['_CONDITIONTYPE']._serialized_end=3189 + _globals['_CONTROLSTATUS']._serialized_end=2556 + _globals['_CONTROLMESSAGESERVICENAME']._serialized_start=2559 + _globals['_CONTROLMESSAGESERVICENAME']._serialized_end=2719 + _globals['_CONTROLMESSAGESERVICEMETHOD']._serialized_start=2722 + _globals['_CONTROLMESSAGESERVICEMETHOD']._serialized_end=3111 + _globals['_CONDITIONTYPE']._serialized_start=3113 + _globals['_CONDITIONTYPE']._serialized_end=3205 _globals['_S2SPIPELINE']._serialized_start=307 _globals['_S2SPIPELINE']._serialized_end=433 _globals['_S2SPIPELINEID']._serialized_start=435 @@ -80,6 +80,6 @@ _globals['_CONTROLMESSAGESERVICEPARAMETERS']._serialized_end=2173 _globals['_CONTROLMESSAGE']._serialized_start=2176 _globals['_CONTROLMESSAGE']._serialized_end=2370 - _globals['_CONVERSATIONS']._serialized_start=3192 - _globals['_CONVERSATIONS']._serialized_end=3954 + _globals['_CONVERSATIONS']._serialized_start=3208 + _globals['_CONVERSATIONS']._serialized_end=3970 # @@protoc_insertion_point(module_scope) diff --git a/ondewo/csi/conversation_pb2.pyi b/ondewo/csi/conversation_pb2.pyi index 3e2c423..9421e23 100644 --- a/ondewo/csi/conversation_pb2.pyi +++ b/ondewo/csi/conversation_pb2.pyi @@ -60,6 +60,8 @@ class _ControlStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._ """Status reported by the client to the server via SetControlStatus that playback of the buffered audio remainder has resumed""" PLAYBACK_DONE: _ControlStatus.ValueType # 7 """Status reported by the client to the server via SetControlStatus that playback of an utterance has completed""" + CALL_ENDED: _ControlStatus.ValueType # 8 + """Status reported by ondewo-sip to the server via SetControlStatus that the phone call has ENDED and the server must reset ALL per-call state in place (persistent-listener model). It is a command, not a state: it is never pushed onto the control stream""" class ControlStatus(_ControlStatus, metaclass=_ControlStatusEnumTypeWrapper): """Control status.""" @@ -80,6 +82,8 @@ PLAYBACK_RESUMED: ControlStatus.ValueType # 6 """Status reported by the client to the server via SetControlStatus that playback of the buffered audio remainder has resumed""" PLAYBACK_DONE: ControlStatus.ValueType # 7 """Status reported by the client to the server via SetControlStatus that playback of an utterance has completed""" +CALL_ENDED: ControlStatus.ValueType # 8 +"""Status reported by ondewo-sip to the server via SetControlStatus that the phone call has ENDED and the server must reset ALL per-call state in place (persistent-listener model). It is a command, not a state: it is never pushed onto the control stream""" global___ControlStatus = ControlStatus class _ControlMessageServiceName: From 317eb89cff214bb3eedf9a6dd40155be72864503 Mon Sep 17 00:00:00 2001 From: Andreas Rath Date: Thu, 6 Aug 2026 21:56:17 +0200 Subject: [PATCH 7/8] [OND211-2418] docs(claude): record that this client ships no vendored nlu protos Verified against the installed .dist-info/RECORD: ondewo-csi-client claims zero files under ondewo/nlu and instead declares ondewo-nlu-client 7.0.1 as a runtime dependency. That is the opposite of ondewo-vtsi-client, which vendors 55 ondewo/nlu files plus ondewo/{s2t,t2s,sip,qa} and therefore does need lockstep regeneration. Recorded so nobody 'helpfully' adds vendored nlu protos here and creates the duplicate-file-in-pool crash the current layout avoids. Also notes that consumers pin this repo by git rev (23b568fa today), so pushed commits must never be rebased. --- CLAUDE.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index c716c8a..57f4d6b 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -149,6 +149,25 @@ Raises: - Prefer region comments for grouping methods in files that already use them. - End edited Markdown and YAML files with a trailing newline. +## What this package actually ships (and what it does not) + +This client installs **`ondewo/csi` only**. It contains **no** `ondewo/nlu`, `ondewo/s2t` or +`ondewo/t2s` `*_pb2` modules — `requirements.txt` declares `ondewo-nlu-client==7.0.1`, +`ondewo-s2t-client` and `ondewo-t2s-client`, and the csi protos reference those packages' +descriptors at import time. Verified against the installed `.dist-info/RECORD`: this dist claims +zero files under `ondewo/nlu/`. + +That matters when someone reasons about descriptor-pool collisions. The sibling client +`ondewo-vtsi-client-python` **does** vendor foreign protos (55 files under `ondewo/nlu`, plus +`ondewo/{s2t,t2s,sip,qa}`), so *it* has to be regenerated in lockstep with the service clients. This +one does not — bump it only when the `ondewo/csi` surface itself changes. Do not "helpfully" add +vendored nlu protos here; it would create exactly the duplicate-file-in-pool crash the current +layout avoids. + +Consumers pin this repo by git rev, not by PyPI version: `ondewo-vtsi` and `ondewo-csi` both pin +rev **`23b568fa`** (the `CALL_ENDED` control-status regen) in their `pyproject.toml`. Never rebase or +force-push a commit that a pin references. + ## Jenkins — never trigger a multibranch scan or branch indexing **NEVER trigger a Jenkins multibranch scan or branch indexing.** Do not call a multibranch/folder job's From 8173ff8845b07b63ef6ed964dbaa305d85c7787e Mon Sep 17 00:00:00 2001 From: Andreas Rath Date: Sun, 9 Aug 2026 01:25:17 +0200 Subject: [PATCH 8/8] [OND211-2418] chore(deps): allow ondewo-nlu-client 7.0.2 7.0.1 keyed its shared Keycloak token-provider registry by `id(config)`. A ClientConfig is unreachable the moment the client is built (the service interfaces keep only the grpc channel), so CPython reused its address for the next ClientConfig and the registry handed the new client the PREVIOUS user's still-live provider -- authenticating as the wrong user, including with credentials that do not exist. 7.0.2 keys it by a sha256 of the credential set. The `==7.0.1` here is a generation artifact, not a real API constraint: diffing the two wheels shows `ondewo/nlu/utils/keycloak.py` as the only file that changed, no `_pb2` at all, so the ondewo-nlu-api generation this client was regenerated against (7.0.0) is unchanged. Unblocks the ondewo-nlu-client 7.0.2 bump in ondewo-csi, which could not resolve while this exact pin stood. --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 81ace86..673d898 100644 --- a/requirements.txt +++ b/requirements.txt @@ -8,7 +8,7 @@ grpcio-tools loguru numpy ondewo-client-utils>=3.2.0 -ondewo-nlu-client==7.0.1 +ondewo-nlu-client==7.0.2 ondewo-s2t-client ondewo-t2s-client requests