Присоединяйтесь к нам! » Регистрация Логин Пароль Забыли пароль?
0
0
Была на сайте: больше года назад

Разработать модуль для отправки/получения viber сообщений из viber-bot

Статус Открытый
Публикация: 10.11.2021 / 15:38

Задание

Стек технологий:

1) PHP (7.3.18) / Laravel (7.10.3)
2) пакет https://caffeinatedpackages.com/guide/packages/modules.html (обязательно!)
3) mysql >= 5.7
4) git
5) строгая типизация
6) SOLID
7) Swagger
8) PHPUnit
9) Ответы сервера должны быть в формате json. Использовать нужно вот этот хелпер https://github.com/dees040/laravel-api-responses


Детали технического задачния:

Задача будет состоять из 3-х крупных блоков:

1) API для фронтенда
2) API сторонних сервисов
3) WebHook для Вайбер
4) Система отправки сообщений



Необходимо создать миграции и модули для таблиц:


viber_user_bots

структура:
id, user_id, bot_name, bot_key, created_at, updated_at

отношения:
viber_user_bots.user_id = users.id | cascade


viber_bot_message_statuses (модель не нужна, но нужен сид)

id, name, created_at, updated_at

Сид: новое, прочитано, отправлено


viber_bot_message_message_types (модель не нужна, но нужен сид)

id, name, created_at, updated_at

Сид: text, picture, video, file, location, contact, sticker, carousel content, url


viber_bot_recipients

id, viber_key, name, avatar, created_at, updated_at

Один пользователь может принадлежать многим рассылкам и многим клиентам!


viber_bot_messages

id, bot_id, message_id, recipient, message, message_type, media (json), status, created_at, updated_at

отношения:

viber_bot_messages.bot_id = viber_user_bots.id | cascade

viber_bot_messages.recipient = viber_bot_recipients.viber_key | cascade

viber_bot_messages.message_type = viber_bot_message_message_types.id | null

viber_bot_messages. status = viber_bot_message_statuses.id | null

В этой модели необходимо описать все отношения и методы для получения библиотечных данных для viber_bot_message_message_types и viber_bot_message_statuses




Необходимо создать контроллеры и эндпоины:

API для фронтенда
1) GET | api/v1/viber-bot/get-unreaded-count - возвращает количество непрочитанных сообщений для текущего авторизованного пользователя. Параметры отсутствуют.

2) GET | api/v1/viber-bot/get-bot-list - возвращает список ботов текущего пользователя и количество непрочитанных сообщений для каждого бота. Параметры отсутствуют.

3) GET | api/v1/viber-bot/get-chats/{bot_id} - возвращает список всех чатов (получателей) в пределе данного бота и количество непрочитанных сообщений.

Параметры:

bot_id - id бота. Необходимо проверить принадлежит ли этот id пользователю который его запрашивает.

4) GET | api/v1/viber-bot/{bot_id}/message/{recipient} - Получение всей переписки с определенным получателем в пределах одного бота. В ответе должны присутствовать не только id типов и статусов, а и сами статусы.

Параметры:

bot_id - id бота. Необходимо проверить принадлежит ли этот id пользователю который его запрашивает.

recipient - ключ получателя

5) POST | api/v1/viber-bot/{bot_id}/message - отправка сообщения получателю.

Параметры:

bot_id - id бота. Необходимо проверить принадлежит ли этот id пользователю который его запрашивает.

recipient - ключ получателя

message - сообщение (опционально, если есть медиа файл)

media - данные об отправляемом файле/ссылке/т.д. (опционально)

message_type - id типа сообщения

6) GET | api/v1/viber-bot/get-message-types - получение списка типов сообщений и их id. Параметры отсутствуют.

7) GET | api/v1/viber-bot/get-message-statuses - получение списка статусов сообщений и их id. Параметры отсутствуют.


API сторонних сервисов

Все точно также как и для "API для фронтенда" только ссылка будет отличаться и изменится с

api/v1 на api/v2



WebHook для Вайбер

Необхожимо разработать динамический метод для viber WebHook.

Эндпоинт ANY api/nsfw/viber-bot/{user_id}/{bot_id}

Где:

user_id - id пользователя который создал бота

bot_id - id бота


Подробно о том что и как будет передаваться на вебхук можно почитать тут - https://developers.viber.com/docs/api/rest-bot-api/#callbacks


Система отправки сообщений

Для отправки сообщений ожидается использование laravel event и очередей.



Доп. требования:

1) На прием кода мы оставляем за собой 3 дня.
2) Будет код-ревью и если что-то не понравится то исполнитель обязуется доработать код.
3) Для работы с viber ожидается создание отдельного сервиса/клиента с описанием интерфейса и dependency injection
4) Покрытие тестами 90-100%
5) Документацию оформить в Swagger

Файлы

Нет загруженных файлов
Нет предложений
Участники проекта (0)
Выберите работников из доступных предложений
Здесь Вы можете размещать дополнительную информацию и новости проекта