> ## Documentation Index
> Fetch the complete documentation index at: https://docs.goguava.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# read_script()

> Speak a verbatim opening statement at the start of a call

<Tabs>
  <Tab title="Python">
    `read_script()` speaks a verbatim opening statement at the very start of a call, before any LLM involvement. Use it for compliance disclosures, scripted greetings, or anything that must be delivered word-for-word.

    ```python signature theme={null}
    def read_script(script: str)
    ```

    ```python example.py theme={null}
    @agent.on_call_start
    def on_call_start(call: guava.Call):
        call.read_script(
            "Hello! This is a courtesy call from Bright Smile Dental. "
            "We're confirming your appointment tomorrow at 2 PM."
        )
        call.set_task(
            "confirm_appointment",
            checklist=[
                guava.Field(key="confirmed", field_type="text",
                            description="Did they confirm the appointment?"),
            ],
        )

    @agent.on_task_complete("confirm_appointment")
    def on_confirmed(call: guava.Call):
        call.hangup()
    ```

    <Note>
      Unlike `Say` in a checklist, `read_script()` fires before any LLM turn and before any task is set. It's the agent's very first words.
    </Note>
  </Tab>

  <Tab title="TypeScript">
    `readScript()` speaks a verbatim opening statement at the very start of a call, before any LLM involvement. Use it for compliance disclosures, scripted greetings, or anything that must be delivered word-for-word.

    ```typescript signature theme={null}
    readScript(script: string): Promise<void>
    ```

    ```typescript example.ts theme={null}
    agent.onCallStart(async (call: guava.Call) => {
      await call.readScript(
        "Hello! This is a courtesy call from Bright Smile Dental. "
        + "We're confirming your appointment tomorrow at 2 PM."
      );
      await call.setTask({
        taskId: "confirm_appointment",
        checklist: [
          guava.Field({
            key: "confirmed",
            fieldType: "text",
            description: "Did they confirm the appointment?",
          }),
        ],
      });
    });

    agent.onTaskComplete("confirm_appointment", async (call) => {
      await call.hangup();
    })
    ```

    <Note>
      Unlike `Say` in a checklist, `readScript()` fires before any LLM turn and before any task is set. It's the agent's very first words.
    </Note>
  </Tab>
</Tabs>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.