Нам потрібно розробити голосовий шлюз SIP для WhatsApp, щоб надсилати деякі дзвінки з нашої АТС.
Шлюз повинен мати можливість передавати вхідні голосові виклики через SIP і перенаправляти їх через WhatsApp для завершення виклику на номер WhatsApp пункту призначення.
- Ми надамо номер телефону/номера телефонів і зображення для облікового запису WhatsApp.
- Проект повинен бути багатоканальним. Я хотів би мати можливість запускати кілька викликів (ви можете запустити кілька облікових записів WhatsApp з кількома номерами телефонів або використовувати лише один обліковий запис WhatsApp з кількома викликами.)
- Платформа розробки/операційна система не має значення. ви можете використовувати Asterix, Freeswitch, FreePBX проти...
- Реалізація повинна повертати правильні коди помилок виклику на серверну частину SIP, наприклад CALL SUCCESS (200 OK), BUSY (486 Busy Here), UNAVAILABLE (503 Service Unavailable) і т. д., щоб спробувати інші раунди на іншому SIP-комутаторі.
Функціональний потік
1) Дзвінки з АТС/sip-шлюзу будуть перенаправлятися на шлюз WhatsApp.
2) Шлюз WhatsApp перетворює SIP у протокол WhatsApp.
3) Якщо необхідно, в шлюзі WhatsApp є багатоканальні облікові записи WhatsApp, і ваш код вибирає будь-який з доступних облікових записів для здійснення дзвінка. Ви можете запустити кілька облікових записів/каналів WhatsApp з кількома телефонними номерами в шлюзі WhatsApp або використовувати лише один обліковий запис/канал WhatsApp (якщо можна здійснювати кілька викликів з одного облікового запису) для кількох викликів одночасно.
4) якщо всі облікові записи WhatsApp зайняті, надішліть назад код помилки «600 Busy Everywhere» або «503 Service Unavailable».
5) якщо номер не використовується в WhatsApp, якщо для викликаного номера немає прив'язаної облікової записи WhatsApp. тоді він надсилає помилку «503 Служба недоступна», і ми перенаправляємося на інші шлюзи.
6) Викликаний номер, зазначений у заголовку виклику, буде перевірений шлюзом WhatsApp. Якщо з цим номером пов'язана обліковий запис WhatsApp і номер знаходиться в мережі, виклик у WhatsApp буде завершено.
7) Якщо дзвінок успішно завершено або викликаний номер не відповідає, то дзвінок буде роз'єднано.
Система повинна повернути відповідний код помилки sip, якщо виклик зайнятий або немає відповіді.
9) вихідний код повинен бути наданий нам з поясненнями для цілей налагодження в майбутньому.