Прохождение звонка
Этот перевод выполнен автоматически и ещё не вычитан. Читать английскую версию
Каждый звонок, поступающий в FlySIP, проходит одни и те же пять этапов, независимо от того, идёт ли он с wholesale-транка, зарегистрированного софтфона или IVR (голосовое меню) телефонной карты. Зная порядок этапов, вы понимаете, где искать, когда звонок не проходит: каждый этап отклоняет звонок со своим кодом ответа и оставляет свой след в панели.
Как это работает
Заголовок раздела «Как это работает»- Аутентификация находит аккаунт, которому принадлежит звонок. Коммутатор проверяет учётные данные SIP digest в запросе или сопоставляет удалённый IP-адрес, CLI (номер звонящего), CLD и домены с Authentication Rules (правила аутентификации) всех аккаунтов. Если ни один аккаунт не подходит, звонок отклоняется, а CDR (запись о звонке) не записывается. См. Аутентификация.
- Авторизация проверяет, что за звонок кто-то платит. Начиная с аккаунта, коммутатор поднимается по цепочке клиентов до корневого клиента. Для каждого из них он находит тариф и ставку, соответствующую набранному номеру, сравнивает Balance (баланс) с Credit Limit (кредитный лимит) и вычисляет максимальную длительность, которую может оплатить звонящий. Отсутствующая ставка, ставка с отметкой Forbidden (запрещено) или исчерпанный баланс в любом месте цепочки отклоняют звонок. См. Тарификация и биллинг.
- Маршрутизация строит список подключений вендоров, которые могут принять звонок. Коммутатор берёт Routing Group (группа маршрутизации) аккаунта (или сработавшего правила аутентификации), находит маршруты терминации, префикс которых соответствует набранному номеру, и упорядочивает подключения согласно политике маршрутизации. См. Маршрутизация.
- Перебор (hunting) отправляет INVITE на первое подключение из списка и ждёт. При ответе с ошибкой или тайм-ауте он переходит к следующему подключению, пока одно из них не ответит или список не закончится. Последний код ответа возвращается звонящему.
- Списание средств происходит, когда звонок завершается. Коммутатор тарифицирует звонок один раз для каждой сущности, которой выставляется счёт: аккаунта, каждого клиента в цепочке и вендора. Он обновляет их балансы и записывает по одному CDR на каждую сущность. Именно поэтому один и тот же звонок появляется в Call Records (CDRs) с ценой клиента и в Vendors Call Records с ценой вендора.
Пока звонок идёт, медиа ретранслируется коммутатором, если на подключении включено Use Media Relay (использовать медиа-реле), а Max Session Time (максимальная длительность сеанса) аккаунта ограничивает общую длительность. См. Тайм-ауты звонков.
Ключевые термины
Заголовок раздела «Ключевые термины»- Аккаунт — SIP-идентичность (имя пользователя/пароль или IP), которая принадлежит клиенту, инициирует и принимает звонки и имеет собственный баланс.
- Клиент — сущность, которой выставляют счета; владеет аккаунтами, имеет баланс, кредитный лимит и назначенный тариф.
- Правило аутентификации — правило, которое сопоставляет входящие звонки с аккаунтом по удалённому IP-адресу, CLI, CLD или домену.
- Группа маршрутизации — упорядоченный набор подключений вендоров и маршрутов терминации, по которому маршрутизируется звонок.
- Подключение — SIP-шлюз вендора с собственным хостом, аутентификацией и ёмкостью.
- CDR — запись о звонке, которая создаётся после его завершения: длительность, цена, причина разъединения и сущности, которым выставлен счёт.
Типичные сценарии
Заголовок раздела «Типичные сценарии»Звонок отклоняется с 401 или 403, и CDR нет
Заголовок раздела «Звонок отклоняется с 401 или 403, и CDR нет»Звонок не прошёл аутентификацию. Либо ни одно правило аутентификации не соответствует удалённому IP-адресу и номерам, либо два правила подходят с одинаковым весом, либо учётные данные digest неверны. Проверьте в Tools & Debugs → Test Dialplan с теми же CLI, CLD и удалённым адресом, а также в Vendors → Registrations, если звонящий - зарегистрированное устройство. Звонки, не дошедшие до авторизации, видны только в SIP Logs Viewer.
Аккаунт существует, но звонки на одно направление не проходят
Заголовок раздела «Аккаунт существует, но звонки на одно направление не проходят»Для этого номера не прошла авторизация или маршрутизация. Test Dialplan показывает, что именно: no rate означает, что в тарифе аккаунта или клиента над ним нет префикса для этого номера; no routes означает, что ни один маршрут терминации в группе маршрутизации ему не соответствует. Ставка Forbidden блокирует направление намеренно.
Звонок долго звонит, а потом не проходит
Заголовок раздела «Звонок долго звонит, а потом не проходит»Перебор по очереди пробует каждое подключение. Каждая попытка ждёт 1xx Timeout и 2xx Timeout маршрута и Reply Timeout (тайм-аут ответа) подключения, прежде чем перейти дальше. Сократите тайм-ауты для вендоров, которые не отвечают, или задайте Huntstop (остановить перебор) на маршрутах, где повторная попытка через другое подключение не имеет смысла.
Два CDR для одного звонка
Заголовок раздела «Два CDR для одного звонка»Так и должно быть. Для каждой сущности, которой выставляется счёт, создаётся отдельная запись: клиент аккаунта видит цену клиента, запись вендора показывает себестоимость терминации, а реселлер между ними получает собственную запись. Вместе они показывают маржу на звонке.