# Bus timetable (GTFS)

The bus timetable gives the agent your stops, lines, departures and fares, so it can answer questions such as "is there a bus from the port to the village on Sunday?" or "what is the last bus back?". The agent says only the times in your timetable. It never guesses a departure.

Open **Integrations - Catalogue - GTFS - Connect**. There are no credentials: Connect turns the timetable on for the company and opens the **Timetable** editor. Later, open it from the GTFS card on **Connected**. One timetable is shared by the whole company. Then turn on the **Fleet management** tool on each agent that should answer bus questions.

The editor keeps a draft and a published copy. Calls use only the published copy. Nothing you import or edit reaches callers until you press **Publish**.

  <ShotPlaceholder
    src="/assets/integrations/gtfs.png"
    name="gtfs-connect"
    alt="Timetable editor with the Network tab open next to the map of stops and lines"
    capture="Integrations - GTFS - Timetable editor, Network tab, with an imported network on the map."
  />

## What you need before you start

- Your timetable: a GTFS zip if your operator already has one, or the stops, lines, departure times and fares to type in.
- The names callers actually use for each stop, such as the village name, the square or "the port". These become spoken aliases.
- The date ranges when the schedule changes (summer, winter) and the public holidays you run a Sunday or no service on.

## What you enter

The timetable has no credentials. The **Network details** on the **Network** tab describe the operator:

- **Agency** — The operator's name, for example your ΚΤΕΛ.
- **Agency website** — Your public website. Google Maps needs it if you publish the feed there.
- **Hub city** — The main town of the network. **Find stops on the map** uses it to place stops that have no position.
- **Timezone** — The timezone of the departure times. "Today" and "the next bus" on a call are worked out in this timezone.

The rest of the timetable lives on the editor's tabs: **Stops**, **Lines** (with each line's **Departures**), **Seasons** and **Holidays**.

## First setup

1. **Turn on the timetable**

   **Integrations - Catalogue - GTFS - Connect**. The **Timetable** editor opens on **Network**.

2. **Load the network**

   With a GTFS zip, use **Import GTFS zip** on **Network**. The zip replaces the draft and calls keep the last published copy. Without a zip, fill in **Network details** and build the network by hand in the next steps.

3. **Check the stops**

   On **Stops**, add any missing stop with **Add stop** and add **Spoken aliases** for the names callers use. Group stops under an **Area**. Mark a large area, such as a whole district, as a **Wide area**: when a caller names it, the agent lists its stops and asks which one. Every stop needs a position on the map. Open a line, then **Stop positions** - **Find stops on the map**, or place a single stop by hand.

4. **Check the lines**

   On **Lines**, open each line or create one with **New line**. Put the stops in order and set **Boarding** for each stop, the minutes from the first stop and the **Fare** from the first stop. **Return line** creates the reverse line, without fares. Then open **Departures** and add every start time with its days and season.

5. **Set seasons and holidays**

   On **Seasons**, add the date ranges when the schedule changes. Departures without a season run all year. On **Holidays**, use **Add Greek holidays** for the year and set **Runs as** to the schedule those days follow (usually Sunday) or to **No buses**.

6. **Fix the issues, then publish**

   On **Network**, work through **Issues**: missing times, times that go backwards, lines without departures, a season that has ended. Then press **Publish**. Calls now use this timetable.

7. **Turn on the agent tool**

   **My Agents - agent - Skills - Tools & Workflows** - turn on **Fleet management**. Turn on **Load stops when the call starts** if callers usually name a stop right away; leave it off for a large network. Turn on **Send SMS** too if the agent should text the route link. **Save**.

8. **Prove it**

   Call the agent and ask for a bus between two stops on a named day. The agent gives the departure and arrival times from your published timetable, the fare when you set one, and offers to text you the route map.

After every later change, press **Publish** again. While there are unpublished changes, the editor says so and offers **Publish** or **Discard changes**.

## What the agent can do

- Find a stop from the name the caller uses, including spoken aliases, and ask which stop when a wide area matches several.
- Give the departures between two stops for a date: for today only buses still to leave, for another day the whole day, with arrival times.
- Tell the caller the next bus first and the last bus of the day.
- Quote the fare between two stops when the line has fares, and say when it has none rather than borrow another fare.
- Plan a trip with one change when there is no direct bus: where to get off, where to change and which bus to take next.
- Look ahead up to 21 days when there is no bus on the asked day, and say so plainly when there is none.
- Apply your holidays: on a holiday it uses the schedule you set under **Runs as**.
- Send a public link with the route on a map, every pass time and the fare, by SMS during a call or in the reply in chat.

The agent has no ferry or train schedules. If a caller names a ferry time, it compares that with the bus arrival time only.

## Troubleshooting

**The agent says there is no timetable or cannot answer bus questions**

Nothing is published yet, or the **Fleet management** tool is off. Open the **Timetable**, press **Publish**, and check that **Fleet management** is on and the agent is saved.

**The agent still gives the old times after I edited the timetable**

The edits are in the draft. Calls and Google Maps use the last published copy until you press **Publish**.

**Import GTFS zip fails**

The zip must contain stops.txt, routes.txt, trips.txt and stop_times.txt at least. Re-export the feed from your scheduling system, or build the missing parts by hand in the editor. A zip without fare files imports, but shows **No fares in the zip** under **Issues**.

**The agent does not recognise the place the caller names**

Add the caller's word for it as a **Spoken alias** on the stop, or put the stop under an **Area** with that name, then **Publish**.

## Next Steps

[Get an integration working](https://docs.voicelogica.ai/integrations/) - the company connection and the agent tool.  
[Tools & Workflows](https://docs.voicelogica.ai/agent-configuration/built-in-tools/) - turning tools on per agent.  
[Viva.com](https://docs.voicelogica.ai/integrations/payments-logistics/viva/) - payment links by SMS.
