ExoVoIPDeveloper guide

IVR menus

An IVR menu greets the caller with a prompt and routes the call based on the key pressed. Scopes ivrs:read / ivrs:write.

Creating a menu

curl -s -X POST https://centralino.exovoip.it/api/v1/ivrs \
  -H "X-API-Key: $EXOPBX_API_KEY" -H "Content-Type: application/json" \
  -d '{"name":"Menu principale","greetingPromptId":31,"timeoutS":7,"maxRetries":3,
       "options":[{"digit":"1","label":"Vendite","destination":{"type":"queue","queueId":5}},
                  {"digit":"2","label":"Assistenza","destination":{"type":"ring_group","ringGroupId":3}}],
       "timeoutDestination":{"type":"extension","extensionId":12}}'
FieldDescription
greetingPromptId / greetingTextWelcome prompt (recorded or from text)
options[]Keys 0–9, *, # with label and destination
timeoutS, maxRetriesTime to wait for a choice and number of repetitions
timeoutDestination, invalidDestinationWhere the call goes with no choice or an invalid key
directDial, directDialExtensionsDirect dialing of extensions during the prompt
calendarIdThe menu follows a calendar (outside business hours: closed destination)

A destination can be another menu: this is how multi-level menus are built. To put the menu into service, set it as the destination of a number or an inbound route ({ "type": "ivr", "ivrId": 2 }).

POST /v1/ivrs/:id/greeting-text suggests the welcome prompt text based on the configured options.

Endpoints

RequestScopeSDK method
GET /v1/ivrsivrs:readivrs.list()
POST /v1/ivrsivrs:writeivrs.create()
GET /v1/ivrs/:idivrs:readivrs.get()
PATCH /v1/ivrs/:idivrs:writeivrs.update()
DELETE /v1/ivrs/:idivrs:writeivrs.delete()
POST /v1/ivrs/:id/greeting-textivrs:readivrs.greetingText() · py: ivrs.greeting_text()