Ogłoszenie
Zwiń
No announcement yet.
Dziwny błąd wiadomości
Zwiń
X
-
Sęk w tym, że ja np. miałem podobny problem dawniej. Tylko, że do wysylania wiadomości używam zdefiniowanych przeze mnie metod do mojej biblioteki, czyli błąd dodania push a potem clear i reply możemy na 100 wykluczyc. I gdy rozdzieliłem metody ubsługi BotApi i metody używane przeze mnie do funkcjonowania skryptu i obróbki tekstu, pusta wiadomość ni z tąd ni z owąd się pojawiała. Gdy włączyłem echo, tzn dodałem także swoj numer do setRecipients pusta wiadomosc znikala. Męczyłem się z tym cały dzień. Gdy przeniosłem wszystkie obiekty imetody do jednej bibkioteki problem znikł. I gdzie popełniałem błąd? Nigdzie. Php-owskie echo, die itp mialem zablokowane przez erroor_reaporting(0);
-
Nie używam już metody push, gdyż faktycznie źle działa. Najgorsze było gdy setRecipients(np.: 20 odbiorcow-beze mnie) oraz metoda push(). przed użyłem nawet metody clear() i nic. Wczoraj pusta wiadomość znikła sama z siebie także nie wiem o co tu chodziło. I pusta wiadomość była tylko i wyłącznie na moim bocie, na innych nie było a były na tych samych skryptach. Od nowa napiszę skrypt, bo może gdzieś się coś "burzy". Dziękuje za pomoc wszystkim.
Zostaw komentarz:
-
Guest repliedMamy nadzieję, że trochę przykładów pomoże zrozumieć działanie platformy BotAPI GG oraz rozwiązać problem użytkownika Pezet.
Przykład 1:
Kod php:<?
require_once('MessageBuilder.php');
$M = new MessageBuilder();
$M->reply();
Numer gg:123 pisze wiadomość do bota.
Bot odpowiada pustą wiadomością do nadawcy czyli do numeru gg:123 ponieważ wiadomość jest zgodna z protokołem BotAPI (chociaż jest pusta).
Przykład 2:
Kod php:<?
require_once('MessageBuilder.php');
$M = new MessageBuilder();
$M->addText('TEST');
$M->reply();
Numer gg:456 pisze wiadomość do bota.
Bot odpowiada wiadomością o treści TEST do nadawcy czyli numeru gg:456
Przykład 3:
Kod php:<?
require_once('MessageBuilder.php');
$M = new MessageBuilder();
$M->addText('TEST')->setRecipients(array(123,456,789));
$M->reply();
Numer gg:123 pisze do bota wiadomość o treści: WYPISZ
Numer gg:123 dostanie systemową odpowiedź:
Subskrypcja wiadomości została wyłączona. Aby włączyć subskrypcję, napisz: ZAPISZ
Następnie numer gg:123 pisze do bota kolejną wiadomość.
Bot odpowiada wiadomością o treści TEST tylko do numeru gg:456 ponieważ:
a) w przypadku użycia metod setRecipients() i reply() numer gg:123 nie otrzyma wiadomości od tego bota ponieważ wypisał się z subskrypcji wiadomości,
b) numer gg:456 już wcześniej w Przykładzie 2 napisał do tego bota wiadomość więc bot może się do niego odezwać,
c) numer gg:789 nigdy nie napisał wiadomości do bota zatem bot nie może sie do niego odezwać.
Przykład 4:
Kod php:<?
require_once('MessageBuilder.php');
require_once('PushConnection.php');
$M = new MessageBuilder();
$P = new PushConnection(777, 'wojtek@gg.pl', 'hasło');
$M->addText('Dziękujemy za wiadomość.');
$M->reply();
$M->clear();
$M->addText('Wiadomość od użytkownika: '.$_GET['from'].' o treści: '.$HTTP_RAW_POST_DATA);
$M->setRecipients(array(123,456));
$P->push($M);
Numer gg:123 pisze do bota wiadomość o treści: HEJ
Bot odpowiada wiadomością o treści: "Dziękujemy za wiadomość" do numeru gg:123 ponieważ została użyta metoda reply() a nadawcą wiadomości jest numer gg:123
Bot odpowiada wiadomością o treści: "Wiadomość od użytkownika: 123 o treści: HEJ" do numeru gg:456
ponieważ numer gg:456 jest zdefiniowany w setRecipients(). Numer gg:456 nie dostanie wiadomości "Dziękujemy za wiadomość." ponieważ wcześniej została używa metoda clear().
Numer gg:123 nie dostanie wiadomości o treści: "Wiadomość od użytkownika: 123 o treści: HEJ" mimo że jest wpisany w setRecpipents() ponieważ wcześniej w Przykładzie 3 wypisał się z subskrypcji wiadomości od tego bota.
Przykład 5:
Kod php:<?
require_once('MessageBuilder.php');
require_once('PushConnection.php');
$M = new MessageBuilder();
$P = new PushConnection(777, 'wojtek@gg.pl', 'hasło');
$M->addText('TEST')->setRecipients(array(123,456));
$P->push($M);
$M->clear();
$M->reply();
Numer gg:123 pisze do bota wiadomość o treści: ZAPISZ
Numer gg:123 dostanie systemową odpowiedź: Subskrypcja wiadomości została włączona. Aby wyłączyć subskrypcję, napisz: WYPISZ
Następnie numer gg:123 pisze do bota kolejną wiadomość.
Bot odpowiada wiadomością o treści TEST do numeru gg:123 oraz do numeru gg:456
Bot odpowiada dodatkowo pustą wiadomością do numeru gg:123 ponieważ ten numer jest nadawcą wiadomości i jego dotyczy metoda reply() ale jeszcze przed jej użyciem jest wywołanie metody clear().
Wnioski:
Spoglądając w logi platformy BotAPI jesteśmy prawie pewni, że właśnie tak jak w Przykładzie 5 wygląda lub wyglądała sytuacja u użytkownika Pezet. Niepotrzebnie na końcu dodawany jest reply(). Zatem po napisaniu do bota wiadomości "/u", o której mowa w pierwszym poście w wątku bot odpowiada wiadomością za pomocą metody push() i zwraca w niej osoby zalogowane. Natomiast potem jest jeszcze prawdopodobnie metoda clear() oraz reply(), które wysyłają dodatkową pustą wiadomość.
Należy również pamiętać o tym, że w przypadku żądania typu PULL, w którym użyje się metod setRecipients() i reply() tablica odbiorców może mieć maksymalnie 250 numerów GG.
Należy również zwrócić uwagę na to, że używając metody setRecipients() oraz reply() w przypadku żądań typu PULL wiadomości nie dotrą do osób, które wypisały się z subskrypcji wiadomości za pomocą polecenia WYPISZ jak i do tych osób, które nigdy nie napisały żadnej wiadomości do bota.
Zostaw komentarz:
-
Skrypt wypluje biały znak wtedy gdy nie użyje reply właśnie, ale wiadomość do wszystkich na reply coś mi nie działa. Już próbowałem i nic.
Zostaw komentarz:
-
Drobna prośba, używajcie tagu [PHP] na forum do oznaczania kodu.
Pusta wiadomość pojawi się w momencie gdy wywołanie skryptu wypluje dowolny biały znak lub gdy skorzystasz z $m->reply();
Może spróbuj dać die(); zaraz po wysłaniu wiadomości pushem?
Zostaw komentarz:
-
A więc wysyłam wiadomość do wszystkich:
$m->addText($uzytkownik.$wiadomosc)->setRecipients($wszyscy);
$p->push($m);
i po wysłaniu wiadomości znów pusta wiadomość ;x . co zrobic? ;x
Zostaw komentarz:
-
Zgłosiłem bota łamiącego regulamin.. 0 reakcji.. Pisałem o tych pustych wiadomościach.. 0 reakcji.. Za co dostają pieniądze? Po jaką cholerę zatrudniają w Gadu Gadu takie osoby, które nie potrafią pomóc? Przesada.
Zostaw komentarz:
-
Majcon czytaj dokladnie. Napisal ze Pl znaków nie używa. A z tego co wiem. Kodowanie ma na utf-8 bez BOM.
Co do tej usterki dział botów powinien ją w końcu naprawic...
Zostaw komentarz:
-
Dobra ale to jest błąd ogólny z push.. Bo wysyłam jedną za pomocą push i w tym miejscu od razu jest ta pusta wiadomosc.
Zostaw komentarz:
-
Wiem, ale na innych botach działa bezproblemowo i to mnie dziwi ;/
- - - Updated - - -
Jednak działa, dziękuje ślicznie
Zostaw komentarz:
-
No właśnie, a powinieneś użyć reply. Generalnie jeśli piszesz do numeru i odpowiedź ma wrócić do Ciebie (czyli do nadawcy) to wykorzystuj reply.
Zostaw komentarz:
Zostaw komentarz: