Skip to main content
The OpenTable Reservation Agent is an agent template for restaurants that use OpenTable as their reservation system. It answers the phone, works out what the caller wants, checks whether a table is genuinely free, and texts the caller a pre-filled OpenTable link they tap to confirm. It also answers questions about the restaurant, notes allergies and occasions for the team, and hands callers to a person when it should.
The agent does not book the table. Telzino is not an OpenTable partner, so no third party can write a reservation into OpenTable’s book. The agent verifies availability and sends a deep link with the date, time and party size already filled in — the caller taps Confirm on OpenTable’s own page. Nothing is held until they do, and the agent is instructed never to imply otherwise.

What the agent can do

Collects the date, time, party size and the caller’s first name from ordinary speech — “tomorrow”, “around 7”, “four of us”, “two adults and a baby”. Everything is resolved in the restaurant’s own timezone. It reads the details back once before checking availability, and a correction changes only the detail that was wrong rather than restarting.
Queries OpenTable through StayAPI for the exact time requested. If that time is free, it moves straight to sending the link. If the check errors or times out, the agent says the booking system is not responding and offers a handoff — it never guesses and never sends a link for a table nobody checked.
When the requested time is taken, the agent offers at most three nearby times in one sentence — “I don’t have 7 o’clock, but I could do 6:45, 7:15, or 7:30.” Times are ordered by how close they are to what was asked for, filtered to the restaurant’s serving hours, and spoken in clock order. After two rounds it offers a different day or a callback instead of reading out the whole book.The agent can only send a link for a time that actually came back from OpenTable. If the model produces anything else, the send is refused.
When a date is completely booked, the agent can text the restaurant’s OpenTable page so the caller can join the waitlist or watch for a cancellation.OpenTable publishes no addressable waitlist URL, so this is the restaurant’s own page rather than a waitlist entry. The agent is explicitly instructed to say so — it is not adding anyone to a list and cannot report a position on one.
The agent cannot change or cancel a reservation. Asked to, it offers to text OpenTable’s manage-reservation page, and tells the caller they will need to sign in with the phone number or email they booked with — the agent cannot pre-fill that.
Menu questions are answered from the restaurant’s published OpenTable menu. General questions — parking, dress code, whether it is kid-friendly — are answered from the agent’s knowledge base when one is attached.
A mentioned allergy, dietary requirement, birthday or anniversary is recorded against the call for the restaurant to see.
Parties above the maximum, private-dining enquiries, complaints and anything the agent cannot handle are routed to a person, using the destination configured for that reason.

What it deliberately does not do

These are limits of what OpenTable exposes publicly, not gaps in configuration. The agent is built to be honest about each one rather than to guess.
Why the dietary answer is cautious. OpenTable publishes no dietary tags at all — a menu item carries a name, an optional description and a price. Across a sample of real menus fewer than half the items had any description. So the agent will only confirm a dietary property a menu states explicitly, and never infers one from ingredients. Someone asking whether a dish is vegan may have an allergy, and a confident guess is the one answer that could hurt them.

Before you start

1

The template must be enabled for your account

OpenTable Reservation Agent is governed by Feature Administration, which can be set per Partner and per Reseller. It is available by default and has to be explicitly locked to hide it. Where it has been locked for your tenant, the template does not appear in the agent catalog at all — it is absent rather than greyed out.
2

The restaurant must be on OpenTable

You need the restaurant’s OpenTable page address, e.g. https://www.opentable.com/r/your-restaurant. Open the restaurant’s page on opentable.com and copy it from the browser.
3

Text messaging must be connected

The booking link is delivered by SMS, so the agent needs a text-message carrier connected on its Integrations page. For Twilio that is the organization’s Twilio connection (shared by all of its agents) plus this agent’s own From Number in its Twilio SMS dialog. Without a carrier the agent still answers calls, checks availability and answers questions — but it will not offer to text anything, because it cannot.Which carrier it uses is not chosen per restaurant. Telzino supports Twilio and NetSapiens, and the one in force is shown read-only as Text Message Carrier in the restaurant settings.
There is no screen for assigning a carrier yet. Until an assignment is made, Text Message Carrier reads Not assigned and the agent simply sends over whichever carrier is connected to it on the Integrations page — which is the right answer whenever only one is connected. An assignment can be written through the API as sms_provider.

Creating the agent

1

Start a new agent

In the Connect app, create a new agent and choose OpenTable Reservation Agent from the template list.
2

Name the restaurant

This is how the agent refers to the restaurant on the phone and in the text message.
3

Paste the OpenTable page address

Telzino resolves it to the restaurant’s OpenTable ID. If the address cannot be resolved you will see an inline error and can correct it.You can skip this and add it later, but the agent cannot check availability until it is set — it will answer calls and offer to take a message instead.
4

Set the greeting

How the agent answers the phone.
This template deliberately has no system-prompt field. The agent’s conversation logic is generated from the restaurant’s settings, so changing the hours or the party-size limits changes how the agent behaves on the very next call. A prompt typed by hand would be frozen at whatever the settings were the day it was written.

Settings

