diff --git a/docs/phrase-triggers.mdx b/docs/action-triggers.mdx similarity index 82% rename from docs/phrase-triggers.mdx rename to docs/action-triggers.mdx index 4fe434ffa..3dd201523 100644 --- a/docs/phrase-triggers.mdx +++ b/docs/action-triggers.mdx @@ -1,11 +1,13 @@ --- -title: "[Beta] Phrase Triggers" -description: "Configure Vocode actions to run based on spoken phrases by the agent" +title: "Action Triggers" +description: "Configure Vocode actions to run based on different triggers" --- +# Phrase Triggers + Phrase triggers allow users to more explicitly control the behavior of their agents by configuring actions to run only once a bot has spoken a particular phrase. For example, you can configure an agent to transfer a call to a human agent only after the bot has said "I will transfer now". -# Creating a phrase trigger +## Creating a phrase trigger You can create a phrase trigger as follows: @@ -36,7 +38,7 @@ In this example, the action that this phrase trigger is attached to will fire on `"phrase_condition_type_contains"` is the only condition type supported at this time, and does not match case, so in the above example, if the bot said "Okay, you can speak to a human now", the phrase trigger would still fire. -# Configuring your action +## Configuring your action ```python from vocode import ( @@ -57,7 +59,11 @@ vocode_client.agents.update_agent( ) ``` -To switch back to the default behavior, use a `FunctionCallActionTrigger`. +# [Default] Function Call Triggers + +To switch back to the default behavior, use a `FunctionCallActionTrigger`. These are open ended, meaning the +Agent will decide when to use the action based on its prompting. Note that is is primarily achieved via the [Prompt](/prompts) +but for [External Actions](/external-actions), it is also dependent on the description field. ```python from vocode import FunctionCallActionTrigger diff --git a/docs/actions.mdx b/docs/actions.mdx index 388764097..c58d5c811 100644 --- a/docs/actions.mdx +++ b/docs/actions.mdx @@ -1,6 +1,221 @@ --- title: "Actions" -description: "🚧 Under construction" +description: "Give your agents the ability to execute actions" --- -# +Vocode agents can decide to take actions synchronously during calls. There are two ways to configure actions: + +1. Phrase Triggers +2. Function Call Triggers (default) + +See [Action Triggers](/action-triggers) for information on how to configure triggers. Below is the list of actions that an agent can perform: + +#### EndConversation + +`EndConversation` allows the agent to end the call, e.g. if the user says "Goodbye!" + + + +```python Python +vocode_client.actions.create_action( + request={ + "type": "action_end_conversation", + } +) +``` + +```typescript TypeScript +const number = await vocode.actions.createAction({ + type: "action_end_conversation", +}); +``` + +```bash cURL +curl --request POST \ + --url https://api.vocode.dev/v1/actions/create \ + --header 'Content-Type: application/json' \ + --header 'Authorization: Bearer ' + --data '{ + "type": "action_end_conversation" +}' +``` + + + +#### DTMF + +`DTMF` allows the agent to hit dial tones during a call, e.g. navigating a phone tree + + + +```python Python +vocode_client.actions.create_action( + request={ + "type":"action_dtmf", + } +) +``` + +```typescript TypeScript +const number = await vocode.actions.createAction({ + type: "action_dtmf", +}); +``` + +```bash cURL +curl --request POST \ + --url https://api.vocode.dev/v1/actions/create \ + --header 'Content-Type: application/json' \ + --header 'Authorization: Bearer ' + --data '{ + "type": "action_dtmf" +}' +``` + + + +#### TransferCall + +`TransferCall` allows the agent to transfer the call to another phone number + + + +```python Python +vocode_client.actions.create_action( + request={ + "type":"action_transfer_call", + "config":{ + "phone_number":"11234567890" + } + } +) +``` + +```typescript TypeScript +const number = await vocode.actions.createAction({ + type: "action_transfer_call", + config: { + phoneNumber: "11234567890", + }, +}); +``` + +```bash cURL +curl --request POST \ + --url https://api.vocode.dev/v1/actions/create \ + --header 'Content-Type: application/json' \ + --header 'Authorization: Bearer ' + --data '{ + "type": "action_transfer_call", + "config": { + "phone_number": "11234567890" + } +}' +``` + + + +You can attach these as IDs to your phone number agent as follows: + + + +```python Python +from vocode import AgentUpdateParams + +vocode_client.numbers.update_number( + phone_number="11234567890", + inbound_agent=AgentUpdateParams( + actions=[""] + ) +) +``` + +```typescript TypeScript +vocode.numbers.updateNumber({ + phoneNumber: "11234567890", + inboundAgent: { + actions: [""], + }, +}); +``` + +```bash cURL +curl --request POST \ + --url https://api.vocode.dev/v1/numbers/update?phone_number=11234567890 \ + --header 'Content-Type: application/json' \ + --header 'Authorization: Bearer ' + --data '{ + "inbound_agent": { + "actions": [""] + } +}' +``` + + + +You can also add these as actions as raw payloads as follows: + + + +```python Python +from vocode import AgentUpdateParams, TransferCallActionUpdateParams + +vocode_client.numbers.update_number( + phone_number="11234567890", + inbound_agent=AgentUpdateParams( + actions=[TransferCallActionUpdateParams( + type="action_transfer_call", + config={ + "phone_number":"11234567890" + } + )] + ) +) +``` + +```typescript TypeScript +vocode.numbers.updateNumber({ + phoneNumber: "11234567890", + inboundAgent: { + actions: [ + { + type: "action_transfer_call", + config: { + phoneNumber: "11234567890", + }, + }, + ], + }, +}); +``` + +```bash cURL +curl --request POST \ + --url https://api.vocode.dev/v1/numbers/update?phone_number=11234567890 \ + --header 'Content-Type: application/json' \ + --header 'Authorization: Bearer ' + --data '{ + "inbound_agent": { + "actions": [{ + "type": "action_transfer_call", + "config": { + "phone_number": "11234567890" + } + }] + } +}' +``` + + + +#### [Beta] ExternalAction + +`ExternalAction` allows your agent communicate with an External API and include the response as context in the conversation. + +See [External Actions](/external-actions). + +#### [Beta] Warm Transfer + +Allows your agent to conference in another party into the call. + +See [Warm Transfer](/warm-transfer). diff --git a/docs/agents.mdx b/docs/agents.mdx index 347a69da4..6dc809afa 100644 --- a/docs/agents.mdx +++ b/docs/agents.mdx @@ -30,9 +30,5 @@ agent behavior: - `initial_message` controls the agents first utterance. - `initial_message_delay` adds a delay to the initial message from when the call begins - `ask_if_human_present_on_idle` allows the agent to speak when there is more than 4s of silence on the call -- `llm_temperature` controls the behavior of the underlying language model. Values can range from X to Y, with higher - values leading to more consistent replies. - -# Example: creating an agent - -# Example: updating an agent +- `llm_temperature` controls the behavior of the underlying language model. Values can range from 0 to 1, with higher + values leading to more diverse and creative results. Lower values generate more consistent outputs. diff --git a/docs/call-object.mdx b/docs/call-object.mdx deleted file mode 100644 index 1dd1cab4f..000000000 --- a/docs/call-object.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Call Object" -description: "🚧 Under construction" ---- \ No newline at end of file diff --git a/docs/inbound-calls.mdx b/docs/inbound-calls.mdx deleted file mode 100644 index c13b581bf..000000000 --- a/docs/inbound-calls.mdx +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Inbound Calls" -description: "🚧 Under construction" ---- - -# Buying a number - -# Configuring a number diff --git a/docs/mint.json b/docs/mint.json index 45cd2d123..bd97c3dbd 100644 --- a/docs/mint.json +++ b/docs/mint.json @@ -192,10 +192,9 @@ "voices", "webhooks", "actions", + "action-triggers", "conversational-dials", "retrieve-call-data", - "phrase-triggers", - "warm-transfer", "machine-detection", "do-not-call-detection", "bring-your-own-telephony", @@ -206,6 +205,7 @@ "group": "Beta Features", "pages": [ "external-actions", + "warm-transfer", "multilingual", "injecting-context", "ivr-navigation", diff --git a/docs/outbound-calls.mdx b/docs/outbound-calls.mdx deleted file mode 100644 index 58b62757d..000000000 --- a/docs/outbound-calls.mdx +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Outbound Calls" -description: "🚧 Under construction" ---- diff --git a/docs/setting-up-webhook.mdx b/docs/setting-up-webhook.mdx index f3c29a7b7..2505729c5 100644 --- a/docs/setting-up-webhook.mdx +++ b/docs/setting-up-webhook.mdx @@ -34,21 +34,7 @@ update_response = vocode_client.agents.update_agent( ## Sample webhook server In order to process the result of our webhook, we can set up a simple endpoint to receive -webhook messages from Vocode. In this example, our webhook server will listen for `PHONE_CALL_ENDED` -events and send notifications. - -The webhook event body looks like this - -```python -{ - call_id: CALL_ID, - event: -} -``` - -```python -def process_webhook(event): - send_notification(event.call_id) -``` +webhook messages from Vocode. [Webhook.site](https://webhook.site) makes it very easy to set up +a sample endpoint. For a full list of webhook events and other capabilities, check out our guide on [Webhooks](/webhooks). diff --git a/docs/voices.mdx b/docs/voices.mdx index 02b236a44..ea7ecdd2a 100644 --- a/docs/voices.mdx +++ b/docs/voices.mdx @@ -13,12 +13,10 @@ over the voice of your agents. Our current list of supported model providers is: - [Rime](https://rime.ai) - [Azure](https://azure.com) -## Vocode curated voices +## [Coming Soon] Vocode curated voices Choosing a voice isn't easy, so the Vocode team has curated a list of voices that we think are the best -across the different providers and use cases. These can be found here: - -[] +across the different providers and use cases. We also are compatible with any stock voice from our provider list. You can reach us on Slack and we can add it to our voice list. @@ -28,15 +26,46 @@ voice list. For enterprise customers, we can add cloned voices on a case-by-case basis. Please reach out to us on Slack if you'd like to explore custom cloned voices. -## Setting up your voides +## Setting up new voices ### Play.ht voice +```python +voice = vocode_client.voices.create_voice( + request={ + "type": "voice_play_ht", + "voice_id": "voice_id", + "version": "2", + }, +) +``` + ### ElevenLabs voice +```python +voice = vocode_client.voices.create_voice( + request={ + "type": "voice_eleven_labs", + "voice_id": "06oPEcZqPWhZ2IeTcOJc", + "stability": ".2", + "similarity_boost": ".75", + "model_id": "eleven_turbo_v2", + "optimize_streaming_latency": "4", + } +) +``` + ### Rime voice -### Azure voice +```python +voice = vocode_client.voices.create_voice( + request={ + "type": "voice_rime", + "speaker": "amber", + "model_id": "mist", + }, +) +``` ### [Legacy] BYO TTS diff --git a/docs/welcome.mdx b/docs/welcome.mdx index 33d2bd011..e3e41f0bc 100644 --- a/docs/welcome.mdx +++ b/docs/welcome.mdx @@ -1,7 +1,7 @@ --- title: "Vocode" sidebarTitle: "Welcome" -description: "Vocode is an open-source library for building voice-based LLM applications." +description: "Vocode is an open-source library for building voice Agents." --- ## Introduction