Kommo + Nextiva: звонки и записи разговоров в карточку сделки

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.

Схема работы:

  1. Входящий или исходящий звонок через Nextiva завершается.
  2. Nextiva отправляет webhook на микросервис с деталями звонка.
  3. Сервис ищет в Kommo контакт/сделку по номеру телефона.
  4. Если найдено - создаёт запись о звонке в хронологии сделки.
  5. Скачивает запись звонка (если включена запись) и прикрепляет к сделке.
  6. Обновляет кастомное поле «Последний контакт» в 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 недели.

Ещё статьи

Все →