Хак jssip добавляет браузерную SIP-звонилку в интерфейс AlterCPA Pro. Оператор нажимает кнопку Позвонить в заказе — звонок инициируется прямо в браузере через WebRTC. Повторное нажатие завершает звонок.

Подготовка к использованию хака

VPS-сервер

Для работы хака нужен отдельный VPS-сервер с публичным IP.

Требования к серверу:

  • ОС: Ubuntu 22.04 или Debian 12
  • CPU: 2 vCPU
  • RAM: 2 GB

Домен

Для работы телефонии потребуется домен с поддоменом sip, ведущим на ранее приобретённый сервер.

Чтобы создать поддомен перейдите в настройку зон DNS и добавьте запись с названием sip, типом A и IP-адресом сервера:

sip A 12.34.56.78

Установка Asterisk

Для запуска установщика выполните на сервере команду от имени root:

wget https://cpa.st/setup/asterisk.sh && bash asterisk.sh <sip.yourdomain.com> <yourplatformdomain.com> <api-token> 

Обязательно подмените значения из образца на свои:

  • <sip.yourdomain.com> — домен телефонии
  • <yourplatformdomain.com> — домен CRM-панели AlterCPA
  • <api-token> — API-ключ администратора AlterCPA

После успешной установки в консоли будет выведено:

==> Installation complete.
WSS endpoint : wss://sip.yourdomain.com:8089/ws
Operator sync: every 5 min (/var/log/jssip-sync.log)

SIP-провайдер

Для успешной работы провайдер должен соответствовать следующим требованиям:

  • Аккаунт для транка. У провайдера должен быть создан SIP-аккаунт (trunk) с логином и паролем, которые потребуются вам для настройки компании на стороне AlterCPA.
  • Поддержка входящих INVITE от Asterisk. Провайдер должен принимать SIP INVITE с IP-адреса вашего Asterisk-сервера. При необходимости добавьте IP в белый список у провайдера.
  • Кодеки G.711 (ulaw/alaw). Asterisk общается с провайдером по стандартным кодекам G.711. Убедитесь, что провайдер их поддерживает (практически все поддерживают).
  • Формат номера. Asterisk отправляет номер в том виде, в котором он записан в CRM. Если провайдер требует определённый формат, убедитесь, что номера в заказах введены соответственно.

Дополнительные рекомендации:

  • Разрешить SIP UDP от IP Asterisk. Если у провайдера есть IP-фильтрация, добавьте IP Asterisk-сервера в разрешённые.
  • Проверить NAT на стороне провайдера. Некоторые провайдеры требуют явного указания внешнего IP Asterisk. Если звонки устанавливаются, но нет звука — проблема в NAT/медиа-адресе.
  • Выбрать транспорт UDP (не TCP/TLS). Конфиг Asterisk использует UDP для связи с провайдером. Убедитесь, что провайдер принимает UDP.
  • Retry interval. Asterisk повторяет регистрацию у провайдера каждые 60 секунд. При смене настроек обновление займёт не более 60 секунд.

Интерфейс настройки хака

  • Чекбокс Сервер установлен и активен. Включает хак. Ни в коем случае не делайте это заранее (до завершения установки Asterisk), так как при недоступном сервере браузер будет пытаться подключиться и зависать.
  • Домен вашего SIP-сервера — тот же, что указывался при установке Asterisk (sip.yourdomain.com). Без протокола и порта.

Настройка каждой компании

Настройку компании можно осуществить двумя способами:

  1. От имени любого администратора платформы через УправлениеКомпанииПравка нужной компании → раздел "Подключение к серверу телефонии".
  2. От имени администратора конкретной компании через УправлениеНастройки компании → раздел "Подключение к серверу телефонии".

Сама настройка идентична для обоих способов:

  • Включить звонилку в заказах. Активирует SIP-кнопки для операторов компании.
  • SIP-сервер. Домен или IP-адрес вашего SIP-провайдера. Только хост, без sip:// и без порта.
  • Порт. Порт SIP-провайдера. Оставьте пустым, если провайдер использует стандартный (5060).
  • Пользователь. Логин в системе провайдера: обычно номер телефона или имя пользователя.
  • Пароль. Пароль SIP-аккаунта, предоставленный провайдером.

После сохранения настроек Asterisk подхватит их в течение 15 минут.

Важно! По умолчанию, в ссылку вписывается номер телефона в формате tel:+79999999999 и его очень легко оттуда скопировать. Чтобы скрыть телефон от оператора, нужно перейти в настройки компании или команды, и там в поле URL обзвона ввести id:[id] — так вместо ссылки с телефоном будет вставляться ссылка вида id:12345 с номером заказа, а звонилка уже сама сделает запрос к платформе в момент набора номера и получит сам номер в зашифрованном виде.