Чтобы использовать телефонию TotalVoice в Mavibot, необходимо получить Access Token из панели управления TotalVoice и указать его в настройках интеграции. TotalVoice — это бразильский телефонный сервис, который теперь входит в группу Zenvia.

Бот может соединять сотрудника с клиентом, переводить и завершать звонки, получать записи разговоров и отправлять события звонков в диалог. TotalVoice также предоставляет стоимость каждого звонка.

Получение необходимых данных

  1. Создайте аккаунт Zenvia Voice и пополните баланс.

  1. Войдите в панель управления. В левом нижнем углу главного экрана, рядом с Access Token, нажмите на иконку копирования.

Access Token — это единственный ключ, который предоставляет доступ ко всему вашему аккаунту, включая совершение платных звонков. Не публикуйте его и не передавайте за пределами вашей компании.

Подключение

В настройках телефонии выберите TotalVoice и укажите:

  • Access Token — ключ из панели управления TotalVoice.
  • Номер для клиента — номер, который увидит клиент, в формате +551140028922. Это поле необязательно. Если оставить пустым, будет использоваться номер по умолчанию из вашего аккаунта TotalVoice.


После сохранения на странице подключения появится URL уведомлений. Его нужно добавить в панель управления TotalVoice — см. следующий раздел.

Интеграция подключена. Чтобы отключить её, очистите поле Access Token и сохраните настройки.

Настройка уведомлений

В отличие от других интеграций телефонии, URL уведомлений необходимо настраивать вручную, потому что TotalVoice не предоставляет Mavibot возможности сделать это автоматически.

  1. Скопируйте URL, показанный на странице подключения.

  1. В панели управления TotalVoice откройте Desenvolvedores → Configurações da API.
  2. Вставьте тот же URL во все три поля вебхуков:
    • Status Tempo Real — изменения статуса звонка во время его выполнения;
    • Chamada - Fim — завершение звонка;
    • DID - Fim de Chamada — завершение входящего звонка на ваш номер.

Уведомления могут начать приходить только через 20 минут после сохранения настроек. Это ограничение TotalVoice. Если события не появляются в диалоге сразу после настройки, просто подождите.

Если вы перегенерируете Access Token, URL уведомлений изменится. Сохраните новый токен в Mavibot и обновите URL в панели управления TotalVoice, иначе события звонков перестанут приходить.

Сотрудники

В настройках сотрудника укажите номер TotalVoice сотрудника.


Можно использовать либо внутренний добавочный номер (ramal, обычно 3–4 цифры), либо обычный мобильный номер в формате +5511987654321. Это одна из немногих интеграций, где формат гибкий: если сотрудник не использует внутренний добавочный номер АТС, укажите его мобильный номер.

Звонок с карточки клиента

Рядом с номером телефона клиента в карточке диалога появится кнопка звонка. TotalVoice сначала звонит сотруднику, и только после того, как сотрудник ответит, звонит клиенту.

Такой порядок выбран намеренно: клиент не будет слышать тишину на линии, потому что сотрудник уже подключён, когда телефон клиента начинает звонить.

Функции калькулятора

Звонок сотрудника клиенту

totalvoice_employee_call(client_phone, employee_number, bina, gravar_audio)

Параметры:

  • client_phone — номер телефона клиента в формате +5511987654321. Обязательный.
  • employee_number — номер сотрудника: либо внутренний добавочный, либо мобильный номер. Обязательный.
  • bina — номер, который увидит клиент. Необязательный. Если не указан, используется номер из настроек подключения.
  • gravar_audio — записывать ли звонок. Необязательный. Запись включена по умолчанию.

Перевод звонка

totalvoice_transfer_call(number, call_id, leg)

Параметры:

  • number — номер, на который нужно перевести звонок. Обязательный.
  • call_id — идентификатор звонка. Необязательный. Если не указан, используется последний звонок клиента.
  • leg — какая сторона звонка переводится: destino (клиент, значение по умолчанию) или origem (сотрудник).

