jambonz-python-sdk 0.3.0__tar.gz → 0.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/PKG-INFO +1 -1
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/pyproject.toml +1 -1
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/call-status.schema.json +6 -1
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-assemblyAiOptions.schema.json +3 -3
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-deepgramOptions.schema.json +5 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-houndifyOptions.schema.json +3 -1
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/agent.schema.json +123 -2
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/dub.schema.json +1 -1
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/transcribe.schema.json +2 -1
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/websocket/session.py +38 -6
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/.gitignore +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/README.md +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/__init__.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/_signature.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/client/__init__.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/client/api.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/agent-turn.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/amd.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/base.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/conference-status.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/conference-wait.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/conference.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/dequeue.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/dial-dtmf.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/dial-hold.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/dial-refer.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/dial.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/enqueue-wait.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/enqueue.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/gather-partial.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/gather.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/listen.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/llm.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/message.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/play.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/session-new.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/session-reconnect.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/session-redirect.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/sip-refer-event.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/sip-refer.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/sip-request.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/transcribe-translation.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/transcribe.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/tts-streaming-event.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/callbacks/verb-status.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/actionHook.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/actionHookDelayAction.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/amd.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/auth.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/bidirectionalAudio.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/fillerNoise.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/llm-base.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-awsOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-azureOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-cobaltOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-customOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-elevenlabsOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-gladiaOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-googleOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-ibmOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-nuanceOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-nvidiaOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-openaiOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-sonioxOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-speechmaticsOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer-verbioOptions.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/recognizer.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/synthesizer.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/target.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/components/vad.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/jambonz-app.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/alert.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/answer.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/conference.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/config.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/deepgram_s2s.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/dequeue.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/dial.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/dialogflow.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/dtmf.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/elevenlabs_s2s.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/enqueue.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/gather.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/google_s2s.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/hangup.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/leave.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/listen.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/llm.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/message.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/openai_s2s.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/pause.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/play.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/redirect.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/rest_dial.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/s2s.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/say.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/sip-decline.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/sip-refer.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/sip-request.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/stream.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/tag.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/ultravox_s2s.schema.json +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/types/__init__.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/types/components.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/types/rest.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/types/session.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/types/verbs.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/validator.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/verb_builder.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/verb_builder.pyi +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/verb_registry.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/webhook/__init__.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/webhook/middleware.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/webhook/response.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/websocket/__init__.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/websocket/audio_client.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/websocket/audio_stream.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/websocket/client.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/websocket/endpoint.py +0 -0
- {jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/websocket/router.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: jambonz-python-sdk
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.1
|
|
4
4
|
Summary: Python SDK for jambonz CPaaS platform
|
|
5
5
|
Project-URL: Homepage, https://github.com/jambonz/jambonz-python-sdk
|
|
6
6
|
Project-URL: Repository, https://github.com/jambonz/jambonz-python-sdk
|
|
@@ -2,12 +2,17 @@
|
|
|
2
2
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
3
|
"$id": "https://jambonz.org/schema/callbacks/call-status",
|
|
4
4
|
"title": "Call Status Webhook Payload",
|
|
5
|
-
"description": "Payload sent to the call status webhook URL whenever the call state changes (e.g. trying, in-progress, completed). The status webhook is configured at the application level in jambonz. Multiple status events are sent over the life of a call. The final event (completed or failed) includes additional fields like duration and termination cause.",
|
|
5
|
+
"description": "Payload sent to the call status webhook URL whenever the call state changes (e.g. trying, in-progress, completed). The status webhook is configured at the application level in jambonz. Multiple status events are sent over the life of a call. The final event (completed or failed) includes additional fields like duration and termination cause.\n\n**Capturing B-leg call_sid:** When using the dial verb to bridge calls, status events are sent for both legs. The A-leg (original inbound call) has `direction: 'inbound'`. The B-leg (outbound dialed call) has `direction: 'outbound'`. To capture the B-leg's call_sid for later use (e.g., injecting commands to the B-leg), listen for status events where `direction === 'outbound'` and extract the `call_sid` field.",
|
|
6
6
|
"allOf": [
|
|
7
7
|
{ "$ref": "base" }
|
|
8
8
|
],
|
|
9
9
|
"type": "object",
|
|
10
10
|
"properties": {
|
|
11
|
+
"direction": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"enum": ["inbound", "outbound"],
|
|
14
|
+
"description": "Call direction. 'inbound' = A-leg (original incoming call to the application). 'outbound' = B-leg (call placed by the dial verb). Use this field to identify which leg generated the status event, especially when capturing the B-leg's call_sid for mid-call control."
|
|
15
|
+
},
|
|
11
16
|
"call_termination_by": {
|
|
12
17
|
"type": "string",
|
|
13
18
|
"enum": ["caller", "jambonz"],
|
|
@@ -28,15 +28,15 @@
|
|
|
28
28
|
},
|
|
29
29
|
"minEndOfTurnSilenceWhenConfident": {
|
|
30
30
|
"type": "number",
|
|
31
|
-
"description": "Minimum silence duration (
|
|
31
|
+
"description": "Minimum silence duration (milliseconds) to trigger end-of-turn when confidence is met. Default: 400."
|
|
32
32
|
},
|
|
33
33
|
"maxTurnSilence": {
|
|
34
34
|
"type": "number",
|
|
35
|
-
"description": "Maximum silence duration (
|
|
35
|
+
"description": "Maximum silence duration (milliseconds) before forcing end-of-turn. Default: 1280."
|
|
36
36
|
},
|
|
37
37
|
"minTurnSilence": {
|
|
38
38
|
"type": "number",
|
|
39
|
-
"description": "Minimum silence duration (
|
|
39
|
+
"description": "Minimum silence duration (milliseconds) before allowing end-of-turn."
|
|
40
40
|
},
|
|
41
41
|
"keyterms": {
|
|
42
42
|
"type": "array",
|
|
@@ -141,6 +141,11 @@
|
|
|
141
141
|
"eagerEotThreshold": {
|
|
142
142
|
"type": "number",
|
|
143
143
|
"description": "Eager end-of-turn threshold for faster response."
|
|
144
|
+
},
|
|
145
|
+
"languageHints": {
|
|
146
|
+
"type": "array",
|
|
147
|
+
"items": { "type": "string" },
|
|
148
|
+
"description": "Language hints for Deepgram Flux Multilingual. BCP-47 codes (e.g. 'en', 'es', 'fr'). Biases transcription toward specified languages."
|
|
144
149
|
}
|
|
145
150
|
},
|
|
146
151
|
"additionalProperties": false
|
|
@@ -47,7 +47,9 @@
|
|
|
47
47
|
"description": "Custom vocabulary terms."
|
|
48
48
|
},
|
|
49
49
|
"languageModel": { "type": "string", "description": "Language model to use." },
|
|
50
|
-
"audioQueryAbsoluteTimeout": { "type": "number", "description": "Absolute timeout for audio queries." }
|
|
50
|
+
"audioQueryAbsoluteTimeout": { "type": "number", "description": "Absolute timeout for audio queries." },
|
|
51
|
+
"eoqThreshold": { "type": "number", "minimum": 0, "maximum": 1, "description": "End-of-query likelihood threshold (0.0-1.0) to trigger end of speech when segmentation is disabled. Default 0.8, set to 0 to disable." },
|
|
52
|
+
"vadStopThreshold": { "type": "number", "minimum": 0, "maximum": 1, "description": "VAD probability threshold to trigger end of speech when segmentation is disabled. When VAD drops below this value after speech is detected, streaming stops. Default 0.05, set to 0 to disable." }
|
|
51
53
|
},
|
|
52
54
|
"additionalProperties": false
|
|
53
55
|
}
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/agent.schema.json
RENAMED
|
@@ -21,6 +21,28 @@
|
|
|
21
21
|
"$ref": "../components/synthesizer",
|
|
22
22
|
"description": "Text-to-speech configuration for the agent."
|
|
23
23
|
},
|
|
24
|
+
"autoLockLanguage": {
|
|
25
|
+
"oneOf": [
|
|
26
|
+
{ "type": "boolean" },
|
|
27
|
+
{ "type": "string", "enum": ["always"] }
|
|
28
|
+
],
|
|
29
|
+
"description": "When using Deepgram Flux Multilingual, automatically adjust STT language hints and switch TTS voice based on detected language. Values: false (disabled), true (lock on first utterance), 'always' (continuously adapt on every turn). Default: false.",
|
|
30
|
+
"default": false
|
|
31
|
+
},
|
|
32
|
+
"languageConfig": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"description": "Per-language overrides for TTS. Keys are BCP-47 language codes. When autoLockLanguage detects a language switch, the agent uses the corresponding config.",
|
|
35
|
+
"additionalProperties": {
|
|
36
|
+
"type": "object",
|
|
37
|
+
"properties": {
|
|
38
|
+
"tts": {
|
|
39
|
+
"$ref": "../components/synthesizer",
|
|
40
|
+
"description": "TTS config override for this language. Merged with default tts."
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"additionalProperties": false
|
|
44
|
+
}
|
|
45
|
+
},
|
|
24
46
|
"turnDetection": {
|
|
25
47
|
"oneOf": [
|
|
26
48
|
{
|
|
@@ -86,8 +108,92 @@
|
|
|
86
108
|
},
|
|
87
109
|
"llm": {
|
|
88
110
|
"type": "object",
|
|
89
|
-
"description": "LLM configuration for the agent.
|
|
90
|
-
"
|
|
111
|
+
"description": "LLM configuration for the agent.",
|
|
112
|
+
"required": ["vendor", "model"],
|
|
113
|
+
"properties": {
|
|
114
|
+
"vendor": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"enum": [
|
|
117
|
+
"openai",
|
|
118
|
+
"anthropic",
|
|
119
|
+
"google",
|
|
120
|
+
"vertex-gemini",
|
|
121
|
+
"vertex-openai",
|
|
122
|
+
"bedrock",
|
|
123
|
+
"deepseek",
|
|
124
|
+
"azure-openai",
|
|
125
|
+
"groq",
|
|
126
|
+
"huggingface"
|
|
127
|
+
],
|
|
128
|
+
"description": "LLM vendor id. Must match a `@jambonz/llm` registered adapter."
|
|
129
|
+
},
|
|
130
|
+
"model": {
|
|
131
|
+
"type": "string",
|
|
132
|
+
"description": "Vendor-specific model id (e.g. 'gpt-4o', 'claude-sonnet-4-5-20250929')."
|
|
133
|
+
},
|
|
134
|
+
"label": {
|
|
135
|
+
"type": "string",
|
|
136
|
+
"description": "Optional label to disambiguate when the account has multiple credentials for the same vendor."
|
|
137
|
+
},
|
|
138
|
+
"auth": {
|
|
139
|
+
"type": "object",
|
|
140
|
+
"description": "Optional inline credentials. When omitted, feature-server looks up credentials by (vendor, label) from the database.",
|
|
141
|
+
"properties": {
|
|
142
|
+
"apiKey": { "type": "string" }
|
|
143
|
+
},
|
|
144
|
+
"additionalProperties": true
|
|
145
|
+
},
|
|
146
|
+
"connectOptions": {
|
|
147
|
+
"type": "object",
|
|
148
|
+
"description": "SDK-level client options.",
|
|
149
|
+
"properties": {
|
|
150
|
+
"timeout": { "type": "number", "minimum": 0 },
|
|
151
|
+
"maxRetries": { "type": "integer", "minimum": 0 },
|
|
152
|
+
"endpoint": { "type": "string" },
|
|
153
|
+
"baseURL": { "type": "string" }
|
|
154
|
+
},
|
|
155
|
+
"additionalProperties": false
|
|
156
|
+
},
|
|
157
|
+
"llmOptions": {
|
|
158
|
+
"type": "object",
|
|
159
|
+
"description": "Per-call LLM configuration.",
|
|
160
|
+
"properties": {
|
|
161
|
+
"systemPrompt": {
|
|
162
|
+
"type": "string",
|
|
163
|
+
"description": "System prompt for the model. Placed vendor-appropriately (top-level for Anthropic/Bedrock, config.systemInstruction for Gemini, role:'system' for OpenAI-compatibles)."
|
|
164
|
+
},
|
|
165
|
+
"messages": {
|
|
166
|
+
"type": "array",
|
|
167
|
+
"description": "Seed conversation history. A role:'system' entry is extracted into systemPrompt internally.",
|
|
168
|
+
"items": { "$ref": "#/$defs/llmMessage" }
|
|
169
|
+
},
|
|
170
|
+
"initialMessages": {
|
|
171
|
+
"type": "array",
|
|
172
|
+
"description": "Alias of 'messages' (historical).",
|
|
173
|
+
"items": { "$ref": "#/$defs/llmMessage" }
|
|
174
|
+
},
|
|
175
|
+
"maxTokens": {
|
|
176
|
+
"type": "integer",
|
|
177
|
+
"minimum": 1,
|
|
178
|
+
"description": "Maximum tokens the model may generate per turn."
|
|
179
|
+
},
|
|
180
|
+
"temperature": {
|
|
181
|
+
"type": "number",
|
|
182
|
+
"minimum": 0,
|
|
183
|
+
"description": "Sampling temperature."
|
|
184
|
+
},
|
|
185
|
+
"tools": {
|
|
186
|
+
"type": "array",
|
|
187
|
+
"description": "Tool / function definitions available to the model. The MCP-flat shape `{name, description, parameters}` is canonical; the OpenAI-wrapped form `{type:'function', function:{...}}` is also accepted.",
|
|
188
|
+
"items": {
|
|
189
|
+
"type": "object"
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
"additionalProperties": false
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
"additionalProperties": false
|
|
91
197
|
},
|
|
92
198
|
"actionHook": {
|
|
93
199
|
"$ref": "../components/actionHook",
|
|
@@ -177,6 +283,21 @@
|
|
|
177
283
|
"required": [
|
|
178
284
|
"llm"
|
|
179
285
|
],
|
|
286
|
+
"$defs": {
|
|
287
|
+
"llmMessage": {
|
|
288
|
+
"type": "object",
|
|
289
|
+
"description": "A conversation-history message. The library normalizes content to a string; adapters may carry vendor-native shapes internally.",
|
|
290
|
+
"required": ["role", "content"],
|
|
291
|
+
"properties": {
|
|
292
|
+
"role": {
|
|
293
|
+
"type": "string",
|
|
294
|
+
"enum": ["system", "user", "assistant", "tool"]
|
|
295
|
+
},
|
|
296
|
+
"content": {}
|
|
297
|
+
},
|
|
298
|
+
"additionalProperties": true
|
|
299
|
+
}
|
|
300
|
+
},
|
|
180
301
|
"examples": [
|
|
181
302
|
{
|
|
182
303
|
"verb": "agent",
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/dub.schema.json
RENAMED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"$id": "https://jambonz.org/schema/verbs/dub",
|
|
4
4
|
"minVersion": "0.9.6",
|
|
5
5
|
"title": "Dub",
|
|
6
|
-
"description": "Manages audio dubbing tracks on a call. Allows adding, removing, and controlling auxiliary audio tracks that are mixed into the call audio. Used for background music, coaching whispers, or injecting audio from external sources.",
|
|
6
|
+
"description": "Manages audio dubbing tracks on a call. Allows adding, removing, and controlling auxiliary audio tracks that are mixed into the call audio. Used for background music, coaching whispers, or injecting audio from external sources.\n\n**Track Routing:** Tracks are heard by the party on whose call leg they are created. A dub verb in the main verb stack (A-leg) creates tracks heard by the caller. A dub verb nested in the dial verb's `dub` array creates tracks heard by the callee. When using injectCommand to play/say on a track from a different call leg, pass the target call's `call_sid` as the third argument to `session.injectCommand()` to route the command to the correct leg.",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|
|
9
9
|
"verb": {
|
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
},
|
|
38
38
|
"channel": {
|
|
39
39
|
"type": "number",
|
|
40
|
-
"
|
|
40
|
+
"enum": [1, 2],
|
|
41
|
+
"description": "Specific audio channel to transcribe. Channel 1 = near-end (local party's audio, i.e. caller on A-leg or callee on B-leg). Channel 2 = far-end (remote party's audio). When transcribe is nested in the dial verb, omitting channel captures both legs mixed; specifying channel: 2 isolates the B-leg's inbound audio."
|
|
41
42
|
}
|
|
42
43
|
},
|
|
43
44
|
"examples": [
|
|
@@ -229,19 +229,30 @@ class Session(VerbBuilder):
|
|
|
229
229
|
async def tool_output(self, tool_call_id: str, result: Any) -> Session:
|
|
230
230
|
"""Return a tool call result to the agent LLM.
|
|
231
231
|
|
|
232
|
+
Canonical wire shape (validated by ``@jambonz/schema``)::
|
|
233
|
+
|
|
234
|
+
{"type": "command", "command": "llm:tool-output",
|
|
235
|
+
"tool_call_id": "...", "data": {"result": ...}}
|
|
236
|
+
|
|
237
|
+
The ``result`` argument becomes ``data.result`` when it is not a dict,
|
|
238
|
+
matching the Node SDK's convenience wrapping. Passing a dict sends it
|
|
239
|
+
as-is so callers can include richer structured output (feature-server
|
|
240
|
+
JSON-stringifies the full ``data`` object on the way to the LLM).
|
|
241
|
+
|
|
232
242
|
Args:
|
|
233
243
|
tool_call_id: The tool_call_id from the llm:tool-call event.
|
|
234
|
-
result: The tool result
|
|
244
|
+
result: The tool result. A non-dict value is wrapped as
|
|
245
|
+
``{"result": result}``; a dict is sent as-is.
|
|
235
246
|
|
|
236
247
|
Returns:
|
|
237
248
|
self for chaining with .reply().
|
|
238
249
|
"""
|
|
250
|
+
payload = result if isinstance(result, dict) else {"result": result}
|
|
239
251
|
msg = {
|
|
240
|
-
"type": "
|
|
241
|
-
"
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
},
|
|
252
|
+
"type": "command",
|
|
253
|
+
"command": "llm:tool-output",
|
|
254
|
+
"tool_call_id": tool_call_id,
|
|
255
|
+
"data": payload,
|
|
245
256
|
}
|
|
246
257
|
await self._ws.send(json.dumps(msg))
|
|
247
258
|
return self
|
|
@@ -257,3 +268,24 @@ class Session(VerbBuilder):
|
|
|
257
268
|
"""
|
|
258
269
|
msg = {"type": "agent:update", "data": data}
|
|
259
270
|
await self._ws.send(json.dumps(msg))
|
|
271
|
+
|
|
272
|
+
async def inject_stt_reconfigure(
|
|
273
|
+
self,
|
|
274
|
+
language_hints: list[str] | None = None,
|
|
275
|
+
opts: dict[str, Any] | None = None
|
|
276
|
+
) -> None:
|
|
277
|
+
"""Reconfigure STT (speech-to-text) settings mid-call.
|
|
278
|
+
|
|
279
|
+
Currently supports updating language hints for Deepgram Flux Multilingual.
|
|
280
|
+
|
|
281
|
+
Args:
|
|
282
|
+
language_hints: List of BCP-47 language codes (e.g., ['en', 'es']).
|
|
283
|
+
Pass empty list [] to clear hints and enable auto-detection.
|
|
284
|
+
opts: Additional STT reconfiguration options.
|
|
285
|
+
"""
|
|
286
|
+
data: dict[str, Any] = {}
|
|
287
|
+
if language_hints is not None:
|
|
288
|
+
data["languageHints"] = language_hints
|
|
289
|
+
if opts:
|
|
290
|
+
data.update(opts)
|
|
291
|
+
await self.inject_command("stt:reconfigure", data)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/jambonz-app.schema.json
RENAMED
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/alert.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/dial.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/dtmf.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/leave.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/llm.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/pause.schema.json
RENAMED
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/play.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/s2s.schema.json
RENAMED
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/say.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/schema/verbs/tag.schema.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/websocket/audio_client.py
RENAMED
|
File without changes
|
{jambonz_python_sdk-0.3.0 → jambonz_python_sdk-0.3.1}/src/jambonz_sdk/websocket/audio_stream.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|