Added

Callr Actions: conference@v1 puts callers in a conference room

The new conference@v1 action puts the caller in a conference room. Callers of your account who join the same room are connected together. It replaces the real-time conference and simple_conference commands, ahead of the end of life of real-time apps on January 1, 2027.

# Simple conference room
- action: conference@v1
  params:
    room: sales
  result: $conference

# PIN-protected room, with prompts
- action: conference@v1
  params:
    room: sales
    welcome:
      tts:
        text: Welcome to the sales conference
    waiting:
      audioFile:
        sid: 'fdsanjkf'
    pin:
      code: '1234'
      prompt:
        tts:
          text: Please enter your PIN code, followed by the pound key
      error:
        tts:
          text: Wrong PIN code
      valid:
        tts:
          text: PIN code accepted
      maxTries: 3
      timeout: 10
    autoLeave:
      enabled: true
      announce:
        tts:
          text: You are the last participant, goodbye
  result: $conference
  • room is required: 1 to 32 letters or digits, not case-sensitive (Sales and sales are the same room). Quote an all-digit room in YAML. The room is created when the first caller joins.
  • Rooms are private to your account and separate from the rooms of real-time apps: a real-time call and a conference@v1 call never meet.
  • The caller can press * at any time to leave the room. The call is not hung up: the next action runs.
  • Every prompt is either an audio file, { audioFile: { sid: 'fdsanjkf' } } (8 lowercase alphanumeric characters, quote it), or a text-to-speech prompt, { tts: { text: 'Welcome', voice: 'en-US-AvaMultilingual' } }, with an optional voice or language. These are the same tts and audioFile parameters as play@v3. No prompt is played by default.
  • welcome is played before the PIN and before joining the room.
  • waiting is played in a loop whenever the caller is alone in the room.
  • userJoin and userLeave are played to the room when someone joins or leaves. They are taken from the caller who opens the room, so use the same values for every caller of a room.
  • pin is optional. Without it, callers join directly.
    • code is required: 1 to 10 digits. Quote it in YAML, so leading zeros are kept. The caller ends the entry with #.
    • prompt is played at each attempt, error after a wrong code (not after a timeout), and valid after the right code.
    • maxTries is the number of attempts (1..10, default 3). timeout is the number of seconds to enter the code at each attempt (1..30, default 10).
  • autoLeave.enabled (default false) makes the caller leave the room automatically when they become the last participant. It applies when someone else leaves, not while the caller waits for the first other participant. autoLeave.announce is played to the caller before leaving.
  • Result: { ok, status, duration }.
    • status is left (the caller pressed *), lastParticipant (auto-leave), pinError (wrong code at every attempt), pinTimeout (no code entered in time), hangup (the caller hung up) or failed (the room could not be joined, for example because it is full, or it ended unexpectedly).
    • ok is true when the caller entered the room: left, lastParticipant, or any other status with a duration above 0 (for example hangup after time in the room).
    • duration is the number of seconds spent in the room, after the welcome and the PIN. It is 0 if the caller never entered.
  • Text-to-speech prompts are billed every time the action runs, like play@v3. Audio file prompts incur no text-to-speech charge.
  • If a parameter is invalid, for example an unknown SID or a bad room, the scenario ends and the error appears in the run log (welcome: audio file not found [fdsanjkf], invalid room: 1 to 32 letters or digits).

Migrating from the real-time conference command

Real-time conferenceconference@v1
idroom
welcomewelcome
waitingwaiting
pin_codepin.code
pin_promptpin.prompt
pin_errorpin.error
pin_validpin.valid
pin_max_triespin.maxTries
pin_waitpin.timeout
user_joinuserJoin
user_leaveuserLeave
auto_leave_when_aloneautoLeave.enabled
auto_leave_announceautoLeave.announce
Real-time resultstatus
LEFT_CONFERENCEleft
LAST_PARTICIPANTlastParticipant
PIN_ERRORpinError
PIN_TIMEOUTpinTimeout
CONFERENCE_CLOSEDnot returned (real-time never returned it either)
  • A media ID becomes { audioFile: { sid: '...' } }, the SID of an audio file of your library.

  • A TTS|VOICE|text string becomes { tts: { text: '...', voice: '...' } }, with a play@v3 voice, for example en-GB-Ryan.

  • Every parameter except room is optional. The real-time command required all of them.

  • simple_conference is room plus autoLeave:

    - action: conference@v1
      params:
        room: sales
        autoLeave:
          enabled: true
  • Real-time and conference@v1 rooms are separate: a real-time caller and a conference@v1 caller never meet, even with the same room name. Move all the calls of a room at the same time.

See the Callr Actions reference.