Завершение звонка

totalvoice_hangup_call(call_id)

Параметры:

  • call_id — идентификатор звонка. Необязательный. Если не указан, используется последний звонок клиента.

Получение ссылки на запись звонка

totalvoice_get_record_link(call_id)

Обычно ссылка на запись приходит автоматически вместе с событием завершения звонка. Эта функция полезна, если уведомление не было получено или нужна запись более старого звонка.

Параметры:

  • call_id — идентификатор звонка. Необязательный. Если не указан, используется последний звонок клиента.

Обратные вызовы во время звонка

По мере развития звонка в диалог отправляются обратные вызовы в следующем формате:

totalvoice_call_event atendida

Возможные события:

Событие Когда срабатывает
chamando Звонок звонит
preparando Линия подготавливается к соединению
atendida Звонок принят
sem_resposta Нет ответа
ocupado Занято
cancelada Звонок отменён
congestionado Перегрузка сети оператора
falha Звонок не удалось завершить
nao_existe Номер не существует

Названия статусов приходят на португальском языке, потому что это названия статусов, используемые TotalVoice.

Типичный сценарий «нет ответа → отправить сообщение в мессенджере» можно построить, проверив переменную totalvoice_call_answered.

Уведомления о статусе звонка отправляются не чаще одного раза в 2 секунды на звонок. Для очень коротких звонков некоторые промежуточные статусы могут не успеть прийти. Событие завершения звонка отправляется всегда.

Переменные клиента после звонка

Переменная Значение
totalvoice_call_id Идентификатор звонка
totalvoice_call_status Статус звонка по определению TotalVoice
totalvoice_call_answered 1 — звонок был принят, 0 — нет
totalvoice_call_duration Продолжительность звонка в секундах
totalvoice_call_price Стоимость звонка в бразильских реалах
totalvoice_hangup_reason Причина завершения звонка
totalvoice_record_link Ссылка на запись звонка

Продолжительность означает фактическое время разговора, без учёта времени ожидания ответа. Имейте в виду, что TotalVoice рассчитывает тарификацию иначе: оплачиваемое время округляется до следующей полной минуты, поэтому 24-секундный звонок будет тарифицирован как одна минута. Для проверки расходов используйте отчёт о тарификации в панели управления TotalVoice, а не эту переменную.

Записи звонков

Запись настраивается отдельно для каждого звонка и включена по умолчанию. Вы можете отключить её для конкретного звонка с помощью параметра gravar_audio в функции звонка.

Когда звонок завершается, ссылка на запись приходит вместе с событием и сохраняется в переменную totalvoice_record_link. Запрашивать её отдельно не нужно.

Запись звонков регулируется законодательством. В Бразилии она подпадает под требования LGPD: клиент должен быть проинформирован о том, что звонок записывается, и должно быть законное основание для хранения данных. Владелец аккаунта TotalVoice несёт ответственность за соблюдение этих требований.

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

Ошибка Причина / Решение
Звонок не создаётся, сообщение об ошибке на португальском TotalVoice возвращает причину в виде текста. Наиболее частые причины — недостаточный баланс или неверный формат номера телефона.
Звонки работают, но обратные вызовы не появляются в диалоге URL уведомлений не добавлен в панель управления TotalVoice, не добавлен во все три вебхука или не прошло 20 минут с момента настройки.
Раньше всё работало, но события внезапно прекратились Access Token был перегенерирован, что изменило URL уведомлений. Сохраните новый токен в Mavibot и обновите URL в панели управления TotalVoice.
«Номер TotalVoice не указан» В настройках сотрудника отсутствует номер TotalVoice.
Статус nao_existe Номер клиента не существует. Проверьте формат. Бразильские мобильные номера используют +55 + DDD + 9 цифр.
Статус congestionado Проблема с сетью оператора, не связанная с номером клиента. Если проблема сохраняется, обратитесь в поддержку TotalVoice.
Нет ссылки на запись Звонок был создан с отключённой записью или звонок не был принят.