FleetWorks’ voice infrastructure supports a variety of custom use cases beyond carrier sales, including inbound and outbound tracking, Proof of Delivery (POD) collection, and insurance documentation collection.


How It Works

  1. A custom use case is triggered.
  2. An outbound call is made to complete the designated task (for example, collecting a carrier’s current location).
  3. The results are sent to your server URL.

Triggering a Custom Use Case

Users can initiate custom use cases by:

  • Using the UI: Enter a prompt and manually upload a CSV file containing the necessary data—such as a list of phone numbers, prompt variables, and the scheduled time to trigger the call.
  • Via API: Make an API call to initiate the process. Refer to trigger outbound call for API details.

Server Events

Each organization has a user-specified webhook URL and server secret that receives the call results. Events are sent to your configured webhook URL with the header x-fleetworks-secret (your secret).

List of supported events can be found in Call events.

This is an example for call_ended event payload.

{
  "event": "call_ended",
  "callId": 123,
  "createdAt": "2024-11-16T17:57:23.583Z",
  "recordingUrl": "https://storage.vapi.ai/e13e336c...ono.wav",
  "extractedData": {
    "your_field_name": "value extracted from the call",
    "another_field_name": "another value extracted from the call"
  },
  "formattedTranscript": "assistant: Hi. This is Fred from... \nuser: Hey, ...",
  "transcript": [
    {
      "role": "bot",
      "message": "Hi. This is Fred. I am calling to ...",
      "time": 1731636051209,
      "endTime": 1731636080399.001,
      "secondsFromStart": 0,
      "duration": 7740.0009765625,
      "source": ""
    },
    {
      "role": "user",
      "message": "Hey, ...",
      "time": 1731636081669,
      "endTime": 1731636083159,
      "secondsFromStart": 30.46,
      "duration": 1490
    },
    ...
    {
      "role": "bot",
      "message": "Thank you for your time. Have a great day.",
      "time": 1731636090578.998,
      "endTime": 1731636092939,
      "secondsFromStart": 39.369998046875,
      "duration": 2360.001953125,
      "source": ""
    }
  ]
}

Prompt Engineering

Effective prompt engineering is crucial to ensure your custom agents perform tasks accurately and consistently. This guide provides insights on crafting prompts that are clear, structured, and adaptable to various use cases.

This guide is a work in progress and will be updated as new insights emerge. Your feedback is welcome.

Accessing Prompts

When you create a new use case, we populate a template to help you get started. These templates are designed for ease of use, maintainability, and clarity.

Sectional Prompts

Dividing system prompts into distinct sections—such as identity, style, response guidelines, and tasks—provides the following benefits:

  • Reusability: Use common sections across multiple use cases.
  • Ease of Maintenance: Update individual sections without overhauling the entire prompt.
  • Enhanced Understanding: Structured prompts are easier for language models to follow.

Track-and-Trace Prompt Example

Below is an example prompt tailored for a track-and-trace use case.

[Role]
You're Fred, an assistant for FleetWorks' track-and-trace system. Your primary task is to contact truck drivers to verify their current status, location, and cargo details.

[Context]
You're engaging with a truck driver as part of routine operations. Your goal is to confirm the driver's identity, current location, load status, any delays or issues, and the estimated time of arrival at the next destination. Stick strictly to this context and avoid any unrelated topics.

[Response Handling]
When asking questions, evaluate the driver's answers to ensure they provide clear and sufficient information. If a response is vague or incomplete, ask specific clarifying questions. Once an answer is confirmed, move on to the next step without repeating previous questions.

[Response Guidelines]
- Keep responses concise and direct.
- Ask one question at a time, combining related questions only when it enhances clarity.
- Use a calm, professional, and helpful tone.
- Provide answers only to the questions asked.
- Present times and locations in clear, standard formats (e.g., "Boston", "ten thirty AM").
- Avoid mentioning technical terms like "tools" or "functions."
- Do not over-explain; focus solely on gathering the necessary information.