Open the agent and find the restaurant settings section.
These settings live in both apps, but not identically. Look up, Text Message Wording and Text Message Carrier exist only in the Connect editor. In the dashboard’s Agent Settings you can edit the same values, but there is no resolver — editing the OpenTable page address there clears the restaurant ID and there is no way to resolve a new one, so do the initial link-up (and any address change) in Connect.

Restaurant identity

The restaurant’s name and location are not typed in — they come back from the lookup and are shown beneath the address once it resolves, along with the neighbourhood, metro area and country. Those confirm you linked the right branch when a chain has several with the same name.
Editing the OpenTable page address clears the resolved restaurant ID, and it must be resolved again. Without this, an edited address would leave the agent checking the previous restaurant’s availability and texting a link that books a table there.

Hours

Set the serving windows for each day. A day with no window is treated as closed. Windows that run past midnight are supported — a bar restaurant serving 17:00–01:00 is correctly treated as open at half past midnight. Hours drive three behaviours:
  • After-hours greeting. A caller reaching a closed restaurant is told so and offered a booking for another time, then the normal flow continues unchanged.
  • Last seating. The agent will not offer a table after the kitchen closes.
  • Alternative times. Slots outside the serving window are filtered out before anything is offered.
If you set no hours at all, the agent never tells a caller the restaurant is closed. An empty form is not evidence, and “we’re closed right now” is a bad thing to say to someone standing outside an open door.

Reservation limits

These are enforced by the agent itself, not only by its instructions. A request that breaks one of them cannot produce a booking link, because a tappable link for a table the restaurant will not honour is worse than a refusal — the caller believes they have a booking and turns up.

Text messages

Turning the check off is a latency and UX preference. There is no cost to leaving it on — the lookup is funded by Telzino, not billed to your account.

Handing over to a person

Transfers use your agent’s ordinary Transfer Rules, the same field every agent type uses — there is no separate setting for reservation agents. Write a rule per situation and the agent follows it, so a complaint and a large party can reach different people. The situations worth writing a rule for:
With Transfer Rules empty, the agent will not offer a transfer at all. It offers to take a message instead. Offering to put someone through with nowhere to send them strands them mid-sentence, so the agent is built not to.
You can also set an events team number, which the agent can text to a caller rather than dial — R7.3’s “I can connect you now, or text you their number.”

Put me through words

Say any of these and the agent offers a person immediately, without finishing what it was doing. It defaults to manager, complaint, sick, allergic reaction and urgent; set your own list to replace it. Matching is on whole words, so “the dessert was sickeningly good” does not trigger a transfer.

Other settings

Message wording is chosen, not written. Carriers register sample content against your account, so the same copy has to be used across every restaurant — free-form editing would hold up delivery. You can see each template’s exact text in the picker.

When a text cannot get through

If the caller has a landline and no mobile, withholds their number, declines the text, or the send keeps failing, the agent works down a ladder. It skips anything unavailable and never offers the same option twice.
1

Email the link

Offered only when Offer to email the booking link instead is switched on. The agent reads the address back before sending.
2

Ask the restaurant to call back

Offered only when Offer to have the restaurant call them back is switched on. The agent takes a number and roughly when suits, and saves the reservation details already collected alongside the request so whoever rings back is not starting from nothing. The landline they are calling from is fine for a callback, even though it could not take the text.
3

Transfer to the team

Offered only while the restaurant is open and Transfer Rules are configured.
4

Take a message

The last option, and the one that needs nothing configured.
This rung is conversational only: the agent takes the details and they appear in the call transcript and summary. It does not yet create a voicemail, notify a voicemail destination, or record itself as its own outcome in the reservation report — so a call that ends here is counted as an abandoned call rather than a message taken.

Seeing how it is doing

Reports → Reservation Agent in the dashboard shows what actually happened on the calls: how many callers left with a way to book, where the rest dropped off, whether the texts arrived, and how busy the OpenTable lookups were. Two numbers there are worth understanding:
  • Booking rate counts callers who left with a booking link — texted or emailed — or who took an alternative time. A call handed to a person is not counted, even though they may well have booked: the agent did not do it.
  • Text delivery is measured over messages the carrier has resolved. Messages still in flight are shown separately rather than counted as failures.
A delivery failure rate above 5% raises a warning on that page. It usually means a carrier is filtering the traffic rather than that anything is broken in the agent.
The failure rate counts both messages the carrier rejected on the way in and ones it accepted and then failed to deliver. NetSapiens does not report delivery receipts back to Telzino, so messages sent over NetSapiens stay in the “still in flight” column and no delivery rate is shown for them.
The same figures are available over the API — see Reservation Analytics.

Frequently asked questions

Check the agent has a text-message carrier connected (Text Message Carrier in the restaurant settings shows which one), and check the delivery status recorded against the call. The most common causes are a number that cannot receive SMS and carrier filtering of unregistered A2P traffic.
The OpenTable page address has not been resolved to a restaurant ID. Re-open the agent’s settings and resolve it.
Around four in ten restaurants publish no structured menu on OpenTable — they link out to their own site instead. When there is no menu to read, the agent says it does not have it in front of it and offers to connect the caller to the team. It will not read a web address out or invent dishes. Put the details in the agent’s knowledge base to have them answered.
No. Payments are a separate capability — see Taking payments over the phone.
The template is English-only today.