Ogłoszenie

Zwiń
No announcement yet.

Dziwny błąd wiadomości

Zwiń
X
 
  • Filtr
  • Czas
  • Pokaż
Wyczyść wszystko
new posts

  • Wazniak96
    odpowiedział(a)
    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);

    Zostaw komentarz:


  • Pezet
    odpowiedział(a)
    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's Avatar
    Guest replied
    Mamy 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();
    Opis 1:
    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();
    Opis 2:
    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();
    Opis 3:
    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);
    Opis 4:
    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();
    Opis 5:
    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:


  • Pezet
    odpowiedział(a)
    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:


  • Qrix
    odpowiedział(a)
    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:


  • Pezet
    odpowiedział(a)
    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:


  • Pezet
    odpowiedział(a)
    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:


  • ravas
    odpowiedział(a)
    tez blad tez juz dawno zglosilem.. Oczywiscie odpisali odsylajac mnie na forum. Jak dla mnie bez sensu.
    Ostatnio edytowany przez ravas; [ARG:4 UNDEFINED]. Powód: poprawka

    Zostaw komentarz:


  • Wazniak96
    odpowiedział(a)
    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:


  • Pezet
    odpowiedział(a)
    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:


  • Majcon
    odpowiedział(a)
    kodowanie znaków

    Zostaw komentarz:


  • Pezet
    odpowiedział(a)
    Wiem, ale na innych botach działa bezproblemowo i to mnie dziwi ;/

    - - - Updated - - -

    Jednak działa, dziękuje ślicznie

    Zostaw komentarz:


  • Qrix
    odpowiedział(a)
    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:


  • Pezet
    odpowiedział(a)
    Push.

    Zostaw komentarz:


  • Qrix
    odpowiedział(a)
    jak wysyłasz wiadomość? Metodą push czy reply?

    Zostaw komentarz:

Pracuję...
X