Интеграция CNAM

Справочник CNAM REST API

Запрашивайте имя вызывающего абонента по HTTPS и обрабатывайте результат, списание и ошибки.

Выберите поведение поиска

УровеньПубличная цена за запросЧто он делает
Starter0,0026 $Использует собственные и кэшированные сведения об именах вызывающих абонентов.
Standard0,0037 $Выполняет сетевой поиск в реальном времени для каждого запроса.
Mixed0,004 $Сначала пытается выполнить поиск в реальном времени, а если имя не найдено, переходит к данным уровня Starter.

Поведение поиска определяется выбранной услугой; Mixed не является поиском с приоритетом кэша. Перед использованием в рабочей среде проверьте тариф, назначенный вашей учётной записи. Имя вызывающего абонента не является подтверждением личности или права владения.

Отправьте аутентифицированный запрос поиска

Конечная точка: GET https://api.multitel.net/v3/cnam/NUMBER. Используйте международный формат из одних цифр с кодом страны, без знаков препинания и без ведущего плюса. Выполняйте запрос с сервера вашего приложения, используя утверждённые учётные данные API.

curl --fail-with-body \
  --user "$MULTITEL_API_USERNAME:$MULTITEL_API_PASSWORD" \
  --header "Accept: application/json" \
  "https://api.multitel.net/v3/cnam/12025550123"

Передайте две переменные окружения через серверную конфигурацию секретов. Выданный bearer-токен можно использовать как альтернативу, только если такой доступ включён и соблюдены его ограничения по IP-адресу источника. Никогда не помещайте секрет API в публичный клиентский пакет браузера.

Руководство по аутентификации API и первому запросу

Прочитайте ответ JSON

Этот ответ приведён для иллюстрации. Возвращаемое имя и списанная сумма зависят от поиска и выбранной услуги.

{
  "status": {
    "code": 200,
    "msg": ""
  },
  "response": {
    "number": "12025550123",
    "name": "EXAMPLE CALLER",
    "cost": "0.004",
    "balance": "24.9960"
  }
}
status.code
Код результата приложения; перед сравнением с 200 приведите строковые и числовые значения к единому виду.
status.msg
Сопутствующее сообщение об итоге или отказе.
response.number
Запрошенный номер.
response.name
Доступное имя вызывающего абонента.
response.cost
Сумма, указанная как списанная за этот запрос; рассматривайте её как десятичное число.
response.balance
Сообщаемый баланс учётной записи, если он присутствует.

Результаты без имени и ошибки

Успешный запрос не гарантирует полезного имени вызывающего абонента. Предусмотрите обработку пустого имени, номера, возвращённого вместо имени, и отклонённого поиска. Код приложения 403 может означать недостаток средств, запрещённую покупку или номер, для которого нет результата; изучите сообщение.

Проверяйте и HTTP-статус, и status в JSON, прежде чем обращаться к response.name. При ошибке объект ответа может отсутствовать. Отсутствие имени не должно мешать маршрутизации обычного вызова.

Тарификация, повторные запросы и отличие от обновления идентификатора вызывающего абонента

Новый поиск может повлечь плату за запрос. В документации этих интерфейсов поиска не описан ключ идемпотентности, поэтому новая попытка может стать вторым платным запросом. При сбоях транспорта или службы ограничивайте число повторов и делайте паузы между ними, сначала устраняйте ошибки учётной записи и сверяйте сообщаемые списания за запросы. Кэшируйте данные только на срок, подходящий для вашего приложения: данные об именах вызывающих абонентов могут меняться.

Поиск CNAM считывает имя. Он не меняет имя, отображаемое при ваших исходящих вызовах. Обновление имени вызывающего абонента в LIDB — отдельная операция со своими полями, авторизацией, ценой и обработкой.