Bot Telegramu do formularza HTML

fetch(remoteUrl, {
    method: 'POST',
    headers: {
        "Content-Type": "application/x-www-form-urlencoded"
    },
    body: data
}).then( result => result.json() ).then(...)

E-maile to tradycyjny sposób dostarczania formularzy HTML ze stron internetowych. Ale e-mail trafia ciernistą drogą do adresata, a czasem ginie w filtrach spamowych. Niedawno mój znajomy dowiedział się, że do 40% wiadomości z jego formularza nie dotarło do skrzynki odbiorczej.

Błyskawiczna wiadomość zazwyczaj przebiega bardzo prosto: nadawca → serwer → adresat. Dlatego, wraz z błyskawiczniścią, bardziej niezawodnie. Również wygodnie. Aby naprawić problem ze stracanymi e-mailami, razem z e-mailem botem wysyłamy wiadomość do czatu grupowego Telegramu.

Artykuł wyświetla również dostarczanie wiadomości osobistych.

Stwórz swojego bota

Znajdź w Telegramu @BotFather

Ojciec chrzestny botów

Wyszukiwanie daje więcej niż jeden wynik. Uważaj.

Wprowadź komendę /newbot na czacie z @BotFather i wykonaj proste instrukcję.

Po zakończeniu wyświetli się następujący komunikat:

Powiadomienie o pomyślnym utworzeniu bota

Teraz twój nowy bot jest gotowy do pracy. Zapisz token API widoczny na ekranie. Będziesz go potrzebować wkrótce. Później będziesz mógł to zrobić w ten sposób: wpisz /mybots w tym samym czacie z @BotFather i wybierz bota z listy, którą ci pokaże. Otrzymasz menu, które oferuje między innymi zdobycie tokena:

Menu bota

Czat ID

Aby Telegram wiedział, kto ma odebrać wiadomości, każdy czat ma unikalny identyfikator, czy to prywatny czat, czy grupa.

Żebyś uzyskać ID, zacznij rozmowę z botem. Następnie utwórz specjalny URI z tokenem i otwórz go w przeglądarce:

https://api.telegram.org/bot719952928:AAEeL6OL2wtBjNaOAv5S9PN3etRv_FiLsh0/getUpdates

Wklej własny token po https://api.telegram.org/bot, a następnie /getUpdates.

W odpowiedzi dostaniesz JSON, w którym musisz znaleźć chat → id. Oto przykład:

JSON із chat id

Aby uzyskać ID grupy, wydaje się najprostszym ten sposób: otwórz Menu przepełnieniaInformacje o grupiezarządzaj grupą. Tą drogą:

керування групою

Teraz otwórz ten link z zaproszeniem w przeglądarce:

link-zaproszeniem

Nie otwieraj go w aplikacji (JOIN GROUP). Zamiast tego otwórz w przeglądarce (OPEN IN WEB):

Відкрийте у браузері

Zostaniesz przekierowany na podobny adres:

https://web.telegram.org/#/im?p=g246586972

Symbole po znaku = są identyfikatorem grupy. Zamień tylko literę g na symbol - (minus). Tak więc w naszym przypadku identyfikator grupy to -246586972.

Teraz możesz sprawdzić, jak bot wysyła wiadomości. Skomponuj takie URI a otwórz je w przeglądarce:

→ wyślij wiadomość do grupy:
https://api.telegram.org/bot719952928:AAEeL6OL2wtBjNaOAv5S9PN3etRv_FiLsh0/sendMessage?chat_id=-246586972&text=Hi%20buddy
→ wyślij wiadomośc prywatnie:
https://api.telegram.org/bot719952928:AAEeL6OL2wtBjNaOAv5S9PN3etRv_FiLsh0/sendMessage?chat_id=97804534&text=Hi%20buddy

Możesz również przetestować swojego bota za pomocą formularza na końcu postu.

Jeśli nie otrzymasz wiadomości, upewnij się, że zrobiłeś wszystko poprawnie. W chwili pisania tego wszystko działa jak należy.

Formularz HTML

Pomijam HTML. Nie sądzę, żeby ktokolwiek potrzebował tu wskazuwek. Wyświetlię tylko API nowego interfejsu fetch do wysyłania formularzy:

fetch(remoteUrl, {
    method: 'POST',
    cache: 'no-cache',
    headers: {
        "Content-Type": "application/x-www-form-urlencoded"
    },
    body: data
}).then( result => result.json() ).then( console.log(result) )

PHP procesor

Zasadniczo po prostu tworzymy odpowiedni URI do API Telegramu. Zatem rzeczy są całkiem proste. Oto przykład:

<?php
function sendMessage($token, $chatid, $message) {
    $url = "https://api.telegram.org/bot{$token}/sendMessage?chat_id={$chatid}&text=";
    $url .= urlencode($message);
    $ch = curl_init();
    $options = array(
        CURLOPT_URL => $url,
        CURLOPT_RETURNTRANSFER => true
    );
    curl_setopt_array($ch, $options);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}
$token = 'xxxxxxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$chatid = 'xxxxxxxxxxx';
$message = $_POST['message'] || 'lub twój sposób odebrania formularza';
$response;
// teraz wykonaj funkcję:
$result = json_decode(sendMessage($token, $chatid, $message));
if(isset($result->ok) && $result->ok) {
    $response['body'] = 'Wiadomość została wysłana';
} elseif (!$result->ok) {
    $response['error'] = true;
    $response['body'] = $result->error_code . ': ' . $result->description;
} else {
    $response['error'] = true;
    $response['body'] = 'Jakiś błąd. Przepraszam :(';
};
printf(json_encode($response));

Przetestuj swojego bota

DOTKNIJ,
aby przetestować swojego bota

Ciąg dalszy nastąpi

Viber i Messenger są następne.