Шаблон інтеграції телефонії з 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.
Перед стартом cтворіть середовище у форматі .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
або