diff --git a/docs/ivr-navigation.mdx b/docs/ivr-navigation.mdx new file mode 100644 index 000000000..c67f0cffe --- /dev/null +++ b/docs/ivr-navigation.mdx @@ -0,0 +1,66 @@ +--- +title: "[Beta] IVR Navigation" +description: "Navigate phone trees" +--- + +Note: this feature is only useful on outbound calls, which are disabled by default. Please contact us through Discord or at support@vocode.dev +to discuss enabling this for your account! + +The Vocode API has many tools for agents to interact with IVRs (interactive voice responses) - navigating phone trees +is one of the primary use-cases of the API. + +# IVR navigation mode + +When starting an outbound call, set `ivr_navigation_mode` to `default` - this allows the bot to stay silent while on hold. Vocode +bots also automatically end the call after the conversation has been idle (i.e. no words on both sides) for 30 seconds: setting `ivr_navigation_mode` to `default` +increases this threshold to 10 minutes. + +```python +vocode_client.calls.create_call( + from_number="", + to_number="15555555555", + agent=CreateCallAgentParams( + ..., + ivr_navigation_mode="default" + ), +) +``` + +# DTMF action + +The DTMF action allows the bot to hit dial tones (e.g. to navigate phone tree nodes where an IVR says "Press 1 for ..."). + +```python +vocode_client.calls.create_call( + from_number="", + to_number="15555555555", + agent=CreateCallAgentParams( + actions=[DtmfActionParams(type="action_dtmf")], + ... + ), +) +``` + +# Transfer call action + +The Transfer call action allows the bot to transfer to a human agent. + +```python +vocode_client.calls.create_call( + from_number="", + to_number="15555555555", + agent=CreateCallAgentParams( + actions=[TransferCallActionParams(type="action_transfer_call", config=TransferCallConfig( + phone_number="11234567890" + ))], + ... + ), +) +``` + +# On the horizon + +We plan to introduce more dials here, for example: + +- More configurability around allowed idle time of the conversation +- Human detection - i.e. behavior when a human picks up the phone after the bot navigates the phone tree diff --git a/docs/mint.json b/docs/mint.json index 0e3f494a8..b3a1e3ead 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -172,7 +172,8 @@ "vectordb", "multilingual", "injecting-context", - "machine-detection" + "machine-detection", + "ivr-navigation" ] } ], diff --git a/docs/openapi.json b/docs/openapi.json index 49eca283a..a30510637 100644 --- a/docs/openapi.json +++ b/docs/openapi.json @@ -1433,6 +1433,12 @@ "enum": ["auto", "relaxed"], "title": "Endpointing Sensitivity", "default": "auto" + }, + "ivr_navigation_mode": { + "type": "string", + "enum": ["default", "off"], + "title": "Ivr Navigation Mode", + "default": "off" } }, "type": "object", @@ -1530,6 +1536,12 @@ "enum": ["auto", "relaxed"], "title": "Endpointing Sensitivity", "default": "auto" + }, + "ivr_navigation_mode": { + "type": "string", + "enum": ["default", "off"], + "title": "Ivr Navigation Mode", + "default": "off" } }, "type": "object", @@ -1649,6 +1661,13 @@ { "$ref": "#/components/schemas/Undefined" } ], "title": "Endpointing Sensitivity" + }, + "ivr_navigation_mode": { + "anyOf": [ + { "type": "string", "enum": ["default", "off"] }, + { "$ref": "#/components/schemas/Undefined" } + ], + "title": "Ivr Navigation Mode" } }, "type": "object", @@ -1880,6 +1899,12 @@ "enum": ["auto", "relaxed"], "title": "Endpointing Sensitivity", "default": "auto" + }, + "ivr_navigation_mode": { + "type": "string", + "enum": ["default", "off"], + "title": "Ivr Navigation Mode", + "default": "off" } }, "type": "object", @@ -2169,6 +2194,12 @@ "enum": ["auto", "relaxed"], "title": "Endpointing Sensitivity", "default": "auto" + }, + "ivr_navigation_mode": { + "type": "string", + "enum": ["default", "off"], + "title": "Ivr Navigation Mode", + "default": "off" } }, "type": "object", @@ -2499,7 +2530,8 @@ "id": { "type": "string", "format": "uuid", "title": "Id" }, "user_id": { "type": "string", "format": "uuid", "title": "User Id" }, "type": { "type": "string", "enum": ["voice_rime"], "title": "Type" }, - "speaker": { "type": "string", "title": "Speaker" } + "speaker": { "type": "string", "title": "Speaker" }, + "speed_alpha": { "type": "number", "title": "Speed Alpha" } }, "type": "object", "required": ["id", "user_id", "type", "speaker"], @@ -2508,7 +2540,8 @@ "RimeVoiceParams": { "properties": { "type": { "type": "string", "enum": ["voice_rime"], "title": "Type" }, - "speaker": { "type": "string", "title": "Speaker" } + "speaker": { "type": "string", "title": "Speaker" }, + "speed_alpha": { "type": "number", "title": "Speed Alpha" } }, "type": "object", "required": ["type", "speaker"], @@ -2523,6 +2556,13 @@ { "$ref": "#/components/schemas/Undefined" } ], "title": "Speaker" + }, + "speed_alpha": { + "anyOf": [ + { "type": "number" }, + { "$ref": "#/components/schemas/Undefined" } + ], + "title": "Speed Alpha" } }, "type": "object",