[BASH] [PHP] Messanger

Odpowiedz Nowy wątek
2019-05-18 19:56

Rejestracja: 1 rok temu

Ostatnio: 2 miesiące temu

0

Witam wszystkich,

Mam problem z podłączeniem się do API facebooka, a konkretnie messangera. Chciałbym napisać rozwiązanie (tylko na mój użytek), które wysyłałoby do moich znajomych różne ciekawe informacje w formie wiadomości na ich konta (3 osoby). Napisałem już rozwiązanie w postaci skryptu PHP łączonego z BASH, ale nie mogę wysłąć wyniku gdyż nie potrafię się połączyć z kontem na fb.
Korzystam z dokumentacji:
tej
oraz biblioteki
tej

wygenerowałem tokena poprzez :

curl -X GET "https://graph.facebook.com/oauth/access_token?client_id={moj id}&client_secret={moj sekret}&grant_type=client_credentials"

wprowadziłem go w kod oraz id wszystkich "twarzoksiążek" moich znajomych i za przeproszeniem "dupa"

Może ktoś krok po kroku wytłumaczyć jak wygenerować konto na fb + messenger żeby prawidłowo komunikowało się z moim rozwiązaniem na zewnątrz?

kod który napisałem do biblioteki powyższej:

<?php
require 'vendor/autoload.php';

use Madewithlove\FacebookMessengerPlatform\Api\HttpClient;
use Madewithlove\FacebookMessengerPlatform\Api\Client;

$httpClient = new HttpClient('moj token');
$client = new Client($httpClient);

$client->send()->message('id kolegi', 'hello world');

błędy które dostaje ( z różnych czasów po wielu próbach)

#pierwszy
Parameter error: You cannot send messages to this id
#innym razem
An active access token must be used to query information about the current user.
#jak zmieniłem typ app na desktop
The request is invalid because the app is configured as a desktop app
edytowany 3x, ostatnio: Sebastian Starczewski, 2019-05-18 19:59

Pozostało 580 znaków

2019-05-19 13:11

Rejestracja: 1 rok temu

Ostatnio: 2 miesiące temu

0

Podbijam temat i dopisuje informacje. Wiem z dokumentacji że mogę skomunikować messengera jeżeli założę konto developer fb, stronę fb, oraz webhook (jest możliwość poprzez glitch). Chciałbym wysyłać wiadomości przez messengera poprzez rozwiązanie działające na moim serwerze stacjonarnym. Sieć w której działa mój serwer stacjonarny nie udostępnia żadnego portu publicznego. Czy w ogóle jest szansa na takie działanie? Jeżeli nie ma szansy to może istnieje jakaś inna usługa w której byłbym w stanie wysyłać komunikaty na dołączone konta tak żeby wiadomości pojawiały się w smartfonie. Nie chciałbym tego robić poprzez skrzynkę mail. Wiem że webhook jest potrzebny głównie po to żeby odczytywać wiadomości wysyłane na moje konto, ale to nie jest mi w ogóle potrzebne, gdyż ja chciałbym wiadomości wysyłać (rozwiązanie nie było by botem do konwersacji).

Pozostało 580 znaków

2019-05-20 00:31

Rejestracja: 1 rok temu

Ostatnio: 1 miesiąc temu

0

może proxy i ajax nasłuchujący?
Sprawdził bym już gotowe rozwiązanie czy działa. np wordpress z odpowiednią wtyczką, a potem przeanalizował kod

Pozostało 580 znaków

2019-05-21 00:52

Rejestracja: 1 rok temu

Ostatnio: 11 miesięcy temu

1

Idz do app w developers.facebook
idz do Settings => Basic
Poszukaj App ID (I secret), upewnij sie ze uzywasz tego konta na produkcji a nie na testing (sandbox)
idz do Messenger => Settings z lewej w menu
Wybierz strony wysylki od
I srwdz czy token masz ten sam jaki uzywasz na produkcji powyzej

edytowany 2x, ostatnio: fporzo, 2019-05-21 00:58

Pozostało 580 znaków

2019-05-21 10:10

Rejestracja: 1 rok temu

