API clients als plugin toevoegen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

- Ariën  -
Beheerder

- Ariën -

20/10/2023 23:04:15
Quote Anchor link
Momenteel ben ik bezig om met CMS te voorzien van de mogelijkheid om vanuit een wachtrij in de database om berichten via API's naar sociaal media te sturen.

Denk bijvoorbeeld aan Facebook, Twitter/X, BlueSky en Mastodon.

Nu kan je op Packagist diverse API-clients voor Composer binnenhalen, maar nu ben ik benieuwd of er een bepaald systeem bestaat waarmee je dergelijke cliënts als een soort plugin kan installeren, zodat mijn verzend-cronjob niet teveel onderhoud nodig heeft, en dat je met minimale wijzigingen een nieuwe cliënt kan toevoegen. Uiteraard ben ik mij bewust van de autoloader van Composer, maar misschien kan het implementeren hiernaast makkelijker.

En ook vroeg ik me af hoe ik ervoor kan zorgen dat zodra een cliënt faalt dat de rest gewoon uitgevoerd wordt.

Iemand die wat tips heeft?
Gewijzigd op 20/10/2023 23:05:32 door - Ariën -
 
PHP hulp

PHP hulp

21/12/2024 15:39:24
 
Ward van der Put
Moderator

Ward van der Put

21/10/2023 10:33:51
Quote Anchor link
De meer gebruikelijke oplossing is één API aanroepen die een bericht vervolgens doorzet naar meerdere social media-kanalen. Daarvoor kun je API’s gebruiken van Ayrshare, Buffer, Hootsuite, HubSpot, SocialOomph, enzovoort.
Gewijzigd op 21/10/2023 10:34:25 door Ward van der Put
 
- Ariën  -
Beheerder

- Ariën -

21/10/2023 11:17:17
Quote Anchor link
Dat wil ik juist liever niet, want dan ben je weer afhankelijk van een platform die weer betaald is of zijn businessplannen omgooit. Plus dat ik mijn CMS mogelijk ook voor klanten in wil zetten.
 
Ward van der Put
Moderator

Ward van der Put

21/10/2023 11:33:39
Quote Anchor link
Wil je zelf wel betaald worden voor je werk?
 
- Ariën  -
Beheerder

- Ariën -

21/10/2023 11:56:10
Quote Anchor link
Tuurlijk, maar ik wil niet afhankelijk zijn van nog meer derde partijen. Als hun het kunnen voor een hoop klanten van hun, kan ik het ook voor mijn CMS. Echter zoek ik wel een slimme oplossing die onderhoudsvriendelijk is.

Trouwens, je hebt toch geen aandelen, hè? ;-)
Gewijzigd op 21/10/2023 11:56:34 door - Ariën -
 
Ward van der Put
Moderator

Ward van der Put

21/10/2023 12:35:28
Quote Anchor link
Nee, ik heb geen aandelen, wel ervaring. ;)

Het is kiezen uit twee kwaden: je vervangt de afhankelijkheid van één API van één partij door een heleboel kleinere afhankelijkheden van de API's van afzonderlijke social media-kanalen en alle subsystemen om die aan te roepen.
 
- Ariën  -
Beheerder

- Ariën -

21/10/2023 12:54:53
Quote Anchor link
Ik heb eerder met IFTTT gehad dat ik voor een week geen Facebook koppeling kon gebruiken omdat er bij IFTTT wat stuk was. En wat als die partij een bepaalde API niet aanbiedt?

Ik zoek echt een oplossing in eigen beheer.

Ik kan natuurlijk alle api's via Composer inladen en achter elkaar aanroepen in mijn script, maar toch was ik benieuwd of er iets bestaat om nieuwe API's makkelijk in een handomdraai toe te voegen of uit te schakelen. Misschien een bepaald pattern ofzo die ik nog niet ken? Of een deftige OO oplossing?
Gewijzigd op 22/10/2023 11:09:23 door - Ariën -
 
Sem Schilder

Sem Schilder

22/10/2023 12:06:35
Quote Anchor link
Een mogelijke oplossing zou Symfony Notifier Component kunnen zijn, de componenten van Symfony zijn doorgaans ook buiten het framework te gebruiken, al moet je dan wel wat meer goochelen omdat je mogelijk geen Dependency Injection hebt in je project. En heb het voor deze doel einden nog niet zelf gebruikt, kan dus een verkeerde inschatting zijn.

Aantal resources die van belang kunnen zijn:
- https://symfony.com/doc/current/notifier.html
- https://github.com/symfony/twitter-notifier
- https://github.com/symfony/mastodon-notifier

Ik kan zo snel geen Bluesky/Facbeook bridge vinden, die zou je zelf nog kunnen tikken.

Anderzijds zou je je systeem anders op de bovenstaande manier ongeveer willen opzetten zodat je een abstractie laag hebt tussen de interface die jouw applicatie aan roept, en dan naar de downstream api "transports". Zo kun je de boel wel implementatie loos houden, maar kun je er makkelijk ook een bij toevoegen of weg halen.

Wil je minimaal onderhoudt, dan zou ik voor de suggestie van Ward gaan.
 
- Ariën  -
Beheerder

- Ariën -

01/11/2023 23:32:38
Quote Anchor link
Ik ga er naar kijken, maar ik zie voor nu geen heil om een dure betaalde service te nemen gezien ik voor nu de enige klant van mijn CMS ben. Misschien dat ik dit later ga toevoegen als ik meerdere klanten heb.

Maar mocht je een pseudocode opzetje hebben over je idee met de abstractielaag.
Graag.... :-)
 
- Ariën  -
Beheerder

- Ariën -

21/11/2023 16:16:09
Quote Anchor link
Even een update: Ik heb besloten om ingebouwde API's te ondersteunen en de externe API van IFTTT.

Voor de ingebouwde API's maak ik allemaal losse classes of instances vanuit packages aan, zoals voor Mastodon, BlueSky, X en IFTTT.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.