Шаблон интеграции телефонии с CRM
Используйте Custom Telephony Starter Kit для интеграции SendPulse CRM с любым внешним сервисом телефонии. Он содержит готовые маршруты и примеры на PHP с использованием Laravel, Docker для быстрого развертывания и пакет https://packagist.org/packages/sendpulse/market-rest-api для взаимодействия с сервисами SendPulse.
В статье рассмотрим, как настроить и начать работу с Custom Telephony Starter Kit.
Требования к среде
Среда разработки должна поддерживать PHP версии не ниже 8.2, а установка зависимостей может осуществляться через Composer.
Узнайте больше: Introduction to Composer.
Для сохранения состояния и очередей рекомендуется отдельно настроить базу данных. Локальный запуск с контейнерами и базой данных осуществляется через Docker и docker-compose.
Перед началом создайте файл окружения в формате .env в корне проекта и укажите в нем данные приложения Marketplace: SENDPULSE_APP_ID и SENDPULSE_APP_SECRET.
Аутентификация
Для начала создания интеграции необходимо обратиться в службу поддержки SendPulse и передать следующие данные о приложении:
- название приложения,
- идентификатор приложения,
- иконку приложения в формате PNG и размере 64х64 px,
- ссылку на инициализацию звонка.
Пакет sendpulse/market-rest-api инкапсулирует весь процесс авторизации в SendPulse Marketplace.
В проекте уже реализован маршрут /install, который получает code от сервиса маркетплейса и создаёт соответствующий запрос с указанными SENDPULSE_APP_ID и SENDPULSE_APP_SECRET.
В ответ приложение получает client_id и client_secret и обменивает их на токен пользователя приложения.
Узнайте больше: Авторизация пользователя приложения.
Маршрут инициации звонка
С помощью маршрута /custom-telephony/call получите данные от CRM о начале звонка, чтобы передать их в сервис телефонии и начать звонок.
Параметры запроса:
integrationId |
number | Идентификатор интеграции сервиса. |
phone |
string | Телефон в международном формате. |
Пример тела запроса в формате JSON:
{
"integrationId": 123,
"phone": "+380631234567"
}
Успешный ответ сервера возвращает статус 200 OK.
Обработка вебхуков
Получайте запросы от внешнего сервиса телефонии о начале/завершении звонков с набором параметров через маршрут /custom-telephony/webhooks.
Такие параметры могут отличаться в зависимости от сервиса телефонии и включать:
call_id |
string | Уникальный идентификатор звонка. |
event |
string | Тип события: начало или завершение звонка. |
type |
string | Тип звонка: входящий или исходящий. |
phone |
string | Телефон в международном формате. |
duration |
number | Длительность звонка. |
is_success |
boolean | Успешность звонка: был ли он совершён или нет. |
token |
string | Токен для авторизации вебхуков. |
После получения события с типом пропущенного звонка создаётся задача в CRM, а события завершения звонка информируют о закрытии попапа.
Starter Kit и структура проекта
Основные файлы Custom Telephony Starter Kit на PHP размещены в директории app/ и включают директории Models, Controllers, Requests и Repositories.
Основные маршруты размещены в файлах routes/web.php и routes/api.php. API-эндпоинт /api/boards демонстрирует возврат списка досок в формате JSON для тестирования авторизации и базовой работы REST.
Удаление приложения
Во время деинсталляции приложения выполняется POST-запрос на маршрут /uninstall, а также удаляется пользователь приложения.
Узнайте больше: Удаление приложения пользователем.
Обновлено: 16.05.2025
или