Ostatnio: 2 miesiące temu

0
fporzo napisał(a):

Idz do app w developers.facebook
idz do Settings => Basic
Poszukaj App ID (I secret), upewnij sie ze uzywasz tego konta na produkcji a nie na testing (sandbox)
idz do Messenger => Settings z lewej w menu
Wybierz strony wysylki od
I srwdz czy token masz ten sam jaki uzywasz na produkcji powyzej

Dzięki kolego za poradę. Oczywiście zanim napisałem ten temat to zrobiłem wszystko to co napisałeś powyżej. Oczywiście używam konta na produkcji i jako że nie udostępniam portu z mojej sieci to webhooka mam na Glitch-u, a nie ma moim serwerze lokalnym i tutaj pojawia się moja wątpliwość bo message text chciałbym wysyłać z mojego serwera lokalnego. Message text zawierałby logi z usługi którą mam na serwerze lokalnym a nie na Glitch-u, pytanie jak miałbym skonstruować CURL-a bo w dokumentacji jest tylko token w url-u (i tutaj moja wątpliwość to chyba jest za mało jeśli miałbym się autoryzować, no bo gdzie ma być client id i secret). Tymczasem webhook url podałem ten na Glitchu i teraz bladego pojęcia nie mam jak połączyć te dwie rzeczy (o ile się da to wykonać), mój serwer local i Glitch.

edytowany 1x, ostatnio: Sebastian Starczewski, 2019-05-21 10:10

Pozostało 580 znaków

2019-05-21 11:45

Rejestracja: 1 rok temu

Ostatnio: 11 miesięcy temu

0

Jeżeli webhooka masz na jakims Glitchu to jak rozumiem tam przychodzą informacje od kogoś kto wysyla ci coś na mesengerze. Nie wiem co za bardzo chcesz zrobic jesli np wpisac w mesenger: "Pokaz logi" i to idzie na glitch to stamtad musi wyslac na twoj lokalny serwer info ze cos chce pobrac i lokalny serwer wysyla do glitcha odpowiedz a ten skrypt stamtad do fb na twoj mesenger.

Jesli chesz wysylac tylko z lokalnego serwera no to zrob tak samo autoryzacje jak w pliku na glichu autoryzacje i wyslij wiaodmosc bezposrednio z lokalnego serwera. Tylko msusiz wylaczyc ograniczenie domeny albo dodac ze ze wszystkich akceptujesz. Tak ja to rozumiem.

Bo w sumie w czym masz wlasciwie trudnosc ? aaaa i czy zrobiles sobie przedluzonyt token ? to tak z ciekawosci

Pozostało 580 znaków

2019-05-21 12:06

Rejestracja: 1 rok temu

Ostatnio: 2 miesiące temu

0
fporzo napisał(a):

Jeżeli webhooka masz na jakims Glitchu to jak rozumiem tam przychodzą informacje od kogoś kto wysyla ci coś na mesengerze. Nie wiem co za bardzo chcesz zrobic jesli np wpisac w mesenger: "Pokaz logi" i to idzie na glitch to stamtad musi wyslac na twoj lokalny serwer info ze cos chce pobrac i lokalny serwer wysyla do glitcha odpowiedz a ten skrypt stamtad do fb na twoj mesenger.

Jesli chesz wysylac tylko z lokalnego serwera no to zrob tak samo autoryzacje jak w pliku na glichu autoryzacje i wyslij wiaodmosc bezposrednio z lokalnego serwera. Tylko msusiz wylaczyc ograniczenie domeny albo dodac ze ze wszystkich akceptujesz. Tak ja to rozumiem.

Bo w sumie w czym masz wlasciwie trudnosc ? aaaa i czy zrobiles sobie przedluzonyt token ? to tak z ciekawosci

Ok to od początku, może opiszę jakie kroki wykonałem.

