Kommo + Nextiva: звонки и записи разговоров в карточку сделки
Nextiva - американская UCaaS-платформа (Unified Communications as a Service) с функциями VoIP, видеоконференций и командного чата. Для продаж важна интеграция с CRM: каждый звонок должен автоматически отображаться в карточке сделки с записью, длительностью и результатом. Нативной интеграции Nextiva с Kommo нет, но Nextiva Flow API и webhook-система позволяют построить полноценную кастомную интеграцию.
Это стандартная задача из категории кастомных интеграций с телефонией Kommo: принцип схож с JustCall, Dialpad или CloudTalk, но API Nextiva имеет свои особенности.
Что не работает через Zapier
Nextiva есть в Zapier, но интеграция с CRM через Zap имеет принципиальные ограничения.
Проблема маппинга звонков. Zapier может создать новую задачу при завершении звонка, но не может «найти» нужную сделку в Kommo по номеру телефона и привязать запись звонка к ней. Результат: либо всё идёт в одну универсальную задачу, либо теряется.
Проблема записей. Nextiva хранит записи звонков по ссылке, которая требует авторизации. Zapier не умеет скачать файл и передать его в Kommo как вложение. Менеджер не видит запись прямо в CRM - нужно идти в Nextiva.
Проблема аналитики. Статистика разговора (продолжительность, кто инициировал, тип звонка, результат) не передаётся через базовые Zap-триггеры.
Кастомная интеграция через Nextiva API решает все три проблемы.
Архитектура интеграции
Nextiva Flow API - программный интерфейс для управления звонками и подписки на события. Аутентификация через OAuth 2.0 client credentials.
Схема работы:
- Входящий или исходящий звонок через Nextiva завершается.
- Nextiva отправляет webhook на микросервис с деталями звонка.
- Сервис ищет в Kommo контакт/сделку по номеру телефона.
- Если найдено - создаёт запись о звонке в хронологии сделки.
- Скачивает запись звонка (если включена запись) и прикрепляет к сделке.
- Обновляет кастомное поле «Последний контакт» в Kommo.
import requests
from datetime import datetime
NEXTIVA_TOKEN_URL = "https://api.nextiva.com/v1/oauth/token"
NEXTIVA_CALLS_URL = "https://api.nextiva.com/v1/calls"
def get_nextiva_token(client_id: str, client_secret: str) -> str:
resp = requests.post(NEXTIVA_TOKEN_URL, data={
"grant_type": "client_credentials",
"client_id": client_id,
"client_secret": client_secret,
})
resp.raise_for_status()
return resp.json()["access_token"]
def get_call_recording(access_token: str, call_id: str) -> bytes | None:
"""Получаем бинарный файл записи звонка."""
headers = {"Authorization": f"Bearer {access_token}"}
resp = requests.get(
f"{NEXTIVA_CALLS_URL}/{call_id}/recording",
headers=headers
)
if resp.status_code == 404:
return None # Запись не включена
resp.raise_for_status()
return resp.content
def process_nextiva_call_webhook(payload: dict, kommo_client, nextiva_token: str):
"""
Обрабатываем завершённый звонок Nextiva.
"""
call_id = payload["call_id"]
phone = payload["remote_phone_number"]
direction = payload["direction"] # inbound | outbound
duration_sec = payload["duration_seconds"]
start_time = payload["start_time"]
# Ищем контакт в Kommo по номеру телефона
contact = kommo_client.search_contact_by_phone(phone)
if not contact:
# Создаём новый контакт если не найден
contact = kommo_client.create_contact(phone=phone)
# Ищем активную сделку у контакта
lead_id = kommo_client.get_active_lead_for_contact(contact["id"])
# Формируем текст заметки о звонке
direction_label = "Входящий" if direction == "inbound" else "Исходящий"
note_text = (
f"{direction_label} звонок Nextiva\n"
f"Продолжительность: {duration_sec // 60} мин {duration_sec % 60} сек\n"
f"Время: {start_time}\n"
f"ID звонка: {call_id}"
)
# Добавляем заметку к сделке
kommo_client.add_call_note(
entity_id=lead_id or contact["id"],
entity_type="leads" if lead_id else "contacts",
text=note_text,
phone=phone,
duration=duration_sec,
direction=direction
)
# Прикрепляем запись звонка
recording = get_call_recording(nextiva_token, call_id)
if recording:
kommo_client.attach_file(
entity_id=lead_id or contact["id"],
filename=f"nextiva_call_{call_id}.mp3",
content=recording
)
Пошаговая реализация
Шаг 1 - доступ к Nextiva API. Nextiva Flow API доступен на планах Enterprise и выше. Свяжитесь с аккаунт-менеджером Nextiva для активации API-доступа. Получаете Client ID и Client Secret.
Шаг 2 - настройка вебхуков Nextiva. В Nextiva Admin Portal настраиваете Call Event Webhooks. Выбираете события: call.completed, call.missed. Указываете URL вашего микросервиса.
Шаг 3 - нормализация номеров. Номера телефонов в Nextiva и Kommo могут иметь разный формат (+1-555-xxx vs 15555xx vs 555-xxx). Используйте библиотеку phonenumbers для нормализации к E.164 перед поиском.
import phonenumbers
def normalize_phone(raw: str, default_region: str = "US") -> str:
try:
parsed = phonenumbers.parse(raw, default_region)
return phonenumbers.format_number(parsed, phonenumbers.PhoneNumberFormat.E164)
except Exception:
return raw.strip()
Шаг 4 - маппинг типов звонков в Kommo. Kommo поддерживает тип заметки call с полями direction, duration, phone. Используйте именно этот тип - он отображается в хронологии как звонок, а не как текстовая заметка.
Шаг 5 - включение записи звонков в Nextiva. В настройках Nextiva включите Call Recording для нужных пользователей или очередей. Записи хранятся 30/90 дней в зависимости от плана - учитывайте это при проектировании.
Шаг 6 - исходящие звонки из Kommo. Для Click-to-Call из Kommo можно добавить кнопку, которая инициирует исходящий звонок через Nextiva API. Это опциональный шаг, но значительно ускоряет работу менеджеров.
Реальный кейс: SaaS с US-продажами
SaaS-компания, 25 сотрудников, команда продаж 6 человек. Все звонки через Nextiva, CRM - Kommo. До интеграции менеджеры вручную записывали в Kommo итог каждого звонка. Записи звонков хранились в Nextiva, никто их не слушал повторно - слишком неудобно переключаться.
После интеграции: каждый звонок автоматически появляется в хронологии сделки. Руководитель продаж раз в неделю прослушивает записи проблемных сделок прямо из Kommo. Новые менеджеры используют записи лучших звонков для обучения.
Цифры: время на ручной ввод данных о звонках сократилось с 45 минут/день до нуля. Процент сделок с полной хронологией звонков вырос с 60% до 100%.
Для кого подходит
Интеграция Kommo с Nextiva актуальна для:
- Компаний на US-рынке, уже использующих Nextiva как корпоративную телефонию
- Команд продаж с высоким объёмом исходящих звонков (50+ в день)
- Руководителей, которым важно прослушивание звонков для коучинга
- Организаций с требованиями к хранению записей разговоров (compliance)
Если вы выбираете между VoIP-системами, посмотрите также разборы интеграций Kommo + JustCall и Kommo + Dialpad - они тоже ориентированы на US-рынок и имеют более зрелые API для интеграции с CRM.
Часто задаваемые вопросы
Nextiva поддерживает AI-транскрибацию звонков?
Nextiva предлагает функцию Voice Analytics с транскрибацией на планах Enterprise. Транскрипт доступен через API через 2-5 минут после завершения звонка. В интеграции можно настроить отдельный polling или webhook для получения транскрипта и добавления его в заметку к сделке Kommo.
Что происходит с пропущенными звонками?
Nextiva отправляет webhook call.missed с номером звонившего. Интеграция создаёт в Kommo задачу «Перезвонить» с назначением на ответственного менеджера и дедлайном - например, через 2 часа. Если контакт уже есть в Kommo, задача создаётся с привязкой к его активной сделке.
Как работает интеграция при очередях звонков?
Nextiva поддерживает call queues - когда звонок обрабатывает несколько операторов. Webhook содержит информацию о том, какой оператор фактически ответил. Интеграция использует это поле для корректной привязки звонка к сделке нужного менеджера.
Можно ли интегрировать Nextiva Team Collaboration (чат) с Kommo?
Nextiva имеет отдельное API для командного чата. Технически возможно синхронизировать упоминания клиентов в Nextiva-чате с Kommo, но это более сложный сценарий. Обычно начинают с интеграции звонков - она даёт наибольшую ценность.
Поддерживается ли мультилокальность (несколько офисов)?
Да. Nextiva Enterprise поддерживает несколько локаций с разными номерами. В интеграции можно настроить маппинг: звонки из локации «Нью-Йорк» идут к менеджерам NY-тима в Kommo, из «Лос-Анджелес» - к LA-тиму.
Следующий шаг
Если вам нужна интеграция Kommo с Nextiva - опишите задачу команде Exceltic.dev. Разберём ваш сценарий звонков, очереди и требования к записям. Стандартная интеграция с привязкой звонков к сделкам занимает 2 недели.