PHPackages                             sierratecnologia/integrations - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. sierratecnologia/integrations

ActiveLibrary

sierratecnologia/integrations
=============================

Integrations de Serviços

0.4.3(4y ago)12037MITPHPPHP ^7.2|^8.0CI failing

Since Jul 20Pushed 6mo ago1 watchersCompare

[ Source](https://github.com/SierraTecnologia/integrations)[ Packagist](https://packagist.org/packages/sierratecnologia/integrations)[ Docs](https://sierratecnologia.com/packages/integrations/)[ Fund](https://ricasolucoes.com.br/open-source/support-us)[ GitHub Sponsors](https://github.com/ricasolucoes)[ RSS](/packages/sierratecnologia-integrations/feed)WikiDiscussions stable Synced today

READMEChangelogDependencies (19)Versions (18)Used By (7)

SierraTecnologia Integrations
=============================

[](#sierratecnologia-integrations)

**SierraTecnologia Integrations** integration services integrations and providers for users required by various SierraTecnologia packages. Validator functionality, and basic controller included out-of-the-box.

[![Packagist](https://camo.githubusercontent.com/0e596fc08e43930092dccd1a8d49e1798159c462878850f3a980128e3976a020/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f7369657272617465636e6f6c6f6769612f696e746567726174696f6e732e7376673f6c6162656c3d5061636b6167697374267374796c653d666c61742d737175617265)](https://packagist.org/packages/sierratecnologia/integrations)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/4c3c26b0113514e70dabd2738121f0ecb05062e0e29555a065b9ed1dc4391ad5/68747470733a2f2f696d672e736869656c64732e696f2f7363727574696e697a65722f672f7369657272617465636e6f6c6f6769612f696e746567726174696f6e732e7376673f6c6162656c3d5363727574696e697a6572267374796c653d666c61742d737175617265)](https://scrutinizer-ci.com/g/sierratecnologia/integrations/)[![Travis](https://camo.githubusercontent.com/ce7bd544e86e9850133fb215508b4bd27eec365662d3ad3003cbe47f8899610e/68747470733a2f2f696d672e736869656c64732e696f2f7472617669732f7369657272617465636e6f6c6f6769612f696e746567726174696f6e732e7376673f6c6162656c3d5472617669734349267374796c653d666c61742d737175617265)](https://travis-ci.org/sierratecnologia/integrations)[![StyleCI](https://camo.githubusercontent.com/4191b35d1ee7b0da2e27c1fe2bd612ce3dfe1673a64523a762f99155892e2142/68747470733a2f2f7374796c6563692e696f2f7265706f732f36303936383838302f736869656c64)](https://styleci.io/repos/60968880)[![License](https://camo.githubusercontent.com/1c30c207ea30089723f4d52a2541aa295fdf211b5bcf78730e59865559e5415e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f7369657272617465636e6f6c6f6769612f696e746567726174696f6e732e7376673f6c6162656c3d4c6963656e7365267374796c653d666c61742d737175617265)](https://github.com/sierratecnologia/integrations/blob/master/LICENSE)[![GitHub Workflow Status](https://camo.githubusercontent.com/47b3bdbca7403e524958151ddb07074999c9e8c7471c09ab872e4e5fceae7185/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f7369657272617465636e6f6c6f6769612f696e746567726174696f6e732f63692e796d6c3f6272616e63683d6d6173746572266c6162656c3d4349267374796c653d666c61742d737175617265)](https://github.com/sierratecnologia/integrations/actions)

---

📚 Índice
--------

[](#-índice)

- [Introdução](#-introdu%C3%A7%C3%A3o)
- [Instalação](#-instala%C3%A7%C3%A3o)
- [Arquitetura e Estrutura Interna](#-arquitetura-e-estrutura-interna)
- [Principais Componentes](#-principais-componentes)
- [Conectores Disponíveis](#-conectores-dispon%C3%ADveis)
- [Uso Prático](#-uso-pr%C3%A1tico)
- [Integração com o Ecossistema SierraTecnologia](#-integra%C3%A7%C3%A3o-com-o-ecossistema-sierratecnologia)
- [Extensão e Customização](#-extens%C3%A3o-e-customiza%C3%A7%C3%A3o)
- [Exemplos Reais](#-exemplos-reais)
- [Ferramentas de Qualidade](#-ferramentas-de-qualidade)
- [Guia de Contribuição](#-guia-de-contribui%C3%A7%C3%A3o)

---

🚀 Introdução
------------

[](#-introdução)

### O que é o SierraTecnologia Integrations?

[](#o-que-é-o-sierratecnologia-integrations)

O **SierraTecnologia Integrations** é um pacote Laravel robusto e extensível que fornece abstrações e implementações padronizadas para integração com diversos serviços externos, incluindo APIs de terceiros, provedores de pagamento, sistemas de notificações, ERPs, CRMs, plataformas de mídia social e muito mais.

### Objetivo e Filosofia do Projeto

[](#objetivo-e-filosofia-do-projeto)

Este projeto foi desenvolvido com os seguintes princípios em mente:

- **Desacoplamento**: Separação clara entre a lógica de negócio e as integrações externas
- **Reutilização**: Componentes modulares que podem ser utilizados em diferentes contextos
- **Extensibilidade**: Arquitetura que facilita a adição de novos conectores
- **Padronização**: Interface consistente para comunicação com serviços diversos
- **Manutenibilidade**: Código limpo, documentado e testável

### Tipos de Integrações Suportadas

[](#tipos-de-integrações-suportadas)

O pacote oferece suporte para diversos tipos de integrações, incluindo:

- **Redes Sociais**: Facebook, Instagram, Twitter, LinkedIn, Pinterest, Tumblr, SnapChat, YouTube
- **Armazenamento em Nuvem**: Dropbox, Google Drive, Amazon S3
- **Gerenciamento de Projetos**: Jira, Trello, GitLab, GitHub, Bitbucket
- **CRM e Marketing**: Hubspot, Pipedrive, ExactSales, Zoho
- **Comunicação**: Gmail, Slack, ZohoMail
- **Outros**: Cloudflare, Sentry, Wakatime, TestLink, Wikipedia

### Importância dentro do Ecossistema SierraTecnologia

[](#importância-dentro-do-ecossistema-sierratecnologia)

O **Integrations** é um componente fundamental do ecossistema SierraTecnologia / Rica Soluções, fornecendo a camada de comunicação entre os sistemas internos e o mundo externo. Ele permite que outros pacotes do ecossistema (como MediaManager, Market, CMS, Locaravel) se comuniquem com serviços externos de forma consistente e confiável.

---

📦 Instalação
------------

[](#-instalação)

### Requisitos Mínimos

[](#requisitos-mínimos)

- PHP 8.0 ou superior (recomendado PHP 8.2+)
- Laravel 9.x ou 10.x
- Composer 2.x
- Extensões PHP: `curl`, `json`, `mbstring`, `openssl`

### Instalação via Composer

[](#instalação-via-composer)

```
composer require sierratecnologia/integrations
```

### Publicação de Configurações

[](#publicação-de-configurações)

Após a instalação, publique os arquivos de configuração:

```
# Publicar configurações
php artisan vendor:publish --tag=integrations-config

# Publicar views (opcional)
php artisan vendor:publish --tag=integrations-views

# Publicar traduções (opcional)
php artisan vendor:publish --tag=integrations-lang
```

Isso criará os seguintes arquivos:

- `config/integrations.php` - Configurações gerais do pacote
- `config/services.php` - Credenciais dos serviços externos (será mesclado com o existente)

### Configuração do Service Provider

[](#configuração-do-service-provider)

O pacote utiliza **auto-discovery** do Laravel, então o `IntegrationsProvider` será registrado automaticamente. Caso necessite registrar manualmente, adicione ao arquivo `config/app.php`:

```
'providers' => [
    // ...
    Integrations\IntegrationsProvider::class,
],

'aliases' => [
    // ...
    'Integrations' => Integrations\Facades\Integrations::class,
],
```

### Executar Migrations

[](#executar-migrations)

Execute as migrations para criar as tabelas necessárias:

```
php artisan migrate
```

---

🏗 Arquitetura e Estrutura Interna
---------------------------------

[](#-arquitetura-e-estrutura-interna)

### Estrutura de Pastas e Namespaces

[](#estrutura-de-pastas-e-namespaces)

```
src/
├── Cacheable/              # Traits para cache de Eloquent
├── Connectors/             # Conectores para serviços externos
│   ├── Amazon/
│   ├── Facebook/
│   ├── Instagram/
│   ├── Jira/
│   ├── ... (39 conectores)
│   └── Connector.php       # Classe base abstrata
├── Console/                # Comandos Artisan
├── Contracts/              # Contratos e abstrações
├── Exceptions/             # Exceções customizadas
├── Facades/                # Facades Laravel
├── Factory/                # Factories para criação de objetos
├── Http/                   # Controllers e Middleware
│   ├── Admin/
│   └── Webhook/
├── Interfaces/             # Interfaces do pacote
├── Models/                 # Eloquent Models
│   ├── Integration.php
│   ├── Provider.php
│   ├── Service.php
│   └── Token.php
├── Observers/              # Eloquent Observers
├── Resources/              # API Resources
├── Scopes/                 # Query Scopes
├── Services/               # Camada de serviços
│   ├── IntegrationsService.php
│   └── LdapService.php
├── Tasks/                  # Tasks e Jobs
├── Tools/                  # Ferramentas auxiliares
├── Traits/                 # Traits reutilizáveis
├── Integrations.php        # Classe principal
└── IntegrationsProvider.php # Service Provider

```

### Padrões de Arquitetura Adotados

[](#padrões-de-arquitetura-adotados)

#### 1. **Service Layer Pattern**

[](#1-service-layer-pattern)

O pacote utiliza uma camada de serviços para encapsular a lógica de negócio:

```
use Integrations\Services\IntegrationsService;

class IntegrationsService
{
    public function __construct(array $config)
    {
        // Inicialização do serviço
    }

    // Métodos de negócio
}
```

#### 2. **Adapter Pattern**

[](#2-adapter-pattern)

Cada conector implementa um adaptador para o serviço específico:

```
namespace Integrations\Connectors\Facebook;

use Integrations\Connectors\Connector;

class Facebook extends Connector
{
    protected static $ID = 'facebook';

    protected function getConnection($token = false)
    {
        // Implementação específica do Facebook
    }
}
```

#### 3. **Facade Pattern**

[](#3-facade-pattern)

Acesso simplificado através de Facades:

```
use Integrations;

$data = Integrations::getData();
```

### Fluxo de Comunicação Entre Camadas

[](#fluxo-de-comunicação-entre-camadas)

```
┌─────────────────────────────────────────────────────┐
│ Application Layer (Controllers, Commands)           │
└───────────────────┬─────────────────────────────────┘
                    │
                    ↓
┌─────────────────────────────────────────────────────┐
│ Service Layer (IntegrationsService)                 │
└───────────────────┬─────────────────────────────────┘
                    │
                    ↓
┌─────────────────────────────────────────────────────┐
│ Connector Layer (Facebook, Instagram, etc.)         │
└───────────────────┬─────────────────────────────────┘
                    │
                    ↓
┌─────────────────────────────────────────────────────┐
│ External Service (API REST, OAuth, etc.)            │
└─────────────────────────────────────────────────────┘

```

### Convenções e Boas Práticas de Desacoplamento

[](#convenções-e-boas-práticas-de-desacoplamento)

- **Injeção de Dependência**: Todas as dependências são injetadas via construtor
- **Interfaces e Contratos**: Uso de interfaces para definir contratos
- **Models Eloquent**: Encapsulamento de dados e relacionamentos
- **Token-based Authentication**: Gestão centralizada de tokens de autenticação
- **Logging Dedicado**: Canal de log específico para integrations (`sitec-integrations.log`)

---

🧩 Principais Componentes
------------------------

[](#-principais-componentes)

### 1. Classe Base `Connector`

[](#1-classe-base-connector)

Localização: `src/Connectors/Connector.php`

Classe abstrata que define a interface comum para todos os conectores:

```