Krok 1.
Rejestracja konta i nowej aplikacji w https://developers.facebook.com/apps
Krok 2.
Dodanie do zakładki products Messenger
Krok 3.
Messenger > Settings > Access Tokens > Create New Page (założenie nowej strony), następnie wybranie tej strony (Select a Page) w celu wygenerowania nowego tokena
Krok 4.
Rejestracja Webhook poprzez dokumentacje (tutaj) według kroku Option 3: Remix It on Glitch (bo mój local server nie publikuje żadnego portu na którym mógłbym zarejestrować Webhook)
Krok 5.
Rejestracja webhook na moim panelu aplikacji (https://developers.facebook.com/apps) ścieżka Messenger > Settings > Webhook
Url z Glitcha, oczywiście w .env dopisałem cały PAGE_ACCESS_TOKEN i VERIFY_TOKEN, zaznaczone events: messages, messaging_postbacks
Krok 6. Próba wykonania CURL z mojego local server wg dokumentacji:

curl -X POST -H "Content-Type: application/json" -d '{
  "recipient":{
    "id":"<PSID>"
  },
  "message":{
    "text":"hello, world!"
  }
}' "https://graph.facebook.com/v2.6/me/messages?access_token=<PAGE_ACCESS_TOKEN>"

Oczywiście podaję swój (długi) PAGE_ACCESS_TOKEN oraz próbowałem, różne PSID (swój i inne, przykładowy z dokumentacji też) i otrzymuję najczęściej error Parameter error: You cannot send messages to this id. Pytanie czy nie powinienem czegoś jeszcze zrobić pomiędzy krokiem 5 i 6.

edytowany 1x, ostatnio: Sebastian Starczewski, 2019-05-21 12:07
Jezeli ten uzytkownik nie polubil twojej strony ktora zalozyles to nie mozesz do niego wyslac wiadomosci uzywajac tej strony. Dlatego FB dziwi sie ze uzywasz tego ID odbiorcy a nie ma go na liscie. tak ? daj link do strony na fb ja ja polubie i wyslesz do mnie wiadomosc - fporzo 2019-05-21 12:41
Dobrze polubiłem stronę i nadal nie mogę wysyłać żadnych wiadomości do siebie ani innych użytkowników którzy też polubili stronę. Ręcznie jestem w stanie konwersacje prowadzić, ale nie przez API. - Sebastian Starczewski 2019-05-21 16:31

Pozostało 580 znaków

2019-05-21 16:59

Rejestracja: 1 rok temu

Ostatnio: 2 miesiące temu

0

Zauważyłem ważną informację w dokumentacji

Breaking Change Notice - Page-level Subscription Messaging Feature Requirement
Starting April 30, 2019, a Page must be approved with the Page-level Subscription Messaging feature in order to use the Broadcast API. Apps were granted the subscription messaging permission at the app-level will no longer be respected. This change is in effect immediately to v3.3+ of the Graph API, and will apply to all lower versions on July 31, 2019.

Może dlatego nie działa?

to sie moze przydac mam nadz ze jakos sie to uda roziwazac jak nie to ja to sie tym zajme bo jestem ciekaw i sie niecierpliwie :) - fporzo 2019-05-21 21:32

Pozostało 580 znaków

2019-05-24 10:08

Rejestracja: 1 rok temu

Ostatnio: 2 miesiące temu

0

Zmieniłem krok 4 i zarejestrowałem webhook na moim localhost. Przyszły pierwsze requesty na mój serwer związane z rejestracją i z testami z panelu developer. Następnie próbowałem pisać wiadomości z mojego messengera na messengera mojej strony i tutaj mój localhost nie odbiera żadnych requestów. Jakieś pomysły?

Wreszcie się udało, co zrobiłem? Przede wszystkim usunąłem i założyłem stronę fb jeszcze raz w developers (nie wiem czy to miało swój udział w sukcesie). Generalnie toturial już napisałem wyżej, poprawka jest w punkcie 4 bo nie rejestrowałem już Webhook na Glitch tylko na swoim serwerze i punkt 6 PSID nie jest id profilu na fb, żeby je zdobyć, trzeba nasłuchiwać webhooka (czyli napisać jakąś wiadomość do strony) i na id które przyjdzie można wysyłać przez curl wiadomości. - Sebastian Starczewski 2019-07-11 21:16

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0