Дежурства

Incoming Call Policy (интеграция с Twilio)

Incoming Call Policy позволяет звонить на выделенный номер и дозваниваться до on-call инженеров по правилам эскалации.

Как это работает

flowchart TD A[Звонок на
incoming number] --> B[Twilio принимает вызов] B --> C[Webhook в Status200] C --> D[Приветствие] D --> E[Загрузка правил эскалации] E --> F{Правило 1:
on-call} F -->|Нет ответа| G{Правило 2:
backup} F -->|Ответили| H[Соединение с инженером] G -->|Нет ответа| I{Правило 3:
менеджер} G -->|Ответили| H I -->|Нет ответа| J[Сообщение и сброс] I -->|Ответили| H H --> K[Разговор] K --> L[Завершение] L --> M[Лог вызова]

Маршрутизация (sequence)

sequenceDiagram participant Caller participant Twilio participant Status200 participant OnCallEngineer Caller->>Twilio: Набор номера Twilio->>Status200: POST /incoming-call/voice Status200->>Twilio: TwiML: приветствие Twilio->>Caller: Ожидание соединения... loop Эскалация Status200->>Status200: Следующее правило Status200->>Twilio: TwiML: звонок on-call Twilio->>OnCallEngineer: Вызов alt Ответил OnCallEngineer->>Twilio: Снял трубку Twilio->>Status200: completed Twilio->>Caller: Соединение else Нет ответа Twilio->>Status200: no-answer Status200->>Status200: Следующее правило end end alt Правила исчерпаны Status200->>Twilio: TwiML: никто не доступен Twilio->>Caller: Сообщение Twilio->>Caller: Сброс end

Требования

  • Аккаунт Twilio: Account SID и Auth Token
  • Доступ к self-hosted Status200 (для облачного сценария шаги аналогичны по продукту)

Обзор

  1. Входящий вызов на номер Twilio
  2. Проигрывание приветствия
  3. Обход правил эскалации (команды, расписания, пользователи)
  4. Соединение с первым ответившим on-call
  5. Переход к следующему правилу при отсутствии ответа

При self-hosted вы используете свой Twilio — полный контроль над номерами и биллингом.

Шаг 1: аккаунт Twilio

  1. Регистрация на twilio.com, верификация
  2. Сохранить Account SID и Auth Token

Шаг 2: Call/SMS config в Status200

  1. Dashboard → Project SettingsCall & SMSCustom Call/SMS Config
  2. Create Custom Call/SMS Config
  3. Поля: Name, Description, Twilio Account SID, Twilio Auth Token, Twilio Primary Phone Number (исходящий номер)
  4. Save

Шаг 3: Incoming Call Policy

  1. On-Call DutyIncoming Call PoliciesCreate Incoming Call Policy
  2. Name, DescriptionSave

Шаг 4: привязка Twilio

  1. Откройте политику → Phone Number RoutingStep 2: Link Twilio Configuration
  2. Select Twilio Config → сохранить

Шаг 5: номер телефона

A: существующий номер Twilio

  1. Use Existing Number
  2. Выбор номера из аккаунта → Use This

Если у номера уже был webhook, он будет переназначен на Status200.

B: покупка номера

  1. Buy New Number → страна, опционально area code / цифры в номере → Search
  2. Выбор → Purchase (списание с Twilio, webhook настраивается автоматически)
flowchart LR A[Политика] --> B[Twilio config] B --> C{Номер} C -->|Есть| D[Выбор из Twilio] C -->|Новый| E[Поиск и покупка] D --> F[Webhook] E --> F F --> G[Эскалация] G --> H[Готово]

Шаг 6: правила эскалации

  1. Вкладка Escalation RulesAdd Escalation Rule
  2. Order, Escalate After (seconds), On-Call Schedule / Teams / Users
  3. Добавить цепочку правил

Пример

OrderEscalate AfterЦель
130 sPrimary on-call
230 sSecondary on-call
330 sTeam lead

Шаг 7: голосовые сообщения (опционально)

Settings: Greeting Message, No Answer Message, No One Available Message.

Параметры политики

ПараметрОписаниеПо умолчанию
Greeting MessageTTS при ответе"Please wait while we connect you to the on-call engineer."
No Answer MessageВсе правила без ответа"No one is available. Please try again later."
No One Available MessageНикого в on-call"We're sorry, but no on-call engineer is currently available."
Repeat Policy If No One AnswersНачать цепочку зановоВыкл.
Repeat Policy TimesСколько повторов1

Правило эскалации

ПараметрОписание
OrderПриоритет (1 — выше)
Escalate After SecondsОжидание до следующего шага (по умолчанию 30 с)
On-Call ScheduleКто сейчас on-call
TeamsВсе участники команд
UsersКонкретные пользователи

Логи звонков

On-Call Duty → политика → Call Logs: номер звонящего, статус, кто ответил, длительность, время.

Телефоны пользователей

Чтобы принимать звонки по эскалации, у пользователя должен быть подтверждённый номер:

User SettingsNotification MethodsIncoming Call Numbers → добавить → SMS verification.

Освобождение номера

Phone NumberRelease Number → подтверждение.

Номер возвращается в Twilio и может быть недоступен для повторной покупки.

Устранение неполадок

Звонки не доходят

  • Twilio config привязан к политике
  • Status200 доступен из интернета
  • Верные SID / Token
  • Логи в Twilio Console

Не соединяет с инженерами

  • Верифицированные номера у пользователей
  • Корректные правила и расписания on-call
  • Политика включена

Качество аудио

  • Стабильный канал до сервера
  • Статус Twilio
  • Формат E.164 (+15551234567)

Безопасность

  • Храните Auth Token в секрете
  • HTTPS для Status200
  • Проверка подписи webhook со стороны Twilio
  • Ограничьте список номеров, которым разрешён звонок на линию

Архитектура

graph TB subgraph "Снаружи" A[Звонящий] B[Twilio] end subgraph "Status200" C[Incoming Call API] D[Call Router] E[Escalation Engine] F[БД] end subgraph "On-call" G[Инженер 1] H[Инженер 2] I[Менеджер] end A -->|1| B B -->|2 webhook| C C -->|3 политика| F C -->|4 правила| D D -->|5| E E -->|6 TwiML| B B -->|7| G B -->|8| H B -->|9| I

Поддержка

  1. Логи Twilio Console
  2. Логи сервера Status200
  3. hello@status200.ru