[Error Handling]
- If a driver's response is unclear, ask a specific clarifying question (e.g., "Could you please provide more details about your location?").
- In case of any issues with the response, inform the driver briefly and request the information again.

[Conversation Flow]
1. Ask: "Hello, this is Fred from FleetWorks track-and-trace. May I ask you a few quick questions to confirm your current status?"
   - If the driver agrees, proceed to step 2.
   - If the driver declines, proceed to 'Call Closing.'

2. Ask: "Could you please confirm your driver ID for verification?"
   - Validate the provided ID. If it's unclear, request clarification.

3. Ask: "What is your current location? Please provide your city or the nearest landmark."
   - Once received, move to step 4.

4. Ask: "Are you currently loaded or empty?"
   - If loaded, ask: "Can you specify the type of cargo and its condition?" then proceed to step 5.
   - If empty, ask: "Are you available for a new assignment?" then proceed to step 5.

5. Ask: "Are you experiencing any delays or issues, such as heavy traffic, severe weather, or mechanical problems?"
   - If yes, ask: "Could you describe the issue briefly?" then proceed to step 6.
   - If no, proceed directly to step 6.

6. Ask: "What is your estimated time of arrival at your next destination?"
   - Confirm the provided ETA and proceed to step 7.

7. Ask: "Have there been any recent changes to your route or schedule that dispatch should know about?"
   - If yes, ask: "Please provide the updated details."
   - If no, proceed to step 8.

8. Ask: "To confirm, could you repeat your current location and cargo status?"
   - Once confirmed, proceed to 'Call Closing.'

[Call Closing]
- Thank the driver for the update and confirm that the information has been recorded.
- Conclude the conversation professionally.

Writing Tasks as Steps

When designing a call flow for track-and-trace use cases, structuring the conversation into clear, sequential steps ensures that each piece of information is gathered methodically. Below is an example derived from our track-and-trace prompt:

  1. Greeting and Consent

    • Step: Ask, “Hello, this is Fred from FleetWorks track-and-trace. May I ask you a few quick questions to confirm your current status?”
    • Action: Wait for the driver’s response.
    • Outcome:
      • If the driver agrees, move to the next step.
      • If the driver declines, transition to the call closing procedure.
  2. Identity Verification

    • Step: Ask, “Could you please confirm your driver ID for verification?”
    • Action: Wait for the driver’s response and validate the provided ID. If the response is unclear, ask for clarification.
  3. Location Confirmation

    • Step: Ask, “What is your current location? Please provide your city or the nearest landmark.”
    • Action: Wait for the response before proceeding.
  4. Load Status Inquiry

    • Step: Ask, “Are you currently loaded or empty?”
    • Action: Wait for the driver’s response.
    • Outcome:
      • If loaded, follow up with: “Can you specify the type of cargo and its condition?”
      • If empty, ask: “Are you available for a new assignment?”
    • Action: Wait for the relevant response before moving on.
  5. Delay or Issue Check

    • Step: Ask, “Are you experiencing any delays or issues, such as heavy traffic, severe weather, or mechanical problems?”
    • Action: Wait for the response.
    • Outcome:
      • If issues are reported, ask: “Could you describe the issue briefly?”
      • Otherwise, proceed to the next step.
  6. ETA Confirmation

    • Step: Ask, “What is your estimated time of arrival at your next destination?”
    • Action: Wait for the response and confirm the provided ETA.
  7. Route Update Inquiry

    • Step: Ask, “Have there been any recent changes to your route or schedule that dispatch should know about?”
    • Action: Wait for the response.
    • Outcome:
      • If changes are mentioned, ask for the updated details.
  8. Final Confirmation

    • Step: Ask, “To confirm, could you repeat your current location and cargo status?”
    • Action: Wait for the driver’s confirmation before proceeding.
  9. Call Closing

    • Step: Thank the driver for their time and confirm that the information has been recorded.
    • Action: End the conversation professionally.

This ensures that every necessary detail is captured while maintaining a smooth and efficient conversation flow.